The case issue is tracked by the following MRI bug  - 
http://redmine.ruby-lang.org/issues/show/1266. It will be fixed in some future 
version of MRI.

From: ironruby-core-boun...@rubyforge.org 
[mailto:ironruby-core-boun...@rubyforge.org] On Behalf Of Jimmy Schementi
Sent: Tuesday, April 21, 2009 10:59 AM
To: ironruby-core@rubyforge.org
Subject: Re: [Ironruby-core] Case of drive letter

(Responding late ... hopefully this is still useful)

>>> __FILE__ always uses lower-case drive letter

__FILE__ is just the value you gave to require/load. __FILE__ and $PROGRAM_NAME 
only get munged with when running ruby.exe, but it doesn't touch casing, only 
changes all directory separators to '/'.

# c:\dev\foo.rb
module Foo
  def self.file
    __FILE__
  end
end
puts Foo.file

c:\dev\ironruby>irb
irb(main):001:0> load 'C:\dev\foo.rb'
"C:\\dev\\foo.rb"
=> true

c:\dev\ironruby>irb
irb(main):001:0> load 'c:\dev\foo.rb'
"c:\\dev\\foo.rb"
=> true

c:\dev\ironruby>ruby c:\dev\foo.rb
c:/dev/foo.rb

c:\dev\ironruby>ruby C:\dev\foo.rb
C:/dev/foo.rb

My recent __FILE__ changes made IronRuby work identically to MRI, but that only 
changes the path separator, does nothing with casing. IronRuby behaves the same 
as this.

~js

From: ironruby-core-boun...@rubyforge.org 
[mailto:ironruby-core-boun...@rubyforge.org] On Behalf Of Shri Borde
Sent: Tuesday, April 07, 2009 11:36 AM
To: ironruby-core@rubyforge.org
Subject: [Ironruby-core] Case of drive letter

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

_______________________________________________
Ironruby-core mailing list
Ironruby-core@rubyforge.org
http://rubyforge.org/mailman/listinfo/ironruby-core

Reply via email to