こんにちは。伊達と申します。

複数スレッドで open-uri の open を使うと、
uninitialized constant OpenURI::Net (NameError) になります。

open-uri がメソッド内で net/http を require しているのが関係しているようですが、
深追いできていません。
報告だけですみません。

ruby は $ ./configure --enable-shared --program-suffix=19 で作っています。

$ cat test.rb
require 'open-uri'
threads = (1..2).collect do
  Thread.start do
    open('http://www.google.com/')
  end
end
threads.each{|i|i.join}

$ ruby19 -v test.rb
ruby 1.9.0 (2007-10-11 patchlevel 0) [i686-linux]
/usr/local/lib/ruby/1.9/open-uri.rb:35: warning: method redefined;
discarding old open
/usr/local/lib/ruby/1.9/net/http.rb:1107: warning: instance variable
@sspi_enabled not initialized
/usr/local/lib/ruby/1.9/net/http.rb:1107: warning: instance variable
@sspi_enabled not initialized
/usr/local/lib/ruby/1.9/open-uri.rb:245:in `open_http': uninitialized
constant OpenURI::Net (NameError)
        from /usr/local/lib/ruby/1.9/open-uri.rb:709:in `buffer_open'
        from /usr/local/lib/ruby/1.9/open-uri.rb:193:in `block in open_loop'
        from /usr/local/lib/ruby/1.9/open-uri.rb:191:in `catch'
        from /usr/local/lib/ruby/1.9/open-uri.rb:191:in `open_loop'
        from /usr/local/lib/ruby/1.9/open-uri.rb:137:in `open_uri'
        from /usr/local/lib/ruby/1.9/open-uri.rb:611:in `open'
        from /usr/local/lib/ruby/1.9/open-uri.rb:30:in `open'
        from test.rb:5:in `block (2 levels) in <main>'