[英]Rails mistakenly nesting called namespace into caller namespace
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
我們正在使用的金色lib加載錘
config.autoload_paths += Dir["#{config.root}/lib/"]
config.autoload_paths += Dir["#{config.root}/lib/**/"]
具有所有光榮的缺點。
但這不應該意味着它錯誤地認為Foo
必須是Bar
一部分?
問題是它不夠
module Foo
class Lofatook
end
end
在lib/foo/lofatook.rb
。 您還必須具有lib/foo.rb
module Foo
end
感謝@ma_il,使用::Foo::Lofatook
引發了uninitialized constant Foo
的錯誤,該錯誤為我指明了正確的方向
聲明:本站的技術帖子網頁,遵循CC BY-SA 4.0協議,如果您需要轉載,請注明本站網址或者原文地址。任何問題請咨詢:yoyou2525@163.com.