我正在使用一個引擎,它是一種子應用程序的引擎,在我的現有應用程序中增加了一些更多的路由。rails:autoload文件在引擎的lib目錄中
這個概念非常強大,感謝鐵軌。
但我面臨這個奇怪的挑戰,自動加載我的引擎lib目錄中的文件更改在開發模式。每次我在引擎的應用程序目錄中進行更改時,無論它是模型還是控制器,它都可以完美地工作,但不會更改lib目錄get下的任何文件。有什麼辦法可以做到這一點?謝謝你的幫助。
我正在使用一個引擎,它是一種子應用程序的引擎,在我的現有應用程序中增加了一些更多的路由。rails:autoload文件在引擎的lib目錄中
這個概念非常強大,感謝鐵軌。
但我面臨這個奇怪的挑戰,自動加載我的引擎lib目錄中的文件更改在開發模式。每次我在引擎的應用程序目錄中進行更改時,無論它是模型還是控制器,它都可以完美地工作,但不會更改lib目錄get下的任何文件。有什麼辦法可以做到這一點?謝謝你的幫助。
將下面的代碼在你的config/application.rb
config.eager_load_paths += ["#{Rails.root}/lib"]
如果你想這只是在開發模式下使用下面的
config.eager_load_paths += ["#{Rails.root}/lib"] if Rails.env.development?
根據Rails::Engine docs你可以喜歡 -
class MyEngine < Rails::Engine
# Add a load path for this specific Engine
config.autoload_paths << File.expand_path("../lib/some/path", __FILE__)
initializer "my_engine.add_middleware" do |app|
app.middleware.use MyEngine::Middleware
end
end
自動加載路徑
如果你不想自動加載,你可以直接要求t他在類文件與要求陳述書
require 'my_engine/my_object'
class MyModel < AR::Base
...
end
這會工作,因爲你的引擎在你的應用程序已經加載,這樣你就可以訪問它裏面庫。
問題是關於'rails引擎'沒有完整的'rails應用程序'。 – Swaps