sioaji2012のブログ

普段は組み込み開発でC言語のみです。主にプログラムや勉強日記です

Redmineプラグインもくもく会 山梨 #005回 プラグイン作成試し

これまでの開発環境を駆使するには、DockerやRailsなど詳しく勉強する必要があるかもしれませんが、一気にやっても多分忘れてしまうので(という理由で)後回しにしつつ、以前ハンズオンでちんぷんかんぷんだったものをトレースしながら、プラグイン作成にそって勉強を少しずつしていこうと思います。

agileware.connpass.com

それでは、こちらのハンズオンを思い出していきたいと思います。

プラグインを作成する

プラグインチュートリアルでは、ジェネレータでプラグインの雛形を作る方法が紹介されているのですが、ジェネレータの情報アップデートがいまいちらしく、失敗する事があるので信用していないという事でした。(ベタに作成することになります)

あと、ハンズオンは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
とかやっても
再起動されたコンテナがすぐに終了してしまう

困って、ググりました。

dev.classmethod.jp

unskilled.site

けど、良くわからず、、、一応ですが、

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のマイグレートとサーバーの起動するのかな。
二重起動とか心配。
(必ずうまくいくわけでは無さそう。すぐに終了しないでうまくいく場合がおおい感じ)

・・・ひとまずこのやり方で進めます。(^_^;)

ここまでの結果

f:id:sioaji2012:20180530234641p:plain


今回は、ここまで。ほとんど進まず(^_^;) 
次回は、いいね!ボタン表示とhookを少し。な感じでしょうか。

先は長いかも。。です。。。