2
我正在開發一個gem /引擎。我這樣做的方式是通過將其捆綁在來自源代碼的測試RailsApp中:文件更改後My :: Engine中未初始化的常量
# Gemfile
gem 'my-engine', path: '../local/path/to/gem'
此工作正常。
但是,在我更改我的寶石中的文件(例如添加空格或中斷)後,引擎被卸載。引起以下錯誤:
uninitialized constant My::Engine
此錯誤是由不以My::Engine
第一次調用的文件拋出。 (我需要調用它來獲取根目錄:My::Engine.root
)如果我刪除該行,則不會拋出任何錯誤,但僅顯示一個空白頁面,這是因爲我的所有SQL更改並且沒有內容從數據庫加載。我想,這是因爲在lib
目錄中的文件被卸載,因爲這些文件我動態創建活動的記錄模式..
我已經簽出了autoload_paths
和watchable_dirs
:
# engine.rb
module My
class Engine < Rails::Engine
engine_name 'my-engine'
initializer "my-engine.load_config" do |app|
app.config.autoload_paths += %W(#{Engine.root}/lib)
app.config.watchable_dirs["#{Engine.root}/lib"] = [:rb]
end
end
end
我不知道我是否以正確的方式實施這些方案,但他們似乎無法像我使用它們一樣解決我的問題。
我很想看到你得到的答案。我在開發引擎時遇到同樣的問題。我的'解決方案'是在我的main_app(主導軌應用程序,而不是引擎)的'application.rb'中執行'require'my''。這對我有用,但似乎不應該是必要的。 –
感謝您的提示,我現在會嘗試..但是,確實有更好的方法.. –