2016-05-22 26 views
1

我正在使用一個引擎,它是一種子應用程序的引擎,在我的現有應用程序中增加了一些更多的路由。rails:autoload文件在引擎的lib目錄中

這個概念非常強大,感謝鐵軌。

但我面臨這個奇怪的挑戰,自動加載我的引擎lib目錄中的文件更改在開發模式。每次我在引擎的應用程序目錄中進行更改時,無論它是模型還是控制器,它都可以完美地工作,但不會更改lib目錄get下的任何文件。有什麼辦法可以做到這一點?謝謝你的幫助。

回答

-1

將下面的代碼在你的config/application.rb

config.eager_load_paths += ["#{Rails.root}/lib"] 

如果你想這只是在開發模式下使用下面的

config.eager_load_paths += ["#{Rails.root}/lib"] if Rails.env.development? 
+0

問題是關於'rails引擎'沒有完整的'rails應用程序'。 – Swaps

0

根據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 

這會工作,因爲你的引擎在你的應用程序已經加載,這樣你就可以訪問它裏面庫。