背景
Redmineのプラグイン開発に関する情報を収集し、備忘録としてまとめたので、
Redmineプラグインの開発手順や、ひな形作成のコマンド、Hookの利用方法などについて解説する。
実施した環境
ツール | バージョン | 備考 |
---|---|---|
Ubuntu | 22.04 LTS | |
Ruby | 3.2.4 | rbenvでインストール |
プラグインのひな形作成コマンド
Redmineには、プラグインのひな形を自動的に生成するコマンドが用意されている。
Redmineをインストールしたディレクトリに移動して、以下のコマンドを実行する。
# 引数にプラグイン名を指定 bundle exec rails generate redmine_plugin Sample
このコマンドを実行すると、controllers
, helpers
, models
, views
などのディレクトリが生成され、
モデルやコントローラーのスクリプトおよびテストコードのひな形が作成される。
プラグインの登録
プラグインをRedmineに登録するためには、init.rb
ファイルを作成し、以下のように情報を記述する。
Redmine::Plugin.register :sample do 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_demo do 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の種類
Redmineには以下の種類のHookがある。
Hookの種類 | 説明 |
---|---|
View Hooks | ビューにHTMLを挿入するために使用 |
Controller Hooks | コントローラーでの処理に追加 |
Model Hooks | モデルの処理に追加 |
Helper Hooks | ヘルパーの処理に追加 |
詳細は以下のURLを参照:
Redmine Hook一覧
以下に、例のセクションにおいて「どのような処理か」を解説する文言を追加し、SEOの観点から最適化しました。
主に使うHookの紹介
1. View Hooks
View Hooksは、ビューに特定のHTMLを挿入するためのHook。
特定のページやテンプレートに対して追加の情報を表示したり、独自のUIコンポーネントを埋め込んだりする場合に利用される。
以下の例は、課題作成ページの上部にカスタムメッセージを表示するための設定。
# リスナークラスを定義し、init.rbで読み込ませる class DemoHookViewListener < Redmine::Hook::ViewListener render_on :view_issues_new_top, :partial => "Demo/issue_note" end
このコードは、view_issues_new_top
という位置にDemo/issue_note
というパーシャルを挿入し、課題作成画面の上部に特定のメッセージや情報を表示する。
2. Controller Hooks
Controller Hooksは、コントローラーの特定のアクションが実行された後に追加の処理を行うHook。
データベースの変更や、リクエストの内容に基づいて追加のロジックを実行する場合に利用される。
以下の例では、新規課題が保存された後に、特定のプロジェクトに対して追加の処理を実行する。
class DemoHookListener < Redmine::Hook::Listener def controller_issues_new_after_save(context = {}) project = context[:project] request = context[:request] # 独自の処理を記述 end end
このコードは、課題が保存された後に発生するイベントにフックし、プロジェクト情報やリクエスト内容に基づいて、カスタム処理を追加で実行する。
まとめ
Redmineのプラグイン開発では、ひな形作成コマンドを活用することで、効率的に開発を開始できる。
また、Hookを使うことでRedmineの動作を柔軟にカスタマイズすることが可能になる。
プラグインの独自機能を効果的に追加し、プロジェクト管理をより強力にするために、これらの手法を積極的に活用してほしい。
参考サイト
- Redmine公式のDeveloperガイド(英語)Developer Guide
- r-labsのプラグイン開発ガイド(日本語)r-labs Plugin Development Guide