Redmineプラグインの開発環境構築


ある日突然、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を参考にします。

docker-compose.yml
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_PASSWORDexampleです。そのままでは動かないので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.JP

Redmineをインストールした直後であればユーザー名、パスワードともに"admin"でログインできます。

Redmineの管理者ユーザはadmin:adminです。

Wikiの保存時にInternal errorが出る場合

dockerでRedmineを起動する - Qiita

プロジェクトを作成しようとした所、以下のようなエラー画面が表示された。
修正箇所:dbの所にcommandを追加。

command: mysqld --character-set-server=utf8 --collation-server=utf8_unicode_ci
を追加します。

Redmine終了

docker-compose kill

この先

あとは公式のプラグイン開発チュートリアルを読んでバリバリ開発してください。

参考情報