1
0
Fork 0
mirror of https://github.com/ruby/ruby.git synced 2022-11-09 12:17:21 -05:00

* 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.

git-svn-id: svn+ssh://ci.ruby-lang.org/ruby/trunk@50494 b2dd03c8-39d4-4d8f-98ff-823fe69b080e
This commit is contained in:
tenderlove 2015-05-14 21:57:33 +00:00
parent 1709458a20
commit cd465d552c
3 changed files with 35 additions and 1 deletions

View file

@ -161,6 +161,31 @@ p Foo::Bar
}
end
def test_require_implemented_in_ruby_is_called
Kernel.module_eval do; alias :old_require :require; end
called_with = []
Kernel.send :define_method, :require do |path|
called_with << path
old_require path
end
Tempfile.create(['autoload', '.rb']) {|file|
file.puts 'class AutoloadTest; end'
file.close
add_autoload(file.path)
begin
assert(Object::AutoloadTest)
ensure
remove_autoload_constant
end
assert_equal [file.path], called_with
}
ensure
Kernel.module_eval do; alias :require :old_require; undef :old_require; end
end
def add_autoload(path)
(@autoload_paths ||= []) << path
eval <<-END