是非に及ばず

プログラミングに関する話題などを書いていきます(主にRailsやAndroidアプリ開発について)

jpmobileでundefined method `extract_handler_and_format_and_variant'という例外が発生する場合の対処方法

rails 4.0.8とjpmobile 4.1.2の組み合わせで以下のような例外が発生するようになった。

undefined method `extract_handler_and_format_and_variant' for #<Jpmobile::Resolver:0x007fc644bf8350>

解決したので書いておく。

エラーの原因

Jpmobile::ResolverはActionViewのextract_handler_and_format_and_variantを利用しているのだが、undefined methodという事でこのメソッドがなくなってしまったようだ。
extract_handler_and_formatという似た名前のメソッドを見つけたので、これ使えばいいんじゃね?という適当な理由で試してみた。
無事動いたので、一時しのぎ的な対応としては十分だろう。

具体的な対処方法

このファイルを作ってRailsを再起動すれば解決した。
config/initializers/jpmobile_resolver_patch.rb

class Jpmobile::Resolver
  def extract_handler_and_format_and_variant(template, formats)
    extract_handler_and_format(template, formats)
  end
end

これで問題なく動いているが本当にこれで正しいのかは分からない。