Windows directories not recognized by ruby?

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

···

--
Posted via http://www.ruby-forum.com/.

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

···

On Thu, Apr 7, 2011 at 16:03, Kalman H. <kalmanh@gmail.com> wrote:

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

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.

···

On Thu, Apr 7, 2011 at 4:03 PM, Kalman H. <kalmanh@gmail.com> wrote:

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>

--
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.

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

···

On Apr 7, 3:03 pm, "Kalman H." <kalm...@gmail.com> wrote:

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

--
Posted viahttp://www.ruby-forum.com/.

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

···

On Apr 7, 6:03 pm, "Kalman H." <kalm...@gmail.com> wrote:

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

--
Posted viahttp://www.ruby-forum.com/.

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"

···

--
Posted via http://www.ruby-forum.com/\.