簡體   English   中英

Rails錯誤地將調用名稱空間嵌套到調用者名稱空間中

[英]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.

 
粵ICP備18138465號  © 2020-2024 STACKOOM.COM