2012-04-19

Redmine1.4の準備 / 開発環境のメモ

Redmine1.4が先日リリースされました。

開発者向けには、複数リポジトリ対応が大きな目玉ですが、ベースも大きく変わり、Ruby1.8からRuby1.9対応になりました。
今すぐRedmineをアップグレードする必要は無いかもしれませんが、Rubyのバージョンが上がったことで、この流れについていけるようにしないと、どんどんその後のバージョンアップがしにくくなります。

UIの操作性、APIも改善されているので、バグレポートが上がってきて落ち着くと思われる5月の連休後くらいに、わたしの環境でも、バージョンアップをしたいなと考えています。
個人的には、この機能がとてもうれしい、と思っています。(チケットタイトルと本文の修正する方法が気が付きにくかったので)

  • Feature #7603: Please make editing issues more obvious than "Change properties (More)"

* * *

ご縁あって、プラグインの開発を本格的にするようになってから、NotePCにNetBeansというIDEを使い、さらにデバッグできる環境を用意しました。

この環境があるのとないのでは大違い。

さすがにスーパーエンジニアなみにはコードはかけませんが、プラグイン開発だけでない、Redmine本体で何か不具合報告があった際に、『どんな変数が来るんだろう』とか、『なにがエラーの原因なんだろう』というあたりが、断然分かりやすくなりました。

Redmineの開発サーバにもデータを同期させているので、より本番に近いデータで、問題を探ることもできるようになっています。

#欲を言えば、IDEでデバッグモードだと遅いので、マシンパワーが早いに越したことはないのですが、ログにトレースするだけのデバッグとは偉い違いです…。

この環境も、Windowsだと意外と整えにくく、Macが良いのか?と思いながら葛藤しています。

さて、この開発環境も、Rubyのバージョンアップに合わせて、調整しなおさないといけなくなりました。
Windows7 にRedmine1.4の環境を作る点は、@yohshiy さんの記事を参考にさせていただきました。ありがとうございます!

次はIDEです。
Windows7では、どうしてもmakeとかgccが無いので、ゴニョゴニョやらないと環境が整いません。Ruby1.9を入れて、NetBeansから起動することは意外と楽にできましたが、デバッガの利用がすぐにはできませんでした。

* * *

デバッグ環境のために必要なgemが、どうやらRuby本体の細かいバージョンにまで依存しているらしく、なかなかインストールできませんでした。
やっと入った組み合わせを、メモしておきます。

  • Ruby1.9のインストール先:C:\bin\ruby19
    • ruby 1.9.3p125 (2012-02-16) [i386-mingw32]
  • Redmine1.4に最低限必要なgemは、Bundlerで追加。
  • デバッグ環境の下準備に、DevKitをインストール。
  • デバッグ用のgem: C:\bin\ruby19\lib\ruby\gems\1.9.1\gems 以下に入れた
    • linecache19-0.5.13 (gem install linecache19-0.5.13.gem)
    • ruby-debug-base19-0.11.26 (gem install ruby-debug-base19-0.11.26.gem --with-include=C:\bin\ruby19\include\ruby-1.9.1\ruby-1.9.3-p125)
    • ruby-debug-ide19-0.4.12 (gem install ruby-debug-ide19)

ひとまず、この構成で、NetBeansからruby1.9を選択したときにも、FastDebuggerが有効になっていました。
ところが…。

NetBeans的にはデバッガが使える状態なのに、デバッグモードでRedmineを起動しようとすると、下記のエラーで上がってくれません..。

Fast Debugger (ruby-debug-ide 0.4.9) listens on :61055
script\server
C:/bin/ruby19/lib/ruby/gems/1.9.1/gems/ruby-debug-ide19-0.4.12/lib/ruby-debug-ide.rb:123:in `debug_load'
C:/bin/ruby19/lib/ruby/gems/1.9.1/gems/ruby-debug-ide19-0.4.12/lib/ruby-debug-ide.rb:123:in `debug_program'
C:/bin/ruby19/lib/ruby/gems/1.9.1/gems/ruby-debug-ide19-0.4.12/bin/rdebug-ide:90:in `<top (required)>'
C:/bin/ruby19/bin/rdebug-ide:23:in `load'
C:/bin/ruby19/bin/rdebug-ide:23:in `<main>'
Uncaught exception: cannot load such file -- script\server

どうも、script/server で起動するファイルを見つけられないようです。

いくつか検索したところ、それっぽい情報があり、ruby-debug-ide.rb をゴニョゴニョ修正したのですが、うまく行かず…。

しかたないので、エラーとして出てくる ruby-debug-ide.rb の 123行目あたりを、Redmineのパスにハードコードしたら動きました。

#bt = debug_load(Debugger::PROG_SCRIPT, options.stop, options.load_mode)
sr = "c:/bin/redmine-1.4.0/script/server" # d:/fourth is my project's root, obviously
bt = debug_load(sr, options.stop, options.load_mode)

ただ、これだとあんまりなので、

ps = Dir.pwd.chomp + '/script/server'
bt = debug_load(ps, options.stop, options.load_mode)

に修正してみました。script/server も、たしか script/rails server に変わるはずなので、Rails3のアプリだとここを直さないといけないでしょうか(^^;

[ FastDebuggerがうまく動かない件の参考URL ]