From: Intransition on


On May 21, 9:50 am, v4 forums <v4for...(a)gmail.com> wrote:
> Hi Team,
>
> I am new to ruby and the best way I found to learn ruby is to walk-through
> some of the existing code and try understanding them how it is done.
>
> Recently I came across this following line of code,
>
> test(?e, File.join(dir, file))
>
> Initially, was finding difficult to understand what'z this test is actually
> trying to perform on the file and eventually managed to figure out that its
> just checking whether the file exists or not. []
> I also realized that '?e' is a command to the test method to check if the
> file exists. I also see that, in ruby, there is a much understandable and
> straight-forward way to achieve the same.
>
> File.exist?
>
> Just curious to know what is the advantage of using the former 'Kernal'
> method than using the later 'File' api method.

I believe #test stems for unix command line, and thus appeals to that
flavor of developer. It is a much more concise notation the
File.exist? or File.__fill-in-the-blank__. And though I like it's
brevity it has two aweful shortcomings 1) it is rather archaic and
cryptic and 2) it's bound to get clobbered by test frameworks!