Help us understand the problem. What is going on with this article?

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

More than 1 year has passed since last update.

背景

はじめての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系を使ってもいいのかもしれない。そんなの尊い。

erii
たこやきを作るのが得意です。
Why not register and get more from Qiita?
  1. We will deliver articles that match you
    By following users and tags, you can catch up information on technical fields that you are interested in as a whole
  2. you can read useful information later efficiently
    By "stocking" the articles you like, you can search right away
Comments
No comments
Sign up for free and join this conversation.
If you already have a Qiita account
Why do not you register as a user and use Qiita more conveniently?
You need to log in to use this function. Qiita can be used more conveniently after logging in.
You seem to be reading articles frequently this month. Qiita can be used more conveniently after logging in.
  1. We will deliver articles that match you
    By following users and tags, you can catch up information on technical fields that you are interested in as a whole
  2. you can read useful information later efficiently
    By "stocking" the articles you like, you can search right away
ユーザーは見つかりませんでした