basyura's blog

あしたになったらほんきだす。

Redmine のチケットの歴にコメントだけ表示するプラグインを作ってみた

Redmine がもうすぐ Ruby 1.9.3 に対応しますね。次のステップは Rails 3 系への対応ということで楽しみだ。ただ、動かなくなるプラグインがゴロゴロ出てくるんじゃないのかなぁという印象。

ということで?チケットの歴にコメントだけ表示するプラグインを作ってみた。
https://github.com/basyura/redmine_comment_only

before

after


なぜ作ったか

Ruby Issue Tracking System みたいに不特定多数の人にチケット登録されて、それをコメントで議論していくスタイルはなかなか社内プロジェクトにはマッチしないのではないのかなぁと思う。
社内プロジェクトではコメントを使って複数人で議論するのは効率が悪いし、最終的にそのチケットをどうクローズしたのかを知るために歴を追うのも効率が悪い。なので、

  • チケットを登録
  • 担当者が説明を随時更新
  • 必要に応じてコメントでツッコミや依頼を入れる
  • 最終的に原因から結果までを説明にまとめる

という運用にした。この場合、一番上の画像にある通り、極端に言えば「Description updated」が歴にひたすら並ぶことになってしまう。
そうなると、有効なコメントどころか、コメントがあった事自体を見落としてしまう。それを改善したのが 2 つめの画像。
運用をどうするのか?なのだと思うのだけど、Ruby みたいなオープンソース系ではない、社内の普通(?)のプロジェクトではどういう運用をしているのかが気になる。
ガチガチにルールを作ると初めて入ってきた人はもちろん、おっさんはすぐに強い拒否反応を示してしまう。ぬるっと入って便利だってことに気づいてもらうように誘導しつつ、必要に応じて改造していくのがいいのかなぁと思う。

作り方

プラグインの作り方は何パターンかあるのだけど、view を一つ置き換えるだけのプラグインなので楽だった。

ruby script/generate redmine_plugin <プラグイン名>

でプラグインのひな形ができるので、あとはそれをいじるだけ。

$REDMINE_HOME/vendor/plugins/redmine_comment_only
├── README.rdoc
├── app
│   └── views
│       └── issues
│           └── _history.html.erb
├── config
│   └── locales
│       └── en.yml
├── init.rb
├── lang
│   └── en.yml
└── test
    └── test_helper.rb

今回は _history.html.erb をいじった。plugin 内に $REDMINE_HOME/app/view と同じ階層で同じ名前のファイルを置くとそちらが反映される仕組み。
課題は、正規の _history.html.erb が変更された時に追従できないという点なんだけど、どうするのがベストなんだろうか。

まとめ

みんなも作るといいよ!