植田と申します。


 便乗報告ですが...

Thu, 11 Oct 2007 16:46:29 +0900 のメールにて、
"Ken Date" <itacchi / gmail.com> さんは書きました :

> こんにちは。伊達と申します。
> 
> 複数スレッドで open-uri の open を使うと、
> uninitialized constant OpenURI::Net (NameError) になります。

 ちょうど自分が書いているプログラムでも同じ問題が出ていたのですが、自分
のプログラムに問題があるのかと思っていました。

 伊達さんの test.rb を 1.8.6 環境で実行したところ、同じエラーが出ました。

ueda@fb5-stable[~ ]ruby -v
ruby 1.8.6 (2007-03-13 patchlevel 0) [i386-freebsd6]
ueda@fb5-stable[~ ]ruby test.rb
/usr/local/lib/ruby/1.8/open-uri.rb:212:in `open_http': uninitialized constant OpenURI::Net (NameError)
        from test.rb:7:in `join'
        from test.rb:7
        from test.rb:7:in `each'
        from test.rb:7

 ruby は FreeBSD の ports から入れています。ただ私の環境では上記エラー
が出る場合と出ない場合があり、常にエラーになるわけではありません。

# スレッドだからでしょうか?


なお次のように net/http を明示的に require するとエラーが出なくなります。

--- test.rb.orig        2007-10-12 09:15:29.000000000 +0900
+++ test.rb     2007-10-12 09:14:50.000000000 +0900
@@ -1,4 +1,5 @@
 require 'open-uri'
+require 'net/http'
 
 threads = (1..9).collect do
        Thread.start do


以上です。

-----
株式会社ネットフォレスト http://www.netforest.ad.jp/
Dr.WEB 担当 植田 裕之   ueda / netforest.ad.jp
tel:045-663-6277 fax:045-663-6278