Redmine Advent Calendar jp 2011 : ATND 4日目です。
現行のRedmineだともっとスマートに書けるかもしれません。
良い実装をご存知のかた、ぜひ、教えてください :D
Hudson Plugin をインストールすると、チケットのフィルタに
という、見慣れない項目が登場します。これがそうですね。
Query クラスが親玉です。狙いどころは以下。
available_filters でジョブ番号とビルド番号を項目に追加して、
sql_for_field で追加した項目に応じたSQLを作成できるようにすれば良い訳です。
時間がないのでいきなり奥義。
上記の Query#available_filters, Query#sql_for_field は新しい項目を追加できるように設計されていません。
また、Query クラスを入れ替えることもできないので、Queryクラスを継承してメソッドをオーバーライドする戦法も取れません。
手詰まり… orz
そこで登場するのが alias_method_chain です。
Query.class_eval do alias_method_chain :available_filters, :redmine_hudson end
のように書いておくと(ここちょっと自信ない)、
ようになります。
これを使ってあれこれすれば、フィルタに項目を追加することができるのですが……。
時間がなくなったので今日はここまで。2回目があれば続きを!