From: "ccmywish (Aoran Zeng)" Date: 2022-04-17T15:20:35+00:00 Subject: [ruby-core:108271] [Ruby master Bug#18737] Windows 'require' is case independent Issue #18737 has been reported by ccmywish (Aoran Zeng). ---------------------------------------- Bug #18737: Windows 'require' is case independent https://bugs.ruby-lang.org/issues/18737 * Author: ccmywish (Aoran Zeng) * Status: Open * Priority: Normal * ruby -v: ruby 3.1.0p0 (2021-12-25 revision fb4df44d16) [x64-mingw-ucrt] * Backport: 2.7: UNKNOWN, 3.0: UNKNOWN, 3.1: UNKNOWN ---------------------------------------- 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. ```ruby 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, ```ruby # 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? -- https://bugs.ruby-lang.org/ Unsubscribe: