2009-09-08 78 views
3

我有一個必須在resource_controller之前加載的插件。原因是Resourcecontroller試圖加載ApplicationController,它取決於所述插件(並且如果插件的init.rb尚未加載,將無法加載)。如何在Rails中控制gems vs plugins加載順序

問題是ResourceController來自gem而不是插件。

有沒有辦法加載插件之前的寶石(從environment.rb的「config.gem ...」)?

回答

2

如果您完全依賴config.gem來加載它們,那麼在gem之前沒有加載插件的方法,但這並不意味着您無法將resource_controller gem加載到您自己的手中。

作爲一個非常殘酷的解決方案,您可以刪除相關的config.gem行,然後明確地「require」它在environment.rb的底部。

0

在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目錄中。

1

對於environment.rb中rails2.3x設置你的寶石LIB =>假,然後需要在after_initialize塊

config.gem 'some_gem', :lib => false 
config.after_initialize do 
    require 'some_gem' 
end 

這會做到這一點的寶石。