Я тоже не могу воспроизвести это. Но возможно, что некоторые драгоценные камни переопределяют Kernel#require
:
module Kernel
alias_method :old_require, :require
def require(str)
old_modules = []
ObjectSpace.each_object(Module) {|m| old_modules << m }
old_require(str)
new_modules = []
ObjectSpace.each_object(Module) {|m| new_modules << m unless old_modules.include?(m) }
new_modules
end
end
и при попытке потребовать
module DataProviders
module Cached
class Foo
end
end
class Foo
end
end
вы получите
irb(main):012:0> require 'data_provider'
=> [DataProviders::Cached::Foo, DataProviders::Foo, DataProviders::Cached, DataProviders]