うちのプロジェクトでRailsのバージョンを4.2にしたら、gem respondersを入れようと書かれていたので、入れたのですが、エラーで落ちました…。
やったこと
まず、respondersのリポジトリに書かれている通りにしました。
bundle exec rails g responders:install
これで、lib/application_responder.rbが作られます。
application_controller.rbの先頭を書いておきます。
require "application_responder" class ApplicationController < ActionController::Base self.responder = ApplicationResponder respond_to :html, :json # 略 end
この状態で、spring rails sを実行してサーバを立ち上げ、deviseのログインページに移動しようとしたところ、エラー発生。
ApplicationResponderクラスにcallメソッドがないと言われます。しかし、ApplicationResponderクラスの親クラスである、ActionController::Responderクラスを見ると、ちゃんとcallメソッドがあります…。
Rails4.2とrespondersばっかり怪しんで調べていたんですが、RubyMineで親クラスを見ようとしたときに、候補としてaxlsx_railsのActionController::Responderクラスも表示されました。まさか…と思ってこれをコメントアウトしたところ、ページが表示されました。原因は、axlsx_railsのバージョンが0.2.0だったことです。なので、axlsx_railsのバージョンを0.3.0にしましょう!
bundle update axlsx_rails
以上です!