ある日突然、Redmineプラグイン開発をすることがあるかもしれません。
開発方法の詳細は調べる必要があるとしても、環境ぐらいは簡単に作りたいものです。
開発環境の構築方法です。
環境
- MacOS Sierra Version 10.12.6
- Docker Version 17.09.0-ce-mac35 (19611)
- Redmine 3.4.2
手順
docker-compose
データベースのインストールや初期構築の手間を省くために公式dockerイメージを使います。
docker-compose で構築した環境で redmine プラグインを開発しはじめる例 - Qiitaを参考にします。
version: '3.1'
services:
redmine:
image: redmine
ports:
- 80:3000
environment:
REDMINE_DB_MYSQL: db
REDMINE_DB_PASSWORD: redmine
volumes:
- ./work:/usr/src/redmine/plugins/redmine_plugin_of_yours/
- ./log:/usr/src/redmine/log
depends_on:
- db
db:
image: mysql:5.7
environment:
MYSQL_ROOT_PASSWORD: redmine
MYSQL_DATABASE: redmine
command: mysqld --character-set-server=utf8 --collation-server=utf8_unicode_ci
工夫した点
-
library/redmine - Docker Hubの例では
REDMINE_DB_PASSWORD
がexample
です。そのままでは動かないのでredmine
に変更します(開発環境ですので、パスワードは公開しても痛くも痒くもありません)。 - 作業ディレクトリ配下の
work
ディレクトリにRedmineプラグインのディレクトリを用意します。Redmine本体は変更しません。プラグインのディレクトリだけマウントすれば十分です。 - logディレクトリもマウントします。Redmineは原則prodcution環境で動かします。起きた例外はこのディレクトリに出力される
production.log
ファイルで確認します。 - dbコンテナへの依存をdepends_onで明記します。プラグイン開発時は変更するたびに再起動します。起動時にredmineコンテナを明示的に指定して、再起動時にRedmineプロセスのみ再起動できるようにします。
- dbコンテナのcommandについては後述します。
注意点
- Docker For Macは管理者権限を与えているため80番ポートで起動できます。80番ポートでの起動が面倒な場合は任意のポートに変えてください。
Redmine起動
docker-compose up redmine -d
http://localhost で起動します。
プラグインのスケルトン生成
docker-compose exec redmine bundle exec ruby bin/rails generate redmine_plugin redmine_plugin_of_yours
generate redmine_plugin
についてはPlugin Tutorial - Redmineを見てください。
ログイン
Redmineをインストールした直後であればユーザー名、パスワードともに"admin"でログインできます。
Redmineの管理者ユーザはadmin:adminです。
Wikiの保存時にInternal errorが出る場合
プロジェクトを作成しようとした所、以下のようなエラー画面が表示された。
修正箇所:dbの所にcommandを追加。
command: mysqld --character-set-server=utf8 --collation-server=utf8_unicode_ci
を追加します。
Redmine終了
docker-compose kill
この先
あとは公式のプラグイン開発チュートリアルを読んでバリバリ開発してください。
参考情報
-
dockerでRedmineを起動する - Qiita
MariaDBを使う例です。 - Redmineプラグインのviewを作るための情報あれこれ | | Scimpr Blog 既存のhelperやCSSクラスの説明があります。
-
Redmine PluginのViewの拡張ポイント(View hook)がどこにあるか?を列挙する - Qiita
View hookの反映されるページのスクリーンショットがあります。 - Redmine の wiki index ページを tree view で表示する - redmine_wiki_index_tree_view - basyura's blog View hookのサンプルがあります。
- Redmine - wiki 記法を増やす - basyura's blog