RackでEbbを動かしてみる。
RackでEbb、やってみたくなった。
以下のサイトを参考にして、Hello, Worldを出してみようとする。
満足せる豚。眠たげなポチ。:CGI から Mongrel まで、Rack で Web アプリを Web サーバから抽象化する
%rackup -s ebb -p 10080 tiny_caller.ru /opt/local/lib/ruby/gems/1.8/gems/rack-0.3.0/bin/rackup:123:in `const_get': uninitialized constant Rack::Handler::Ebb (NameError) from /opt/local/lib/ruby/gems/1.8/gems/rack-0.3.0/bin/rackup:123 from /opt/local/bin/rackup:19:in `load' from /opt/local/bin/rackup:19
動かん。Ebb用のハンドラは無いのだ。
と思ったら、Ebbにあった、ので、無理矢理ロードさせちゃう。
%cd /opt/local/lib/ruby/gems/1.8/gems/rack-0.3.0/lib %diff -u rack.rb rack.rb.new --- rack.rb 2008-05-13 04:21:44.000000000 +0900 +++ rack.rb.new 2008-05-13 03:39:33.000000000 +0900 @@ -87,6 +87,7 @@ autoload :WEBrick, "rack/handler/webrick" autoload :LSWS, "rack/handler/lsws" autoload :SCGI, "rack/handler/scgi" + autoload :Ebb, "/opt/local/lib/ruby/gems/1.8/gems/ebb-0.2.0/ruby_lib/ebb" end end
…無理矢理すぎる。スマートにはどうしたらいいんだろう。
まあ、再度Ebbの起動に挑戦。
%rackup -s ebb -p 10000 tiny_caller.ru Ebb is listening at http://0.0.0.0:4001/ Ebb PID 927
うおー、起動!
あれ?でも-pオプション効いて無いじゃん。
気にせずブラウザでアクセスすると
Rack::Lint::LintError: env missing required key QUERY_STRING /opt/local/lib/ruby/gems/1.8/gems/rack-0.3.0/lib/rack/lint.rb:16:in `assert' /opt/local/lib/ruby/gems/1.8/gems/rack-0.3.0/lib/rack/lint.rb:124:in `check_env' /opt/local/lib/ruby/gems/1.8/gems/rack-0.3.0/lib/rack/lint.rb:120:in `each' /opt/local/lib/ruby/gems/1.8/gems/rack-0.3.0/lib/rack/lint.rb:120:in `check_env' /opt/local/lib/ruby/gems/1.8/gems/rack-0.3.0/lib/rack/lint.rb:35:in `call' /opt/local/lib/ruby/gems/1.8/gems/rack-0.3.0/lib/rack/reloader.rb:25:in `call' /opt/local/lib/ruby/gems/1.8/gems/rack-0.3.0/lib/rack/showexceptions.rb:23:in `call' /opt/local/lib/ruby/gems/1.8/gems/rack-0.3.0/lib/rack/commonlogger.rb:20:in `_call' /opt/local/lib/ruby/gems/1.8/gems/rack-0.3.0/lib/rack/commonlogger.rb:13:in `call' /opt/local/lib/ruby/gems/1.8/gems/ebb-0.2.0/ruby_lib/ebb.rb:53:in `process' /opt/local/lib/ruby/gems/1.8/gems/ebb-0.2.0/ruby_lib/ebb.rb:36:in `start_server' /opt/local/lib/ruby/gems/1.8/gems/ebb-0.2.0/ruby_lib/ebb.rb:36:in `initialize' /opt/local/lib/ruby/gems/1.8/gems/ebb-0.2.0/ruby_lib/ebb.rb:36:in `new' /opt/local/lib/ruby/gems/1.8/gems/ebb-0.2.0/ruby_lib/ebb.rb:36:in `start_server' /opt/local/lib/ruby/gems/1.8/gems/ebb-0.2.0/ruby_lib/ebb.rb:235:in `run' /opt/local/lib/ruby/gems/1.8/gems/rack-0.3.0/bin/rackup:154 /opt/local/bin/rackup:19:in `load' /opt/local/bin/rackup:19 Ebb Error! NoMethodError undefined method `empty?' for nil:NilClass /opt/local/lib/ruby/gems/1.8/gems/rack-0.3.0/lib/rack/commonlogger.rb:48:in `each' /opt/local/lib/ruby/gems/1.8/gems/ebb-0.2.0/ruby_lib/ebb.rb:83:in `process' /opt/local/lib/ruby/gems/1.8/gems/ebb-0.2.0/ruby_lib/ebb.rb:36:in `start_server' /opt/local/lib/ruby/gems/1.8/gems/ebb-0.2.0/ruby_lib/ebb.rb:36:in `initialize' /opt/local/lib/ruby/gems/1.8/gems/ebb-0.2.0/ruby_lib/ebb.rb:36:in `new' /opt/local/lib/ruby/gems/1.8/gems/ebb-0.2.0/ruby_lib/ebb.rb:36:in `start_server' /opt/local/lib/ruby/gems/1.8/gems/ebb-0.2.0/ruby_lib/ebb.rb:235:in `run' /opt/local/lib/ruby/gems/1.8/gems/rack-0.3.0/bin/rackup:154 /opt/local/bin/rackup:19:in `load' /opt/local/bin/rackup:19
どうもRackが最低限必要とする環境変数が無いらしい。他のを参考にして追加。
%cd /opt/local/lib/ruby/gems/1.8/gems/ebb-0.2.0/ruby_lib %diff -u ebb.rb ebb.rb.new --- ebb.rb 2008-05-13 04:20:51.000000000 +0900 +++ ebb.rb.new 2008-05-13 04:11:10.000000000 +0900 @@ -109,7 +109,9 @@ 'rack.errors' => STDERR, 'rack.url_scheme' => 'http', 'rack.multiprocess' => false, - 'rack.run_once' => false + 'rack.run_once' => false, + 'rack.multithread' => true, + 'QUERY_STRING' => '' } def env
Hello, Worldデター!