Project

General

Profile

Actions

Bug #18737

open

Windows 'require' is case independent

Added by ccmywish (Aoran Zeng) 8 months ago. Updated 8 months ago.

Status:
Open
Priority:
Normal
Assignee:
-
Target version:
-
ruby -v:
ruby 3.1.0p0 (2021-12-25 revision fb4df44d16) [x64-mingw-ucrt]
[ruby-core:108271]

Description

On Windows, require may cause one file to load in more than once if user accidentally spells the wrong name of a gem.

I think this is because that Windows file systems are case-insensitive.

See the code below.

require 'yard'
# => true

require 'Yard'
# => true
# => warning: already initialized constant YARD::ROOT....
# => warning: already initialized constant ...
# => warning: already initialized constant ...

These warnings may notify the user something went wrong. But what if a gem loaded twice doesn't cause constant redefined, instead, it did something related to persistence? The user may get weird and unexpected behaviours without knowing this. It's hard to find and debug.

And some gem's name is not always in lowercase, this will make user on Windows more likely to go wrong,

For example,

# The standard gem 'English' s first letter is in upper case

require 'English'
# => true 

I think this issue may have come under observation before, but may be considered unnecessary to fix?

Updated by jeremyevans0 (Jeremy Evans) 8 months ago

I'm fairly sure this is expected behavior when Ruby is used on a case insensitive file system. However, it would be good if more experienced committer could confirm that.

Actions

Also available in: Atom PDF

Like0
Like0