[Ironruby-core] Case of drive letter

Shri Borde Shri.Borde at microsoft.com
Tue Apr 7 14:35:54 EDT 2009


Using MRI on Windows, Dir.pwd can use either lower-case or upper-case for the drive letter ("C:/" or "c:/") depending on the Command Prompt it is run from. However, __FILE__ always uses lower-case drive letter. This can cause problems when comparing Dir.pwd and __FILE__. For eg, Pathname#relative_path_from<http://ruby-doc.org/core/classes/Pathname.html#M001745> raises an ArgumentError if the arguments use different cases for the drive letter.

C:\Users\sborde> cat c:\bugs\rb1.rb
require 'pathname'
Pathname.new(Dir.pwd).relative_path_from(Pathname.new(__FILE__))

C:\Users\sborde> c:\Ruby\bin\ruby.exe c:\bugs\rb1.rb
c:/Ruby/lib/ruby/1.8/pathname.rb:709:in `relative_path_from': different prefix:
"C:/" and "c:/bugs/rb1.rb" (ArgumentError)
        from c:/bugs/rb1.rb:2

I did not find any good documentation on which case is used by Command Prompt, but https://lists.ubuntu.com/archives/bazaar/2006q2/013921.html refers to the issue. I can create Command Prompts with either case by creating a shortcut on the desktop, and specifying a "Start in" folder property for the shortcut. Command Prompt will use the case specified for the "Start in" folder.

Does anyone have experience dealing with this issue? What is the recommended solution? I would rather not check the case of the drive letter manually. I looked for APIs which would convert the drive letter to lower-case, but could not find anything.

Thanks,
Shri

-------------- next part --------------
An HTML attachment was scrubbed...
URL: <http://rubyforge.org/pipermail/ironruby-core/attachments/20090407/aa01b51a/attachment.html>


More information about the Ironruby-core mailing list