結論
require 'resolv'
する
背景
Railsを書いていて、resolvを使う場面があった。開発環境ではrequire 'resolv'
なしでも動いていたが、ステージング環境で試したところuninitialized constant Resolv
が出た。確認したところ開発環境ではeventmachineでrequire
され、eventmachine
はthinでrequire
されていた。thinは開発環境だけで利用していたため開発環境とステージング環境で挙動が変わった。
ところで、すべての環境でthinを使っていてもrequire 'resolv'
は入れておいたほうがよい。アプリケーションサーバーの内部で何をrequireしているかはアプリケーションコード側からは気にするべきではないので。
調査したときはresolvに適当に例外になるコードを入れてrequire 'resolv'
を失敗させてrequireしている箇所を確認したが、もう少し楽な方法はあるだろうか。