Railsでresolvを使うときにrequireするか

- (2 min read)

結論

require 'resolv'する

背景

Railsを書いていて、resolvを使う場面があった。開発環境ではrequire 'resolv'なしでも動いていたが、ステージング環境で試したところuninitialized constant Resolvが出た。確認したところ開発環境ではeventmachinerequireされ、eventmachinethinrequireされていた。thinは開発環境だけで利用していたため開発環境とステージング環境で挙動が変わった。

ところで、すべての環境でthinを使っていてもrequire 'resolv'は入れておいたほうがよい。アプリケーションサーバーの内部で何をrequireしているかはアプリケーションコード側からは気にするべきではないので。

調査したときはresolvに適当に例外になるコードを入れてrequire 'resolv'を失敗させてrequireしている箇所を確認したが、もう少し楽な方法はあるだろうか。