チケット(issues)のCSV出力に経過時間を出力する

なぐりがきでメモ。
金曜の朝の進捗時に、「チケットのCSV出力に経過時間の合計を出してほしいんですけど。。」って言われたので、ちょっとやってみた。

うん、正直、Rubyなんて言語仕様のさわりしか知らないし、Railsとかよくわかってないんだけどもw
そもそもredmine自体、プロジェクトとして使うのは初めてに近いんですけれども。。。

それはともかく、プラグインを書くのが順当なのかなと思ってちょっと調べてみたら、プラグインで書くと面倒なことが判明(コードジェネレートしなきゃいけない時点でもうアウトw)したので、手っ取り早く本体のコード解析したほうがいいや、ということで適当に追ってみた。

結果として、redmine/app/helpers の issues_helper.rb に目的のソース(issues_to_csv)があるのがわかったので、ちょろちょろっとコードをコピーしてみた。

cp -p issues_helper.rb issues_helper.rb.bak

して、編集。

diff issues_helper.rb issues_helper.rb.bak
160d159
< l(:label_spent_time),
187d185
< issue.spent_hours.to_s.gsub('.', decimal_separator),

細かい説明はまぁいいか。redmine/app/views/issues/show.rhtml が、チケットの詳細画面のテンプレで、そこで使われているラベル名と経過時間の変数をぱくってきて、CSV出力時に追加しただけ。

label_spent_time がラベルで、issue.spent_hours が経過時間(の合計)で文字列化しながら小数点区切り表示(これ自体は予定工数のところからぱくった)です。

restart.txtをtouchして再読み込みさせてから出力してみてうまくいったのを確認しました。

ロジックを全部追ったわけじゃないので、出力できたのはまぐれですが、この動作から推測するに、issuesを処理する際にリスト表示の時もdetail(urlではshow)の時も同様のロジックを通過してきてる?それって無駄も多くないの?とか。
それともこの項目(issue.spent_hours)っていつでも出てくる値だった?<DBくらい見ろよw

この動きが、redmineの設計思想なのか、railsの思想なのか、rubyの思想なのか、誰か教えてください。。。