From: "青山彰" Date: 2011-01-13T11:00:45+09:00 Subject: [ruby-list:47753] Windows上のWebrickでCGI 青山と申します。 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('hello') コマンドプロンプトからサーバスクリプトを起動し、 ブラウザから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 `' from C:/usr/ruby-1.9.2/lib/ruby/1.9.1/rubygems/config_file.rb:28:in `' from :29:in `require' from :29:in `require' from C:/usr/ruby-1.9.2/lib/ruby/1.9.1/rubygems.rb:1110:in `' from :29:in `require' from :29:in `require' from :167:in `load_full_rubygems_library' from :217:in `try_activate' from :32:in `rescue in require' from :29:in `require' from C:/home/cgi.rb:3:in `
' [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)