Redmine(trunk)でZeitwerkへのプラグイン対応状況を調べる

※2022/05/26 更新

[Redmine Advent Calendar 2021](https://adventar.org/calendars/6283)の 25日用の記事です。

今年も最新Redmineを追いかけて、落とし穴を踏んでるお話を書きます。

Zeitwerk に対応した Redmine(trunk) でプラグイン対応状況を確認しました。
問題の変更点は [こちらのチケット](https://www.redmine.org/issues/32938) をご覧ください

```
Extract Redmine::PluginLoader from Redmine::Plugin (#32938).
```
※RedMica2.0にはZeitwerk対応は取り込まれていませんが、いずれ直面する問題です。

プラグインの死因、どう対処すればよいのか、は8日目の tohosaku さんの [プラグイン を Redmine 4.* でも 5.0 でも動かすためには](https://zenn.dev/tohosaku/articles/3ccdeb2f38bb07) をご覧ください。

# 確認環境(2022/05/26 20:06時点)

```
Environment:
  Redmine version                5.0.1.devel.21603
  Ruby version                   2.7.3-p183 (2021-04-05) [x86_64-linux]
  Rails version                  6.1.6
  Environment                    production
  Database adapter               PostgreSQL
  Mailer queue                   ActiveJob::QueueAdapters::AsyncAdapter
  Mailer delivery                smtp
Redmine settings:
  Redmine theme                  Farend_fancy (includes JavaScript)
```

# 対応状況(2022/05/26 20:06時点)

| プラグイン | バージョン | trunk(rev.21603)対応 |備考 |
|:----------------|:----------------:|:-----:|:-----:|
|[full_text_search](https://github.com/clear-code/redmine_full_text_search)|1.0.4|○|2022/4/12にRails6&Zeitwerk対応|
|[redmica_ui_extension](https://github.com/redmica/redmica_ui_extension)|0.3.2|○|masterは対応。tag v0.2.0/v0.2.1 は非対応|
|[redmine_absolute_dates](https://github.com/suer/redmine_absolute_dates)|0.0.4|○||
|[redmine_banner](https://github.com/agileware-jp/redmine_banner)|0.3.4|△|masterで対応|
|[redmine_code_review](https://github.com/haru/redmine_code_review)|1.1.0|○||
|[redmine_issue_assign_notice](https://github.com/onozaty/redmine_issue_assign_notice)|2.1.0|○|2.0.0で対応|
|[redmine_issue_templates](https://github.com/agileware-jp/redmine_issue_templates)|1.1.0|○|※2|
|[redmine_jstoolbar_ext](https://github.com/tleish/redmine_jstoolbar_ext)|0.2.1|×|※3|
|[redmine_jstoolbar_ext_buttons](https://github.com/tleish/redmine_jstoolbar_ext_buttons)|0.2.1|×|※3|
|[redmine_message_customize](https://github.com/ishikawa999/redmine_message_customize)|0.1.3|○|0.1.2で対応|
|[redmine_searchable_selectbox](https://github.com/ishikawa999/redmine_searchable_selectbox)|0.1.6|×|redmica_ui_extensionに移行しましょう|
|[redmine_theme_changer](https://github.com/haru/redmine_theme_changer)|0.5.0|○||
|[redmine_vividtone_my_page_blocks](https://github.com/vividtone/redmine_vividtone_my_page_blocks)|2017/07/05|○||
|[redmine_wiki_extensions](https://github.com/haru/redmine_wiki_extensions)|0.9.3|○|0.9.3で対応|
|[redmine_wiki_index_tree_view](https://github.com/basyura/redmine_wiki_index_tree_view)|0.0.1|×|※5|
|[redmine_wiki_lists](https://github.com/tkusukawa/redmine_wiki_lists)|0.0.11|○||
|[redmine_wiki_page_tree](https://github.com/ledsun/redmine_wiki_page_tree)|0.0.2|×|※5|
|[redmine_work_time](https://github.com/tkusukawa/redmine_work_time)|0.4.1|○||
|[redmine_xlsx_format_issue_exporter](https://github.com/two-pack/redmine_xlsx_format_issue_exporter)|0.1.7|○|※6|
|[view_customize](https://github.com/onozaty/redmine-view-customize)|3.0.0|○|3.0.0で対応|



<font color="red">※LycheeRedmineはalmへのディレクトリ関係が解決できないため全て死にます。</font>
## 備考
### ※1 full_text_search
Zeitwerk以前に、Rails6に未対応。
issueをあげたところ最終的には対応するとのことですので、Redmine5.0のリリースに合わせての改修を期待します
https://github.com/clear-code/redmine_full_text_search/issues/97
→<font color="red">2022/04/12のアップデートで対応していただけました！</font> RedMica2.0/Redmine(trunk)いずれでも動いています！


### ※2 redmine_banner,redmine_issue_templates
アジャイルウェアのリポジトリ。「Zeitwerkで動かなくなるよ！」とプッシュ済みなので、Redmine5.0のリリースに合わせての改修されると思っています。
→redmine_bannerは2022/03/25に対応。redmine_issue_templatesは2022/03/28に対応。

### ※3 redmine_jstoolbar_ext,redmine_jstoolbar_ext_buttons
オリジナルのリポジトリはすでにアーカイブ済み。fork先に期待するしか…

2022/05/26
自分でforkしてみました。
https://github.com/ryouma-nagare/redmine_jstoolbar_ext
https://github.com/ryouma-nagare/redmine_jstoolbar_ext_buttons

### ※4 redmine_theme_changer
~~redmine_code_review、redmine_wiki_extensions と同じく[iidaさん](https://github.com/haru/)のリポジトリなので対応を期待しています。~~
対応済みです。[iidaさん](https://github.com/haru/)ありがとうございます！

### ※5 redmine_wiki_index_tree_view,redmine_wiki_page_tree
どちらも最終コミットが古いので期待薄…

### ※6 redmine_xls_export
~~対応を祈ってます…~~
2022/05/25 [redmine_xlsx_format_issue_exporter](https://github.com/two-pack/redmine_xlsx_format_issue_exporter) が対応しているので、そちらに移行しましょう。

# 終わりに
Redmine5.0 は Rails6 で動くようになるというのは以前から聞いていましたが、trunk 環境でも full_text_search 以外は問題なく動いていたので楽観視していました。
しかし、降って湧いた Zeitwerk対応でかなりのプラグインが死ぬハメに…

tohosakuさんには、[redmine.tokyo 第21回勉強会](https://redmine.tokyo/projects/shinared/wiki/%E7%AC%AC21%E5%9B%9E%E5%8B%89%E5%BC%B7%E4%BC%9A) のグループディスカッションで対応方法、あるべきプラグイン開発体制などの深い話を聞かせていただき、感謝しております。

Redmineを使い続けるためにプラグインは欠かせない存在です。
うち捨てられたプラグインは諦めるか、forkを待つしかありませんが、Zeitwerk対応していただいたプラグインの作者には感謝することしきりです。

Redmineユーザは issue報告や、[GitHub Sponsors](https://docs.github.com/ja/sponsors/getting-started-with-github-sponsors/about-github-sponsors) 等でプラグイン作者を支援していきましょう！