続・Rails 3.2系のRubyを2.0にアップデートするとエラー(解決編)

2週間ほど前に以下のような記事を書きましたが、その続編(解決編)です。

Rails 3.2系のRubyを2.0にアップデートするとエラー | CreativeStyle

おさらい

問題をおさらいすると、

  • Ruby on Rails 3.2.14
  • Ruby 1.9.3-p327

といった環境で動かしていたシステムを

  • Ruby on Rails 3.2.14
  • Ruby 2.0.0-p247

にアップデート(つまりRubyだけ2.0にアップデート)すると、Railsのどのアクションにアクセスしても以下のようなエラーが発生するようになってしまいました。

発生するのはProduction環境のみ。

解決方法 – New RelicのGemをアップデート

結論からいうと、「newrelic_rpm」というNew Relicにデータを送信するためのGemを 3.5.4.34 から 3.6.8.164にアップデートすることで、無事問題が発生しなくなりました。

CHANGELOGを見ると、 バージョン 3.5.8で

が、バージョン3.5.4で

というRuby 2.0関係のアップデートがあったことがわかります。バージョンアップが必要だったんですね。

どうやって解決方法に辿り着いたか

もともとのエラーログでは問題の詳細がわからなかったので、エラーが発生したアクションのソースコードを以下のように修正して、スタックトレースが出力されるようにしました。

で、例外発生時のスタックトレースの中に「newrelic_rpm」の文字を見つけ、上述のCHANGELOGを見てアップデートしたら治った、というわけです。

まとめ

New RelicはProduction環境でのみ使っていたので、問題の解決にものすごく時間がかかってしまいました。常日頃から、使っているGemのアップデート情報はウォッチしておかないといけないですね。

同じ問題で悩んでいるどこかの誰かの参考になれば。

それでは!