Feature #11140
closed
Allow rubygems' `require` to handle `autoload` calls
Added by tenderlovemaking (Aaron Patterson) over 9 years ago.
Updated over 5 years ago.
Description
Right now, rubygems can't handle calls to autoload
because autoload
will directly call rb_require_safe
rather than sending to Kernel::require
.
For example:
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 autoload
.
I've attached a patch that makes the change.
Files
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.
- Description updated (diff)
It sounds reasonable as -r
option also calls Kernel#require
method now.
Accepted. Could you apply the patch, Aaron?
Matz.
- Status changed from Open to Closed
Applied in changeset r50494.
-
variable.c: Change autoload to call require
through Ruby rather
than directly calling rb_require_safe
. This allows things like
RubyGems to intercept file loading done though autoload
.
[Feature #11140]
-
test/ruby/test_autoload.rb: Test for change.
- Status changed from Closed to Assigned
- Assignee set to tenderlovemaking (Aaron Patterson)
Aaron, this commit breaks some tests on ruby/test_require.rb
.
Check RubyCI.
Usaku NAKAMURA wrote:
Aaron, this commit breaks some tests on ruby/test_require.rb
.
Check RubyCI.
@usa (Usaku NAKAMURA) I'm looking in to it. It seems to be a bug with looking up activated features during autoload. :(
Is this still failing? I don't see it on RubyCI.org
- Status changed from Assigned to Closed
This patch was already applied.
Also available in: Atom
PDF
Like0
Like0Like0Like0Like0Like0Like0Like0Like0Like0Like0Like0