Redmineによるタスクマネジメント実践技法

redmine 2.0がリリースされて一ヶ月ちょい。
新featureが出てくる前に自作のプラグインも移行しておかないとなーと思いつつ放置してたんだけど、やっと手をつけた。

以下のURLを参考にした。

Redmine 2.0.xにプラグインを移植する
Redmine2.0へのプラグインのマイグレーションについて


自分のところでひっかかったこと。

  • RAILS_ROOTが使えない
     → Rails.root
  • RAILS_DEFAULT_LOGGERが使えない
     →Rails.logger
  • RAILS_ROOT/vendor/plugin/が変更された
     →RAILS_ROOT/plugin/
  • routesの定義の仕方
     →ActionController::Routing::Routes.draw からRedmineApp::Application.routes.drawに
    RedmineApp::Application.routes.draw do
      match 'projects/:project_id/wiki/:id/graphviz', :to => 'wiki_graphviz#graphviz'
    end
    
  • テンプレートのファイル名が変わった
     →*.rhtml から *.html.erbに
  • テスト用webサーバ他のコマンドが変わった
     →./script/sever から ./script/rails server に
     →./script/runner から ./script/rails runner に
  • ActionController::Base.cache_configured? がprivateになった
     →意図が違うが ActionController::Base.perform_caching で代替


ここからはredmine 2.0への移行じゃなくて、ruby 1.8から1.9に変えたことでひっかかったこと。

  • String#eachがなくなった
     →String#each_line とか
  • proc+ブロックで得たProcオブジェクトのブロック内でreturnしたら呼び出し元メソッドがreturnした
    これを知らなくてすごく悩んだ。
    Redmineのviewフック内でコントローラにrender_to_stringをsendしている。
    テンプレート内でクロージャ(proc由来のProcオブジェクト)を使ってtrue/falseを返しているつもりだったのだけど、viewフックメソッドからtrueが返る状態になってしまった。
    lambdaに変更した。


それぞれremdine-2.0ブランチ
https://github.com/tckz/redmine-wiki_graphviz_plugin
https://github.com/tckz/redmine_wiki_preview_ext
https://github.com/tckz/redmine_wiki_astah


でも、redmine 2.0系のfeatureが増えてくるまでは、運用環境は1.4系のままかな。