Redmineプラグインもくもく会 山梨 #005回 プラグイン作成試し
これまでの開発環境を駆使するには、DockerやRailsなど詳しく勉強する必要があるかもしれませんが、一気にやっても多分忘れてしまうので(という理由で)後回しにしつつ、以前ハンズオンでちんぷんかんぷんだったものをトレースしながら、プラグイン作成にそって勉強を少しずつしていこうと思います。
それでは、こちらのハンズオンを思い出していきたいと思います。
プラグインを作成する
プラグインチュートリアルでは、ジェネレータでプラグインの雛形を作る方法が紹介されているのですが、ジェネレータの情報アップデートがいまいちらしく、失敗する事があるので信用していないという事でした。(ベタに作成することになります)
あと、ハンズオンはRedmine4に向けたハンズオンなので、今回の3.3.2環境ではうまくいかない可能性あり、途中でギブになる可能性あります。(^_^;)
題材は、『いいね!ボタン』です。
プラグインフォルダを作成
Dockerの開発環境用Redmineを起動します。
$ REDMINE_VERSION=3.3.2 docker-compose build --no-cache $ docker-compose up -d
作ったドッカー内に入ります。
■ docker exec -it 名前など /bin/bash
・-i : Interactive
・-t: terminal
$ docker exec -it redmine_sqlite3 /bin/bash
中に入れました。
root@ac584a652c94:/tmp/redmine# ls CONTRIBUTING.md Gemfile.lock Rakefile appveyor.yml config db extra lib plugins script tmp Gemfile README.rdoc app bin config.ru doc files log public test
プラグイン用フォルダ『redmine_iine』を作成します。
cd plugins mkdir redmine_iine
init.rbを作成
プラグインが最初に読み込むものを作成します。
ここからは、MAC側からソース修正してみます。
Dockerfileと同じフォルダにpluginsフォルダを作ってあって、このフォルダがDockerコンテナ内のpluginsフォルダとの共有フォルダになっています。
(docker-compose.ymlで設定してる)
ctrl+p -> ctrl+q で抜けるとdockerコンテナは起動したまま、抜けられます。
ctrl+p ctrl+q
MAC側のpluginsフォルダの中には、先程コンテナ内で作成した『redmine_iine』フォルダが作成されているのがわかると思います。
テキストエディタ等で、『init.rb』ファイルを作成します。
init.rb
Redmine::Plugin.register :redmine_iine do name 'Redmine いいね!Plugin' author 'sioaji' version '0.0.1' end
ここで、通常ですと、プラグインを再読込のために、
railsサーバーをCtrl-C停止後、再起動するのですが、
現状のDocker構成でのやり方がわかりませんでした。
$ docker-compose restart とか $ docker stop redmine_sqlite3 $ docker start redmine_sqlite3 とかやっても 再起動されたコンテナがすぐに終了してしまう
困って、ググりました。
けど、良くわからず、、、一応ですが、
docker-compose.ymlを修正する事にしました。
★★★マークの行追加。
version: '3' services: web: build: context: . args: REDMINE_VERSION: $REDMINE_VERSION image: redmine_sqlite3 container_name: redmine_sqlite3 command: > bash -c "bundle exec rake redmine:plugins:migrate && bundle exec rails s -p 3000 -b '0.0.0.0'" environment: RAILS_ENV: development volumes: - ./plugins:/tmp/redmine/plugins ports: - "3000:3000" stdin_open: true ★★★ tty: true ★★★
stdin_open: 標準入力
tty: 端末の付与
相当するdocker runオプション −it と同等になる様で、
こうすると、すぐにコンテナが終了しないっぽい。
(よく理解できていないです)
この構成でイメージ作り直して起動します。
$ REDMINE_VERSION=3.3.2 docker-compose build --no-cache $ docker-compose up -d
再起動する
docker-compose restart
で再起動した感じになる。
pluginのマイグレートとサーバーの起動するのかな。
二重起動とか心配。
(必ずうまくいくわけでは無さそう。すぐに終了しないでうまくいく場合がおおい感じ)
・・・ひとまずこのやり方で進めます。(^_^;)
ここまでの結果
今回は、ここまで。ほとんど進まず(^_^;)
次回は、いいね!ボタン表示とhookを少し。な感じでしょうか。
先は長いかも。。です。。。