From: Kouhei Yanagita Date: 2006-11-24T21:06:39+09:00 Subject: [ruby-dev:29945] Cygwin で Resolv.getaddress が失敗する こんにちは。柳田です。 WindowsXP Home Edition SP2 上の Cygwin 版 Ruby 1.8.5 において、 Resolv.getaddress がエラーになります。 % uname -a CYGWIN_NT-5.1 yell 1.5.21(0.156/4/2) 2006-08-09 13:38 i686 Cygwin % ruby -v -rresolv -e 'p Resolv.getaddress("www.ruby-lang.org")' ruby 1.8.5 (2006-08-25) [i386-cygwin] /usr/local/lib/ruby/1.8/resolv.rb:299:in `open': can't convert nil into String (TypeError) from /usr/local/lib/ruby/1.8/resolv.rb:299:in `lazy_initialize' from /usr/local/lib/ruby/1.8/thread.rb:135:in `synchronize' from /usr/local/lib/ruby/1.8/resolv.rb:295:in `lazy_initialize' from /usr/local/lib/ruby/1.8/resolv.rb:337:in `each_address' from /usr/local/lib/ruby/1.8/resolv.rb:244:in `each_address' from /usr/local/lib/ruby/1.8/resolv.rb:243:in `each' from /usr/local/lib/ruby/1.8/resolv.rb:243:in `each_address' from /usr/local/lib/ruby/1.8/resolv.rb:227:in `getaddress' from /usr/local/lib/ruby/1.8/resolv.rb:199:in `getaddress' from -e:1 これは、Cygwin では Windows の環境変数名が大文字になっているというのが原因のようです。 % ruby -rwin32/registry -e 'p Win32::Registry.expand_environ("%SystemRoot%")' "%SystemRoot%" % ruby -rwin32/registry -e 'p Win32::Registry.expand_environ("%SYSTEMROOT%")' "C:\\WINDOWS" Cygwin では /etc/hosts が存在するので (シンボリックリンクになっている)、 Cygwin でも Resolv::Hosts::DefaultFileName を /etc/hosts にしてよいのではないかと思ったのですが、 どうでしょうか。 -- Kouhei Yanagita