Windows directories not recognized by ruby?

K

Kalman H.

What's wrong with this code?

C:\>mkdir test_ruby

C:\>irb
irb(main):001:0> File.directory? "c:"
=> true
irb(main):002:0> File.directory? "c:\test_ruby"
=> false
irb(main):003:0>

Thanks for any ideas in advance,

-Kalman
 
N

Nikolai Weibull

irb(main):002:0> File.directory? "c:\test_ruby"

You may want to escape your reverse solidus (backslash), or, better
yet, use a solidus (slash, virgule) instead.
 
P

paul h

What's wrong with this code?

C:\>mkdir test_ruby

C:\>irb
irb(main):001:0> File.directory? "c:"
=> true
irb(main):002:0> File.directory? "c:\test_ruby"
=> false
irb(main):003:0>

Thanks for any ideas in advance,

-Kalman

It's the way Ruby handles your strings. You are using double quotes,
so you need to escape the backslash. If you use single quotes, you can
use the single backslash. Look at the following:

irb(main):001:0> File.directory? "C:"
=> true
irb(main):002:0> File.directory? "C:\Users"
=> false
irb(main):003:0> File.directory? "C:\\Users"
=> true
irb(main):004:0> File.directory? 'C:\Users'
=> true

HTH

Paul
 
P

Phillip Gawlowski

What's wrong with this code?

C:\>mkdir test_ruby

C:\>irb
irb(main):001:0> File.directory? "c:"
=> true
irb(main):002:0> File.directory? "c:\test_ruby"
=> false
irb(main):003:0>

The \ is an escape character, so you are actually checking for "c:
est_ruby" (\t is is the escape sequence for a tab character)

Either try

File.directory? "c:\\test_ruby"

or

File.directory? "c:/test_ruby"

Windows NT *at least* since Vista, but probably XP already, and maybe
even the original NT 3.51, support the forward slash in the command
line.

--
Phillip Gawlowski

Though the folk I have met,
(Ah, how soon!) they forget
When I've moved on to some other place,
There may be one or two,
When I've played and passed through,
Who'll remember my song or my face.
 
R

Regis d'Aubarede

Windows NT *at least* since Vista, but probably XP already, and maybe
even the original NT 3.51, support the forward slash in the command
line.

ForwardSlash works since MSDOS !

From wikipedia "Backslash" :

"The Windows API can accept either the backslash or slash to separate
directory and file components of a path, but the Microsoft convention is
to use a backslash, and APIs that return paths put backslash in.[7]
MS-DOS 2.0 copied the hierarchical file system from Unix and thus used
the forward slash, but (possibly on the insistence of IBM) added the
backslash to allow paths to be typed into the command shell while
retaining compatibility with MS-DOS 1.0 and CP/M where the slash was the
command-line option indicator (i.e. as in typing "dir/w" to give the
"wide" option to the "dir" command).[8] Although the command shell was
the only part of MS-DOS that required this, the use of backslash in
filenames was propagated to most other parts of the user interface"
 
K

koulikoff

What's wrong with this code?

C:\>mkdir test_ruby

C:\>irb
irb(main):001:0> File.directory? "c:"
=> true
irb(main):002:0> File.directory? "c:\test_ruby"
=> false
irb(main):003:0>

Thanks for any ideas in advance,

-Kalman

You should use File.directory? File.join(%w[c: test_ruby])
 

Ask a Question

Want to reply to this thread or ask your own question?

You'll need to choose a username for the site, which only take a couple of moments. After that, you can post your question and our members will help you out.

Ask a Question

Similar Threads


Members online

No members online now.

Forum statistics

Threads
473,968
Messages
2,570,150
Members
46,697
Latest member
AugustNabo

Latest Threads

Top