F:\app\a.rb
require 'rubygems'
require 'active_support'
module A
extend ActiveSupport::Autoload
autoload :B,'F:\app\test\b'
end
F:\app\a\b.rb
module A
class B
end
end
在IRB中:
require 'f:\app\a'
A::B
=> NameError:未初始化的常量 A::B
我哪里错了?
最佳答案
声明自动加载
时,指定的路径必须相对于$LOAD_PATH
或$:
(简写别名)中的路径相同的。由于 autoload
内置于 Ruby 中,因此不需要 ActiveSupport。 Autoload 库实际上做了很多与此无关的其他事情,基本上使 autoload
更智能,但功能仍然相似。
我认为您不能像这里一样使用绝对路径。
通常您会看到这些定义为:
autoload(:B, 'a/b')
这是因为您在某处定义了加载路径:
$LOAD_PATH << 'F:\app'
关于ruby-on-rails - 如何在active_support中使用autoload方法,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/8138355/