🙀

add_template_helperを使っているとRails 6.1で動かなくなるぞ

2021/01/24に公開

add_template_helper 何それって思った人、読まなくて良いです。
そのまま知らないままにしておいて問題ないと思います。

Rails 4.0くらいでRailsを始めたニワカなので知らなかったのですが、その昔のRails 2.3とかそれくらいの時代にはAction MailerなどでHelperを使うために add_template_helper を使っていたそうです。
https://guides.rubyonrails.org/v2.3.11/action_mailer_basics.html#using-action-mailer-helpers

で、このメソッドはRails 6.0までは一応存在していた(Rails 3.0くらいからはpublicなAPIじゃなかったはず)のですが、Rails 6.1でついに削除されたようです。
https://github.com/rails/rails/commit/cb3b37b37975ceb1d38bec9f02305ff5c14ba8e9

publicじゃないし使わなければいいだけなんですが、「ActionMailer Helper」みたいな感じで検索するとわりと最近の記事でまで add_template_helper を使うみたいに書かれていて、「おいおいまじかよ」みたいな気持ちになった次第です。
(2021.01.24現在で観測できた範囲では2020年や2019年の記事もありました)

ActionMailerやActionControllerでHelper使いたいときはどうすれば良いか?
最近のRailsはデフォルトで使えるので何も気にしなくても使えるはず。

config.action_controller.include_all_helpers = false みたいなことをしていてデフォルトで使えるようになっていない場合は helper を使えばいいと思います。

2021.08.12追記
ActionMailerでデフォルトでHelperが使えるというのは間違いでした。
ActionControllerはデフォルトで使えますがActionMailerは使えないようですね。
素直に helper に置き換えましょう。

https://api.rubyonrails.org/v6.1.0/classes/ActionController/Helpers.html

公式なドキュメント読もうな。


Discussion