redmineのチケットにsubversionのコミットからリンクさせてもチケットへのcommit反映がリアルタイムじゃないのはcronを回して解決する

schemeがおなかすいて頭がまわらなくてしんどいのでlinuxの設定でもするか。お金ないなぁ。ごはんだべたいなぁ
redminesubversion参照がリアルタイムじゃないっていうかデフォルトではredmineからは自動でsubversionを見に行ってはくれない。リポジトリタブをクリックして手動でみる、
つまり手動でsubversionを参照させないとredmine全体にcommitとかが反映されない、と。
これはいただけない。っていうかredmineリポジトリタブとか普通は一番みない部分なんじゃないかと思うのですが。

cronでスケジュールでスクリプト回して対応するらしい

cronに設定すればいいのね。
FAQ - Redmine

設定

colinuxのサイトで拾ってきたfedora7イメージcron入ってないじゃん・・・入れるか。
ってかcron初体験だわ。たぶん

cronインスコしてchkconfigを設定しつつ、とりあえずcronを起動

yum -y install yum-cron && chkconfig --level 2345 crond on && chkconfig --list crond && /etc/rc.d/init.d/crond start

起動OK。

redmine用のスクリプト作成。

#hogehoge.sh
cd /var....../redminrootp
ruby script/runner "Repository.fetch_changesets" -e production

hogehoge.shにrootで実行予定なのでrootに実行権限を与えておく*1*2
なスクリプトをかいて

/etc/crontabに直書き

スタイリッシュではないな
毎分回し。とりあえずroot権限で回しておく。
/etc/crontabファイルに

* * * * * root /path/to/hogehoge.sh

を追記。
redhat系ではcrontabファイル直書は推奨されないそうです。cron.d/配下とか/var/spool/配下のファイルをcrontabコマンドでhogehogeせよとのこと。めんどくさい!のでそんな手には乗らない。
crontabファイルを600にしてないとうまく回らないのでchmodしておきます。
ご飯食べました。
(実はうまく動かなくて/var/log/cronのログを確認したら"BAD FILE MODE(/etc/crontab)"を吐いてた。反射的にchmod 755した気がする。)

chmod 600 /etc/crontab

たぶん大丈夫だけど一応権限を上書きしておくに越したことはない。
chmodしておかないとシェルスクリプトrubyがうまく走ってくれないみたいで。手動でスクリプトを実行したときとcron経由でキックしたときとのtopで見た感じのプロセス遷移が違ってきてる。まぁ、結果うまくsubversionのfetchが出来ないってだけだけど。

crondを再起動

/etc/rc.d/init.d/crond restart

crondを再起動して設定終了。

確認

topとかみると毎分なんかプロセスがキックされてる。=>cronのキックOK
Firefoxをチケットのページ開いて自動更新モードにしておいて適当にそのチケットに向けてcommitする =>
たばこをすってる間にcommit反映。OKと。

結果

redmineからsubversionを毎分参照に行くことになる
=>更新はリアルタイムじゃなくて最大1分のラグが発生すると。
まぁ、1分なら何とかごまかせるだろ。いろいろを。

*1:与えなかったらcronとの関係でどうなるのかは検証してないけど。まぁ、cronで動かす予定のユーザーorグループに実行権限あたえておけばいいと思った

*2:cd でredmineルートに入るとかださいですね