Rails6での開発で “DEPRECATION WARNING: Single arity template handlers are deprecated.” が表示された際の対処法とその原因についてご紹介します!

私もそうだったのですが、Rails6のリリースを受け、既存のプロジェクトのRailsをアップグレードした方も多いのではないでしょうか?

「無事にアップグレードが完了し、特にエラーも発生していない、よし!」と思ってよくよくログを見てみると以下のメッセージが表示されていたのではないでしょうか?

"DEPRECATION WARNING: Single arity template handlers are deprecated."

WARNING” である以上、いますぐに影響の出るものではありませんが、毎回サーバーを立ち上げる度に表示されるのは気になりますし、技術的負債を残しておくのもスッキリしないですよね。

今回はそんな状況を打破すべく、”DEPRECATION WARNING: Single arity template handlers are deprecated.” の原因と解決方法についてご紹介させていただきます。
(※あまりオススメはしませんが、結論のみ知りたい方はページ下部までスキップしてご確認ください。)

なお、Railsについては以下の記事にてご紹介していますので、こちらも併せてご確認くださいね。

おすすめ記事

今回は、いまやWebアプリ開発の定番フレームワークとなりつつあるRuby on Rails(以下「Rails」とします)についてお話しさせて頂きます。 Web上で公開されているアプリケーションの中にもRailsを使用しているものは非[…]

railsロゴ

レバテックフリーランス … 業界最大級の案件数業界トップクラスの高単価報酬を誇る最大手のサービスです。実績豊富なコーディネーターが丁寧な対応をしてくれるため、案件の無理な提案はありません。フリーランスで生きていくためにはまず登録しておきましょう。
MidWorks … フリーランス賠償責任保障生命保険の折半など、フリーランスでありながらも正社員並みの保障を受けられるのが特徴です。また、経験豊富なキャリアコンサルタントによる手厚いサポートも受けられるため、安定したフリーランス生活を送りたい方には特におすすめのサービスです。
ポテパンフリーランス … IT業界・技術に詳しいコンサルタントが担当してくれるため、こちらの要望をきちんと理解した上で案件を紹介してくれます。また、案件情報のみならず、フリーランスのイロハについても教えてくれるため、フリーランスとして初めて活動される方には特におすすめのサービスです。

レバテックキャリア … ITエンジニアが利用したい転職エージェントNo.1にも選ばれており、年収600万円以上のハイクラス求人を5,000件以上も保有しています。エンジニアが転職を考えた時にまず初めに登録しておくべきサービスです。
Tech Stars Agent … Tech Stars Agentでは、担当エージェントが全員エンジニア出身のため、スキルやキャリアを見据えたきめ細かな転職支援が受けられます。運営元の株式会社Branding Engineerは、独立支援サービス「MidWorks」も展開しているため、独立を視野に入れたサポートも受けられます
転職ドラフト … 年収UP率93.8%/平均年収UP額126万円と圧倒的な年収UP率を誇るイベント型のエンジニア向け 転職サービスです。毎月1回開催され、厳選された優良IT/Web系企業約150社からダイレクトスカウトを受け取ることができます。年収アップを目指す方は登録必須です。


まずは日本語に直しましょう

上記の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:
>> Coffee::Rails::TemplateHandler.call(template)
To:
>> Coffee::Rails::TemplateHandler.call(template, source)

こちらを日本語に直してみると概ね以下の通りです。

警告(非推奨):シングルアリティテンプレートハンドラ(Single arity template handlers)は非推奨です。テンプレートハンドラには、ビューオブジェクトとそのソースの2つのパラメーターが必要になります。

"Coffee::Rails::TemplateHandler.call(template)" という記載を "Coffee::Rails::TemplateHandler.call(template, source)" に変更してください。

何となく、coffee-railsで元々使っていた
Coffee::Rails::TemplateHandler.call(template)
という記載(=”Single arity template handlers”)を変更しないといけない、ということは分かるかと思います。

coffee-railsはgemですので、そのgemを利用している我々開発者ができることといえば、gemのupdateのみになりますね。
(※gem自体のバグという可能性もありますが、確率としては低いため、まずはgemのupdateを試しましょう。)

coffee-railsのアップデート

アップデートするにしてもそのバージョンを調べる必要がありますね。

そこで色々と探してみると、Githubに類似の問題に関するISSUEが立てられていました。

https://github.com/rails/jbuilder/issues/452

こちらのISSUE内に「5.0.0にアップデートすれば大丈夫だよ。(原文: “update your coffee-rails gem version to 5.0.0. It should resolve your problem.”)」という記載がありますね。

この通りにGemfileの記載を以下のように変更しましょう。

gem 'coffee-rails', '5.0.0'

その後、今回はgemのバージョンを変更したため、”bundle update” を実行しましょう。

その後、再度サーバーを起動させてみるとWARNINGが表示されなくなっているはずです。

そもそもcoffee-railsを使っていない場合

そもそもプロジェクト内でcoffee-railsを使用していない場合はGemfileからcoffee-railsを削除し、”bundle install” を実行しましょう。

その後、以下のようなエラー文が出てしまう方もいらっしゃるかと思います。

LoadError (cannot load such file -- coffee_script)

これはRailsにキャッシュが残ってしまっているためですので、以下のコマンドを実行してキャッシュを削除してください。

bundle exec rails tmp:cache:clear

これで無事サーバーが立ち上がるかと思います。

結論

coffee-railsのバージョンを上げるか、そもそも不要であればcoffee-railsを削除してしまいましょう。

前者の場合であればGemfileの記載を以下のように変更して bundle update を実行しましょう。

gem 'coffee-rails', '5.0.0'

後者の場合であればGemfileからcoffee-railsを削除し、bundle install を実行しましょう。

LoadError (cannot load such file — coffee_script)” というエラーが出てしまう場合はさらに以下を実行しましょう。

bundle exec rails tmp:cache:clear

お仕事の途中ですが、少し一休みして、転職独立について考えてみませんか🙌?

現役エンジニアが選ぶおすすめの転職エージェント11選【成功談・失敗談もあります】

レバテックフリーランスの評判ってどう?【現役エンジニアが徹底解説します】

MidWorks(ミッドワークス)の評判ってどう?【現役エンジニアが徹底解説します】

日々の業務に追われて自分を見失わないよう、
定期的にキャリアを振り返るようにしておきましょう🤲

最後に

Rails6へアップグレードした際の”DEPRECATION WARNING: Single arity template handlers are deprecated.” のメッセージについて、その原因と対処法をご紹介しましたがいかがでしたか?

エラーに直面した際にはただそのエラーを解消するだけでなく、その背景にある用語や技術についても確認しておくようにしましょう!

このブログを通じて少しでも「傍(はた)を楽(らく)にする」ことができていれば嬉しく思います。

最後まで読んで頂きありがとうございました。