RedmineでApplicationHelperの既存のメソッドを書き換えるには?
やりたいこと
Redmineのプラグインを作成しています.
RedmineのApplicationHelperにはlink_to_projectというメソッドがあり、これを書き換えたいのですが、うまくいきません.
環境
- Redmine 3.0.1
- Rails 4.2.1
- Ruby 2.1.5p273
やったこと
http://www.redmine.org/projects/redmine/wiki/Plugin_Internalsを参考に
lib/action_helper_patch.rb
require 'application_helper'
module ApplicationHelperPatch
def self.included(base)
base.send(:include, InstanceMethods)
base.class_eval do
unloadable
alias_method_chain :link_to_project, :project_owner
end
end
module InstanceMethods
def say_hello
'say Hello'
end
def link_to_project_with_project_owner(project, options={}, html_options = nil)
if project.archived?
h(project.name)
else
link_to 'hello',
project_url(project, {:only_path => true}.merge(options)),
html_options
end
end
end
end
ApplicationHelper.send(:include, ApplicationHelperPatch)
init.rbに次の1行を加えました.
require_dependency 'application_helper_patch'
試したこと
自作のプラグインのViewで次のヘルパーを試してみましたが、link_to_projectだけ、思ったとおりに'hello'と表示されず、もとのプロジェクト名が表示されてしまいます.(もちろんproject.archived?はfalseなものもです.)
- say_hello 'say_hello'と表示されました.
- link_to_project_with_project_owner 'hello'というリンクが表示されました.
- link_to_project プロジェクト名が表示されます.
また、Redmineで使っているlink_to_projectもそのままで書き換えられていません.
質問
alias_method_chainの使い方をどこかで間違えているのでしょうか?
また、もとのlink_to_projctを書き換えるにはどうしたらいいでしょうか?