2010年06月16日

Redmineプラグイン作成方法のまとめ

Redmineプラグインの詳しい作成方法は方は下記のサイトで解説されているので、この記事ではプラグイン開発に必要なコマンドや注意点などをまとめてみる。

  • Redmine - Plugin Tutorial – Redmine
    Redmine本家サイトのプラグインチュートリアル。
    (投票プラグインの開発を例にRedmineプラグインの作成方法を解説している。英語)
  • r-labs - プラグイン チュートリアル - Redmine
    上記サイトの解説を日本語に翻訳したもの。
  • Ruby Freaks Lounge:第34回 Redmineプラグイン開発(1)
    サーバーの状態を監視するプラグインを作成しながらRedmineプラグイン開発を説明。

Redmineプラグインの開発方法

環境

ここで説明している内容は下記の環境で試した。

  • WindowsXP
  • Redmine 0.9.4
  • Rails 2.3.5

1. プラグインのの作成

Redmineをインストールしたディレクトリーにて下記のコマンドを実行する。

> ruby script/generate redmine_plugin <プラグイン名>

たとえばSchedulerという名前のプラグインの場合は、下記のようになる。

> ruby script/generate redmine_plugin Scheduler 

すると、vendor/plugins/redmine_<プラグイン名>というディレクトリーが作成され、その下にプラグイン開発に必要なファイルが自動生成される。

2. init.rbの編集

vendor/plugins/redmine_<プラグイン名>/init.rb を修正して、プラグイン情報を設定する。

3. モデルの作成

> ruby script/generate redmine_plugin_model <プラグイン名>
<モデル名> <モデルの属性...>

Schedulerプラグインに「event」というモデルを作成し、そこにタイトル、開始日時、終了日時の属性を持たせる場合は下記のようになる。

> ruby script/generate redmine_plugin_model Scheduler event 
title:string start_date:date end_date:date

4. マイグレーションファイル名の修正

作成したモデルをDBに反映させるためにマイグレーションを実行するが、ここで注意が必要。 モデルを作成するとyyyymmddhhmmss_****.rbという日付が頭についた形式のマイグレーションファイルが生成される。 しかし、Redmineでは、この日付形式のマイグレーションファイルをサポートしていない。そこで、001_****.rbのようにファイル名を変更する必要がある。

> cd <REDMINE_ROOT>/vendor/plugins/redmine_scheduler/db/migrate/ 

> ren 20100525010956_create_events.rb 001_create_events.rb

5. DBのマイグレーションを実行

> rake db:migrate_plugins 

このコマンドにより、モデルと関連するテーブルやカラムがDBに作成される。

6. コントローラーの作成

> ruby script/generate redmine_plugin_controller <plugin_name>
<controller_name> [<actions>]

> ruby script/generate redmine_plugin_controller Scheduler
events index

注意しなければならないのは、unloadable を生成されたコントローラーに追加すること。 この一行がなくとも最初の一回目はページが表示されるのだが、リロードするとエラーが発生する。

Ruby on Rails単体で作ったアプリをRedmineのプラグインに移植する場合、 コピー&ペーストでコントローラーやビューをプラグインに持ってくることがあると思うが、そのときはunloadableを追加するのを忘れないようにすること。(ちなみに私はこれを忘れて、プラグインが動作せず悩んだことがある。)

class SchedulerController < ApplicationController
   unloadable   ← 重要  
 
   def index
      ...
   end
   ...
end

以上が、Redmineでプラグインを作成するときの手順である。

Redmineプラグインの削除

追加したプラグインを削除するには、下記のコマンドでマイグレーションコマンドでDBを元に戻し、あとはプラグインのフォルダごと削除すればよい。

> rake db:migrate_plugin NAME=<プラグイン名> VERSION=0

> rake db:migrate_plugin NAME=Scheduler VERSION=0

そして、vendor/plugins/redmine_<プラグイン名> を丸ごと削除してしまえばよい。

Redmineプラグインのマイグレーションに関しては、下記の記事(英語)が参考になる。

posted by cpractice at 06:48| Comment(0) | TrackBack(0) | Redmine | このブログの読者になる | 更新情報をチェックする
この記事へのコメント
コメントを書く
お名前:

メールアドレス:

ホームページアドレス:

コメント:

この記事へのトラックバックURL
http://blog.seesaa.jp/tb/153445513

この記事へのトラックバック