我有一個必須在resource_controller之前加載的插件。原因是Resourcecontroller試圖加載ApplicationController,它取決於所述插件(並且如果插件的init.rb尚未加載,將無法加載)。如何在Rails中控制gems vs plugins加載順序
問題是ResourceController來自gem而不是插件。
有沒有辦法加載插件之前的寶石(從environment.rb的「config.gem ...」)?
我有一個必須在resource_controller之前加載的插件。原因是Resourcecontroller試圖加載ApplicationController,它取決於所述插件(並且如果插件的init.rb尚未加載,將無法加載)。如何在Rails中控制gems vs plugins加載順序
問題是ResourceController來自gem而不是插件。
有沒有辦法加載插件之前的寶石(從environment.rb的「config.gem ...」)?
如果您完全依賴config.gem
來加載它們,那麼在gem之前沒有加載插件的方法,但這並不意味着您無法將resource_controller gem加載到您自己的手中。
作爲一個非常殘酷的解決方案,您可以刪除相關的config.gem
行,然後明確地「require
」它在environment.rb
的底部。
在Initializer.rb代碼快速瀏覽顯示:
load_gems
load_plugins
# pick up any gems that plugins depend on
add_gem_load_paths
load_gems
check_gem_dependencies
如果我理解正確的話,寶石總是插件,然後......然後一些寶石的插件需要。
爲什麼不使用resource_controller作爲插件呢? 只是不使用「config.gem ...」並將其放入plugins目錄中。
對於environment.rb中rails2.3x設置你的寶石LIB =>假,然後需要在after_initialize塊
config.gem 'some_gem', :lib => false
config.after_initialize do
require 'some_gem'
end
這會做到這一點的寶石。