Redmine の開発を簡単に始めることができる redmined という CLI を作った。
https://github.com/hidakatsuya/redmined
これは Rails の Docked Rails CLI に参考にしたもので、
開発に必要な環境を提供する Dockerイメージと、そのコンテナ上で bin/rails server
などのコマンドを実行可能にする redmined
コマンドを提供する。
Redmine はその Dockerコンテナ上で実行されるため、Docker と Redmine のソースコードがあればすぐに開発を始めることができる。もちろん、テストも実行できる。
Redmine の完全なテストを実行するためには、いくつかの環境設定が必要で、それらを端末ごとにセットアップするのは面倒。 他の有力な選択肢として、VSCode の devContainer があるが、プライベートでは VSCode を使っていないこともあり、環境に依存しないことが望ましい。
インストール手順は README の通り。
あとは、Redmine のソースコードを公式ミラー redmine/redmine などから取得し、以下のコマンドを実行すればテスト可能な Redmine 環境ができあがる。
Redmine のディレクトリに移動して、データベース(SQLite)の設定を追加し、
cd your-redmine-root
cat <<EOS > config/database.yml
development:
adapter: sqlite3
database: db/development.sqlite3
test:
adapter: sqlite3
database: db/test.sqlite3
EOS
セットアップすれば起動できる。
redmined bundle install
redmined bin/rails db:prepare
redmined bin/rails s
コンソールに入りたい場合は、別のターミナルにて redmined bin/rails c
などとすればいい。
bin/rails g scaffold blog
などのコマンドはコンテナ上で実行されるため、しばしばパーミッションエラーでファイルを編集できない問題が起きる(たぶん、Docker Desktop for mac では発生しない)。
REDMINED_RUN_AS_HOST_USER
を有効にすることで、ホスト側のユーザーをコンテナユーザーにマッピングしてコンテナを実行することができる。
# .bashrc など
export REDMINED_RUN_AS_HOST_USER=1
もしくは、単に redmined
実行時にセットするだけでもいい。
REDMINED_RUN_AS_HOST_USER=1 redmined bin/rails s
データベースは SQLite3 を前提にしていることと、LDAP のテストは実行できない。
このあたりを考え出すと、もう公式に開発用の compose.yml と Dockerfile を用意する方が良いように思う。