背景
Redmineのプラグイン開発について情報収集を行った結果を、備忘録としてまとめる。
実施した環境
ツール | バージョン | 備考 |
---|---|---|
Ubuntu | 22.04 LTS | |
Ruby | 3.2.4 | rbenvでインストール |
プラグインのひな形作成コマンド
Redmineには、あらかじめプラグインのひな形を作成するためのコマンドが用意されている。Redmineをインストールしたディレクトリに移動して以下のコマンドを実行する。
# 引数にプラグイン名を指定 bundle exec rails generate redmine_plugin Sample
このコマンドを実行すると、プラグインのディレクトリ以下に controllers
, helpers
, models
, views
などのディレクトリが生成され、モデルやコントローラーのスクリプトやテストコードのひな形が作成される。
プラグインの登録
以下は、プラグインの情報を登録するための init.rb
ファイルの例である。
Redmine::Plugin.register :sampledo name 'Sample plugin' author 'saitoxu' description 'This is a sample plugin' version '0.0.1' url 'http://example.com/path/to/plugin' author_url 'http://example.com/about'end
init.rbとは
init.rb
ファイルは、プラグインの情報を定義する場所である。
Redmine::Plugin.register :redmine_demodo name 'Redmine Demo plugin' author 'Author name' description 'This is a plugin for Redmine' version '0.0.1' url 'http://example.com/path/to/plugin' author_url 'http://example.com/about'end
Hookとは
Hookは、Redmineの特定のイベントが発生した際にプラグイン独自の処理を実行する仕組みである。プログラムの動作を動的に変更するための便利な方法であり、特にプラグインやエクステンションを開発する際に利用される。
Hookの種類
ツール | 備考 |
---|---|
View Hooks | 最も多く使用する |
Controller Hooks | |
Model Hooks | |
Helper Hooks |
詳細は、以下のURLを参照すること。 Redmine Hook一覧
主に使うHookの紹介
1. View Hooks
View Hooksは、ビューに対して特定のHTMLを挿入するためのHook。
# リスナークラスを定義。init.rbで読み込ませるclassDemoHookViewListener< Redmine::Hook::ViewListener render_on :view_issues_new_top, :partial => "Demo/issue_note"end
2. Controller Hooks
Controller Hooksは、コントローラーの特定のアクションが実行された後に追加の処理を行うためのHook。以下にその例を示す。
classDemoHookListener< Redmine::Hook::Listenerdefcontroller_issues_new_after_save(context = {}) project = context[:project] request = context[:request] # ここに処理を書くendend
まとめ
Redmineのプラグイン開発では、ひな形作成コマンドを使って効率的に開発を開始することができる。そしてHookを活用することで、Redmineの動作を柔軟にカスタマイズすることが可能となる。