Tech Racho エンジニアの「?」を「!」に。
  • 開発

Railsで画面が真っ白に!

PHPだと開発中にdisplay_errorsをOFFにしてしまい、「画面が真っ白だ!」という事態によく遭遇したものですが、Railsに移行してから久しぶりに画面真っ白でちょっとはまりました。

  • Ruby 1.9.3 + Rails 3.2.3 + development環境
  • webrick/unicornどちらでも発生
  • 通常画面がすべて真っ白(render結果が空)
  • render :text => 'ABC' なども出力されない
  • どこにもエラーなどは出ない
  • 例外をraiseした際のbacktrace画面は、正常に表示される

結論から言うと、トップレベルにeachメソッドが定義されているとこの現象が発生するようです。

# config/initializers/test.rb
def each
end

そんなことやらないよ!と思うのですが、便利そうだったrspec_multi_matchersのgemがそんなことをやっていたため...
https://github.com/gregwebs/rspec-multi-matchers/
https://github.com/gregwebs/rspec-multi-matchers/blob/master/lib/match_each.rb

現状、Rails3で上記Gemは使わないのが無難ですね。
Content-Lengthやchunked周りも少し怪しい挙動で困っていたので、良い機会だし、今度ActionDispatchを読み解いてみようと思います。


CONTACT

TechRachoでは、パートナーシップをご検討いただける方からの
ご連絡をお待ちしております。ぜひお気軽にご意見・ご相談ください。