Redmineの期日を強制する

「終了が無いタスクはねぇ!」と上司にお叱りを頂く事もあり、期日を登録する事を忘れてしまう自分の為にカスタマイズ。

Redmineのバージョンは1.3.3

参考にしたのはこちらのサイト様

①期日入力を必須
 app/models/issue.rbの「validates_presence_of」に「:due_date」を追加
    validates_presence_of :subject, :priority, :project, :tracker, :author, :status, :due_date

②期日のところに赤字の「*」を付ける
 app/views/issues/_attributes.html.erbの「due_date」のスタイルのとこに「:required => true」を追加
   <p><%= f.text_field :due_date, :required => true, :size => 10, :disabled => !@issue.leaf? %><%= calendar_for(‘issue_due_date’) if @issue.leaf? %></p>

passengerのRailsPoolIdleTime

Redmineの初回アクセス時とか、しばらく時間を明けた後の接続が非常に重い。

Aapcheのアクセスログに%Tを付けて「リクエストを扱うのに掛った時間(秒単位)」を取得すると、10秒も掛っている事が分かった。
Apache モジュール mod_log_config

調べたところ、RedmineをApacheで動かす為に使っているpassengerが、デフォルトで2分間、アクセスが無かったらRailsを止めているみたい。

つか、Redmineのページにも書いてあったの見落としていた・・・
Apache上でRuby on Railsアプリケーションを動かす/Passenger(mod_rails for Apache)の利用

このデフォルト値を変更する為、httpd.confに以下を追加してApacheを再起動する。
RailsPoolIdleTime 172800

※あまり時間を大きくするとリソースやら別の問題が出てきそうだから、とりあえず12時間に設定

あと、MySQLのスロークエリのログを取得する為、/etc/my.cnfに以下を追加
[mysqld]
long_query_time=2
log-slow-queries=/var/log/slow.log

Redmineのcsvエクスポートに更新履歴も出力させる

またRedmineネタ。

上司殿が会議の場で「Redmineにエクスポート機能があるから、それ使ってバックアップ取ればいいんじゃね?」って発言をしたらしい。

その話聞いて、「Redmineはチケット一覧しかエクスポートできませんよ?」って答えると、「えーっ、なんとかしてよ!」って・・・orz

プラグインで対応出来るか、グーグル先生に聞いたが適切な物がなかった。
XLS Exportでは、標準のCSVエクスポートをエクセルで出力できるだけだった)

さらに調べると、標準のCSVエクスポートのソースをいじる事で対応出来そう。

徒然さめざめ Redmine hack! – チケット一覧のcsv出力に履歴も載せる –

内容は2009年の物だが、 Redmine 1.1.2と1.1.3でもちゃんと動作した。

いつも思うが、こうゆう先駆者のブログとかすごく役に立つなぁ。

一応、変更後のissues_helper.rbをアップしておく。
issues_helper.rb

Redmineのviewカスタマイズ

redmine1.1.3(1.1.2でもOK)で、プロジェクトの見せ方を変更した。

(1)プロジェクトメニューのチケットボタンの遷移先をカスタマイズクエリで表示させる。
せっかくカスタマイズクエリ作っても、「チケット一覧」→「クエリ選択」とかめんどくさい。

lib/redmine.rbを変更
menu.push :issues, { :controller => ‘issues’, :action => ‘index’}, :param => :project_id, :caption =>
:label_issue_plural

   ↓

menu.push :issues, { :controller => ‘issues’, :action => ‘index’, :query_id => ‘1’ }, :param => :project_id, :caption => :label_issue_plural

app/views/projects/show.rhtmlも変更
<%= link_to l(:label_issue_view_all), :controller => ‘issues’, :action => ‘index’, :project_id => @project, :set_filter => 1 %>

   ↓

<%= link_to l(:label_issue_view_all), :controller => ‘issues’, :action => ‘index’, :project_id => @project, :query_id => 1 %>

(2)チケットの変更履歴に区切り線を入れる。
変更履歴が多すぎると見辛くなるって意見があったみたい。

public/themes/alternate/stylesheets/application.cssに以下を追加(themesは今使ってる奴)
 /* history */
 div#history {
   border: solid 1px #cccccc;
   background-color: #ffffff;   (ここで変更履歴の色を指定。ウチは白w)
   padding: 5px;
 }

 div#history > h3 {
   border-bottom: none;
 }

 div#history > .journal {
   border-top: solid 1px #cccccc;
   padding-right: 5px;
   padding-left: 5px;
 }

 div#history > .journal > h4 {
   border-bottom: none;
   margin: 0px;
 }

変更が終わったらApacheを再起動する。

Redmineのバージョンアップ

会社で使っているRedmineを、0.9.7からメジャーリリースの1.1.2にバージョンアップを行った。

手順はhttp://redmine.jp/guide/RedmineUpgrade/の通り。

1箇所だけ、i18nがインストールされていないとエラーになったが、エラーメッセージの通り、gem install -v=0.4.2 i18nで解決。
※gem install i18n だとバージョン5.0.2がインストールされてしまい、再度エラーになったのでバージョンを指定したインストールになる。