shinagawa.redmine 第2回勉強会の発表資料
r-labs に書いたのは結構大作で、 40 分で説明しきれないので、 ポイント絞って説明しようかなと思ってます。
発表資料を公開しておきます。
https://docs.google.com/present/view?id=dfhpqwhr_0c58t6mtg
プラグイン開発記 - routes の問題
これは Redmine 最新安定版(1.3.0) では発生しないが、 開発版で発生する問題だった。
結局、解決方法がわからなくて、 @haru_iida さんに教えてもらったのだが、 routes を設定していないといけないらしい。
今後の Redmine のバージョンから routes の設定が必須になるかも知れない。
Rails では link_to のメソッドなどで、以下のようなアクションを指定した場合、
link_to(表示文字列, {:control=>:foos, :action=> :show, :id => "demo", :foo_id => 1})control, action, id の値だけアドレスに使われて、残りのハッシュの値は GET の引数として渡される。
アドレス: http://127.0.0.1/foos/show/demo params = {:id => "demo", :foo_id => "1"}これは config/routes.rb というファイルでどのようなアドレスになるか変更できる。
http://gihyo.jp/dev/serial/01/ruby/0038
Rails では、 find_project という id をプロジェクトの識別名としてプロジェクトを探す関数が予め用意されているし、 id をプロジェクトの識別名に使うという方針みたい。
Redmine では、ソースを見ていると、 id を使わずに project_id というキーで、識別名を指定して、 routes を使ってアドレスが次のようにしている。
http://サイトアドレス/projects/プロジェクト/コントロール/アクション
用語集プラグインでは参考にした ezFAQ がそうしていたからという理由が一番大きいけど、 routes 設定するのも面倒なので、 Rails のように id をプロジェクト識別名に設定する方法でやっていた。
けど、 routes を設定するのが必須なら project_id をキーにしておくように変更した方がいいかも知れない。
ただ、そうすると前と URL が変わってしまうので、それもどうかなとも思う。
Redmine インフォメーション プラグイン の場合は、もともとプロジェクトに属してなくて、 id を情報のカテゴリとして使っていたので、 とくに問題はなさそう。
もう一つ問題は 『プラグイン開発ガイド』
こちらも簡単のために、プロジェクト識別名を id で設定していた。
今後、 routes 必須になる可能性を考えると、 project_id にして、 routes の説明を追加した方がいい気がする。
shinagwa.redmine の勉強会 まで時間がないけど、がんばってなおしてみようかな。
プラグイン開発ガイドの更新
前の記事 で書いていたプロジェクト識別名の指定に project_id を使うように変更しています。
routes の説明は、まだ私がよく理解していないので、そんなに詳しくは書いていません。 そのうち、ちゃんと説明を書き足したいなと思います。
それ以外にはデータベースのプラグインのテーブルを rake コマンドを使って削除する方法も追加しました。
最初に書いていた時は知らなくて、 sqlite のコマンドを使って削除する方法を書いていました。 そのうち、直そうかなと思っていたので、ついでに直しています。