2012-06-04 40 views
1

這是在Redmine 1.3中。Redmine插件需要先修補ApplicationController?

我正在修補ApplicationController以在所有控制器中添加行爲(實際上只是包含助手)。問題是在我的ApplicationController補丁之前修補的任何控制器都沒有得到新的行爲。

這工作得很好:

Dispatcher.to_prepare :my_plugin do 
    require_dependency 'my_plugin/application_controller_patch' 
    require_dependency 'my_plugin/welcome_controller_patch' 
end 

但與此相關,WelcomeController當我打電話,我添加輔助引發錯誤。

Dispatcher.to_prepare :my_plugin do 
    require_dependency 'my_plugin/welcome_controller_patch' 
    require_dependency 'my_plugin/application_controller_patch' 
end 

這是很容易在一個插件中修復,但我遇到的問題是,另一個插件補丁控制器和它隨後失去我的修補程序。更糟的是,這隻發生在生產中 - 在開發中,我認爲插件訂單是不同的,因爲它工作正常。我沒有看到改變插件順序的方法。

我敢肯定我的補丁本身是好的,但萬一它看起來像這樣:

require_dependency 'application_controller' 

module MyPlugin::ApplicationControllerPatch 

    def self.included(base) # :nodoc: 
    base.extend(ClassMethods) 
    base.send(:include, InstanceMethods) 
    base.class_eval do 
     unloadable 
     helper :search 
     include SearchHelper 
    end 
    end 

    module ClassMethods  
    end 

    module InstanceMethods 
    end # of InstanceMethods 
end # of module 

ApplicationController.send(:include, MyPlugin::ApplicationControllerPatch) 

回答

1

當然,我看着辦吧,一旦我已經走了,問的問題。

在配置/ additional_environment.rb,線

config.plugins = [ :my_plugin, :all ] 

確保我的插件首先被加載。這似乎已經解決了這個問題。