2011年1月13日

[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('<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)


投稿者 xml-rpc : 2011年1月13日 11:00
役に立ちました?:
過去のフィードバック 平均:(0) 総合:(0) 投票回数:(0)
本記事へのTrackback: http://hoop.euqset.org/blog/mt-tb2006.cgi/101257
トラックバック
コメント
コメントする




画像の中に見える文字を入力してください。