LoginSignup
2

More than 5 years have passed since last update.

[docker/redmine4.0.1]プラグイン"easy gantt"を入れようとすると怒られる

Last updated at Posted at 2019-02-16

背景

はじめてのDockerではじめてのRedmine(4.0.0)をインストール。
ここまでは無事だった。社内のひとからもアクセスしてもらって一安心。ちゃんと動く。

しかし、新たなハードルとして、デフォルトであの使いづらそうなUIをどうにかして少しでも美しく整えたい。そうだ、Redmineのプラグインだ!!

しかし、人気プラグイン"easy gantt"がすんなり入れられなかったときの話。

環境

Before

- docker
- Redmine 4.0.1 (latest)
- Rails 5.2.2
- easy gantt

道のり

プラグインをplugins/の中に入れてbundle installしたあとに下記を実行し、エラーが発生した。

$ bundle exec rake redmine:plugins:migrate RAILS_ENV=production
rake aborted!
NoMethodError: undefined method `to_prepare' for ActionDispatch::Callbacks:Class
Did you mean?  to_param

さっそくググってみると

to_prepareコールバックは、ActiveSupport::Reloaderに移ったみたいですね。たぶんほとんどのプラグインで修正が必要かと。
(該当のコードの修正でいうと ActiveSupport::Callbacks.to_prepare に書き換える、ではダメかもしれません。本体のコード読む限りでは4系でdelegateしてたのがしなくなっているように見えた。ActiveSupport::Reloader.to_prepareかな?ちょっとやってみないとわからないですが。)
あと、4系以前と5系の両対応する必要がありますね。

引用) https://github.com/agileware-jp/redmine_work_days/issues/16

とある。要するにRedmine4.0.0で使われているRails5.2.2では"easy gantt"で使われている関数のバージョンが合わずにエラーが起きてしまうということだろう。では、Rails4.2.11はどうだろうかと思い、Gemfileを書き換えてRailsをダウングレードしたが今度は他の部分で『勝手にダウングレードしないでね』と言わんばかりにエラーが発生。そうですよね・・

本当はGemfileを読み解いたり、Rubyで修正するのが正統派なんだろうけれども、時間もないし、知識も足りない。

ってことで、結局Redmineのバージョンを下げることで解決した

解決法

$ docker rm {{コンテナID}}
$ docker rmi {{イメージ ID}}

混同しないように前もって既存のコンテナ・イメージを消しちゃう。

https://hub.docker.com/_/redmine?tab=tags にアクセスして、良さそうなバージョン(正しくは"タグ")を選ぶ。今回は3.4.8を選びました。

$ docker pull redmine:3.4.8
docker run -p 3000:3000 --name redmine redmine:3.4.8

あとはホスト上にある"easy gantt"のプラグインディレクトリをDocker側に転送。

https://qiita.com/gologo13/items/7e4e404af80377b48fd5
上記を参考に転送しました。

$ docker exec -i -t {{コンテナ名}} bash
$ bundle install
$ bundle exec rake redmine:plugins:migrate RAILS_ENV=production

して、Exitし、docker restartでDockerを再起動したら"easy gantt"が入っていることを確認できると思います。

まとめ

Redmine4系だと"easy gantt"がうまく入らないので、"easy gantt"使いたい方はRedmine3系以下にダウングレードして使おう。

もちろん、ひとつひとつ紐解いて4系を使ってもいいのかもしれない。そんなの尊い。

Register as a new user and use Qiita more conveniently

  1. You get articles that match your needs
  2. You can efficiently read back useful information
  3. You can use dark theme
What you can do with signing up
2