Allow rubygems' `require` to handle `autoload` calls
Right now, rubygems can't handle calls to
autoload will directly call
rb_require_safe rather than sending to
class A autoload :B, 'a/b' # this is in a different Gem end A::B
The above code won't work because 'a/b' is in a different gem. I'd like to give rubygems the opportunity to handle requires made through
I've attached a patch that makes the change.
Updated by jeremyevans0 (Jeremy Evans) over 7 years ago
Considering #5653, should we be making any changes to autoload to make it easier to use, if the intention is to remove it in ruby 3.0? I think before any improvements to autoload should be considered, we first need a firm decision from Matz on autoload's future in ruby.
If Matz decides that autoload will stay in ruby, I'm definitely in favor of autoload calling Kernel::require. But if autoload will be removed in ruby 3.0, I don't think we should make changes like this that would make autoload easier to use. That encourages people to use autoload, which will make updating to ruby 3.0 more painful when the time comes.
Updated by Anonymous over 7 years ago
- Status changed from Open to Closed
Applied in changeset r50494.
variable.c: Change autoload to call
requirethrough Ruby rather
than directly calling
rb_require_safe. This allows things like
RubyGems to intercept file loading done though
test/ruby/test_autoload.rb: Test for change.
Updated by tenderlovemaking (Aaron Patterson) about 7 years ago
Updated by nobu (Nobuyoshi Nakada) about 7 years ago
Since this commit
TestAutoload#test_threaded_accessing_constant continuously fails on some Linux distributions.