Bar
调用Foo
,Rails认为Foo
必须位于Bar
命名空间
module Foo
class Lofatook
def oops
puts 'buckets of fun'
end
end
end
module Bar
class Thedoor
def theyhaveacavetroll
Foo::Lofatook.new.oops
end
end
end
Bar::Thedoor.new.theyhaveacavetroll
这可以作为原始红宝石使用。但是当我将Foo
放在lib/foo/lofatook.rb
和Bar
app/models/bar/thedoor.rb
时,会抛出此错误:
uninitialized constant Bar::Foo
我们正在使用
的金色装载锤config.autoload_paths += Dir["#{config.root}/lib/"]
config.autoload_paths += Dir["#{config.root}/lib/**/"]
带来所有光荣的弊端。
但这并不意味着它错误地认为Foo
必须属于Bar
的一部分?
答案 0 :(得分:1)
问题还不够
module Foo
class Lofatook
end
end
lib/foo/lofatook.rb
中的。您还必须拥有lib/foo.rb
module Foo
end
感谢@ma_il,使用::Foo::Lofatook
引发了错误uninitialized constant Foo
,这使我指向正确的方向