F:\应用\ a.rb
require 'rubygems'
require 'active_support'
module A
extend ActiveSupport::Autoload
autoload :B,'F:\app\test\b'
end
F:\应用\一个\ b.rb
module A
class B
end
end
在irb中:
require 'f:\app\a'
A::B
=> NameError:未初始化的常量A :: B
哪个地方我错了?
答案 0 :(得分:2)
声明autoload
时,指定的路径必须相对于$LOAD_PATH
或$:
中的路径,即相同的简写别名。由于autoload
内置于Ruby,因此不需要ActiveSupport。 Autoload库实际上做了许多其他与此无关的事情,基本上使autoload
更智能但功能相似。
我认为你不能像在这里一样使用绝对路径。
通常你会看到这些定义为:
autoload(:B, 'a/b')
这是因为您已经定义了加载路径:
$LOAD_PATH << 'F:\app'
答案 1 :(得分:0)
尝试使用加载而不是自动加载。