青山と申します。

WebrickでCGIを動かそうとしてますが、どうも動きません。

次のようなサーバスクリプトを作成しました。

#-*- coding: utf-8 -*-
require 'webrick'
include WEBrick
module WEBrick::HTTPServlet
  FileHandler.add_handler('rb', CGIHandler)
end
server = WEBrick::HTTPServer.new({
  :BindAddress => '127.0.0.1',
  :Port => '3000',
  :DocumentRoot => 'C:/home',
  :CGIInterpreter => 'C:/usr/ruby-1.9.2/bin/ruby.exe'})
Signal.trap(:INT) do
  server.shutdown
end
server.start

C:/homeに次のようなCGIスクリプトをcgi.rbというファイル名作成しました。

#-*- coding: utf-8 -*-
require 'cgi'
require 'dbi'
cgi = CGI.new
print(cgi.header({'type' => 'text/html'}))
print('<html><body>hello</body></html>')

コマンドプロンプトからサーバスクリプトを起動し、
ブラウザからhttp://localhost:3000/cgi.rbにアクセスすると
下記のようなメッセージをコマンドプロンプトに表示してCGIが起動しません。

[2011-01-12 17:37:12] INFO  WEBrick 1.3.1
[2011-01-12 17:37:12] INFO  ruby 1.9.2 (2010-12-25) [i386-mingw32]
[2011-01-12 17:37:12] INFO  WEBrick::HTTPServer#start: pid=3548 port=3000
[2011-01-12 17:37:19] ERROR CGIHandler: C:/home/cgi.rb:
C:/usr/ruby-1.9.2/lib/ruby/1.9.1/rubygems/config_file.rb:56:in `join':
can't convert nil into String (TypeError)
        from C:/usr/ruby-1.9.2/lib/ruby/1.9.1/rubygems/config_file.rb:56:in
`<class:ConfigFile>'
        from C:/usr/ruby-1.9.2/lib/ruby/1.9.1/rubygems/config_file.rb:28:in
`<top (required)>'
        from <internal:lib/rubygems/custom_require>:29:in `require'
        from <internal:lib/rubygems/custom_require>:29:in `require'
        from C:/usr/ruby-1.9.2/lib/ruby/1.9.1/rubygems.rb:1110:in
`<top (required)>'
        from <internal:lib/rubygems/custom_require>:29:in `require'
        from <internal:lib/rubygems/custom_require>:29:in `require'
        from <internal:gem_prelude>:167:in `load_full_rubygems_library'
        from <internal:gem_prelude>:217:in `try_activate'
        from <internal:lib/rubygems/custom_require>:32:in `rescue in require'
        from <internal:lib/rubygems/custom_require>:29:in `require'
        from C:/home/cgi.rb:3:in `<main>'
[2011-01-12 17:37:19] ERROR CGIHandler: C:/home/cgi.rb exit with 1

環境は、
Windows7(32bit) + ruby 1.9.2p136 (2010-12-25 revision 30365) [i386-mingw32]
で、Ruby のバイナリーはMinGW+MSYSを使用して自分でコンパイルしたものです。

Windows7(32bit) + ruby 1.9.1p430 (2010-08-16 revision 28998) [i386-mingw32]
ではこのような現象は発生しません。

rubygemsでインストールしたものをrequireすると発生するようです。

gem list は次のとおりです。
*** LOCAL GEMS ***

dbi (0.4.5)
deprecated (3.0.0)
minitest (2.0.2, 1.6.0)
rake (0.8.7)
rdoc (3.4, 2.5.8)