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

【Rails6】DEPRECATION WARNING: Single arity template handlers are deprecated. Template handlers must now accept two parameters, the view object and the source for the view object.

Rails6アップデート後、rails起動時に以下のWarningを吐くようになってしまったのを調査・解決したメモです。

DEPRECATION WARNING: Single arity template handlers are deprecated. Template handlers must
now accept two parameters, the view object and the source for the view object.
Change:
  >> #<#<Class:0x00007ffbbcf57de0>:0x00007ffbbf219590>.call(template)
To:
  >> #<#<Class:0x00007ffbbcf57de0>:0x00007ffbbf219590>.call(template, source)

TL;DR

$ bundle update slim

で解決。

環境

  • Ruby: 2.6.3
  • Rails: 5.2.4.1 => 6.0.2.1 へアップデート

なんだこのWarning :thinking:

まずはメッセージの内容を見てみます。
template handler 周りのインタフェースに変更が入って、 Single arity template handlers が非推奨になったようです。なるほど、わからん。
https://github.com/rails/rails/blob/v6.0.2.1/actionview/lib/action_view/template/handlers.rb#L46-L56

推奨される修正内容が、

Change:
  >> #<#<Class:0x00007ffbbcf57de0>:0x00007ffbbf219590>.call(template)

ということで、自前のアプリケーションのコードが原因ではなさそう。
どうやら view 周りのGemが怪しそうだぞ、とアタリをつけます。   

slim が怪しい? :thinking:

テンプレートエンジンに slim を使用していたので、 slim の issue を漁ってみます。

https://github.com/slim-template/slim-rails/issues?utf8=%E2%9C%93&q=is%3Aissue+rails+6

image.png

それっぽい雰囲気の issue を発見。しかもClose済み。
https://github.com/slim-template/slim-rails/issues/162

中を見てみると、この issue で報告されているエラー内容とは違う模様でした。
しかし、コメントをサーっと流し見していると、

https://github.com/slim-template/slim-rails/issues/162#issuecomment-530944015
image.png

こんな コメントがあったので、 https://github.com/slim-template/slim/issues/827 も見てみます。

image.png

おーこれこれ。同じWarningだ。
コメントを見ていると、

https://github.com/slim-template/slim/issues/827#issuecomment-478240650
image.png

どうやら、 slim が依存している temple が怪しそう。

ちなみに使用していた temple のバージョンは 0.8.0 でした。

temple が怪しい? :thinking:

同じように temple の issue も漁ってみるとすぐ見つかりました。
https://github.com/judofyr/temple/issues/122
https://github.com/judofyr/temple/pull/121

修正内容を見てみると、おーなるほどね、という感じ。
https://github.com/judofyr/temple/pull/121/files
image.png

すでに修正版がリリース済みなので、
以下のコマンドを実行して slim ごと temple をアップデート。

$ bundle update slim

無事、Warningを解消できました。

mishiwata1015
主に Ruby, Rails, React を書いています。Qiitaの開発をしています。ボードゲームにハマっていて、妻や同僚とよく遊んでます。
increments
「エンジニアを最高に幸せにする」ために Qiita、Qiita Team、Qiita Jobs を開発・運営しています。
https://increments.co.jp/
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
ユーザーは見つかりませんでした