- 無法在 Rails 應用程序的類中包含模塊

  显示原文与译文双语对照的内容
137 3

我有一個包含模塊( ServerConstants )的class(Server)

class Server
 include ServerConstants

兩個文件都位於 lib/server文件夾內

出現錯誤:無法自動載入常量 Server::ServerConstants

  • 當我使用時需要明確的效果。

我閱讀了 Rails 自動載入功能,並想知道為什麼它不能 picking 。我的application.rb 文件似乎包括自動載入路徑。

config.autoload_paths += Dir["#{config.root}/lib/**/"]
config.autoload_paths += Dir["#{config.root}/app/models/**/"]

我丟失了什麼我們正在使用 Rails 4.2.8?

时间:原作者:0个回答

80 1

最後我發現了一個答案,即使我不確定它為什麼工作。

而不是定義模塊

module ServerConstants

我使用

module Server::ServerConstants

它工作起來 !

另一個發現:

只有當你的文件夾和類名相同時才出現這裡問題。in伺服器文件夾包含伺服器類和ServerConstants模塊。當我把伺服器名重構為Server_X時,問題就消失了。

原作者:
90 0

Include語句直接查找沒有作用域或者與名稱衝突的模塊。但是當你將它放在 lib/server/目錄中時,它可以以通過告訴 include 語句查找 ServerConstants 模塊。這就是為什麼如果你使用 include Server::ServerConstants,現在你已經經提到了要查看的文件夾和現在的範圍。

原作者:
...