Bug #1366


Pathname#relative_path_from should handle the scenario where the argument uses a different case for the Windows drive letter

Added by shri (Shri Borde) about 12 years ago. Updated almost 10 years ago.

Target version:
ruby -v:


On Windows, the case of the drive letter can be either upper case or lower case (eg, "C:" or "c:") on the same machine at the same time in different Command Prompt Windows (see below for details). Dir.pwd will return 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 an ArgumentError when comparing Dir.pwd and FILE using Pathname#relative_path_from. This happens with version 1.9.1p0 as well. Pathname#relative_path_from should deal with the case where the case of the argument is different.

Here is the result when running from a Command Prompt which is using capital case for the drive letter as can be seen from the prompt "C:\Users\sborde".

C:\Users\sborde> cat c:\bugs\rb1.rb
require 'pathname'

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

Here are the steps to get two Command Prompts with different cases for the drive letter:

  1. Create two shortcuts on the Desktop pointing to "c:\Windows\system32\cmd.exe"
  2. Right-click to change the properties.
  3. For one of the shortcuts, set the "Start in" folder to "C:\" (upper case). For the other one, set it to "c:\" (lower case).
  4. Double the click the shortcuts
  5. Observe that the prompt in the first one is "C:>" (upper case), and "c:\" (lower case) in the second one.
  6. Run test.rb shown above from both Command Prompts. An ArgumentError will be thrown from the first Command Prompt with the upper case prompt. =end
Actions #1

Updated by nobu (Nobuyoshi Nakada) about 12 years ago

  • Category set to lib
  • Status changed from Open to Assigned
  • Assignee set to yugui (Yuki Sonoda)
  • Target version set to 1.9.1

Already fixed in r23093, and would be backported by the next patch release.

Actions #2

Updated by yugui (Yuki Sonoda) almost 12 years ago

  • Status changed from Assigned to Closed




Also available in: Atom PDF