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