以下の内容はhttps://unageanu.hatenablog.com/entry/20090525/1243268383より取得しました。


Sinatraを0.9.2にupdateするとWEBrickで動作しなくなった

Sinatraを0.9.2にupdateすると、以下のエラーになって組み込みのWEBrickで動かなくなってしまった。

/usr/lib/ruby/gems/1.8/gems/sinatra-0.9.2/lib/sinatra/base.rb:930:in `detect_rack_handler': Server handler (thin,mongrel,webrick) not found. (RuntimeError)
    from /usr/lib/ruby/gems/1.8/gems/sinatra-0.9.2/lib/sinatra/base.rb:862:in `run!'
    from /usr/lib/ruby/gems/1.8/gems/sinatra-0.9.2/lib/sinatra/main.rb:34
    ...

sinatra/base.rbの921行目「detect_rack_handler」で「対応するサーバーがRack::Handlerに登録されていない」エラーになっている。

原因

Rack::Handlerには、利用可能なサーバーとして"mongrel"や"webrick"が登録されている。sinatraはサーバーとして「thin,mongrel,webrick」を探しにいくが、途中(sinatra/base.rbの925行目)でなぜか「capitalize」して探索している。このため、対応するサーバーがヒットせず、エラーになってしまっている。んー。普通にバグっぽいなー。

対策

以下のおまじないを最初の方に書いておけば、問題をとりあえず回避できます。

Rack::Handler.register 'Webrick', 'Rack::Handler::WEBrick'

Rack::Handlerに「capitalize」後のサーバー名でも登録しておくという仕組み。全体は↓のような感じになります。

require 'rubygems'
require 'sinatra'

Rack::Handler.register 'Webrick', 'Rack::Handler::WEBrick'

get( "/" ) {
  'Hello world!'
}



以上の内容はhttps://unageanu.hatenablog.com/entry/20090525/1243268383より取得しました。
このページはhttp://font.textar.tv/のウェブフォントを使用してます

不具合報告/要望等はこちらへお願いします。
モバイルやる夫Viewer Ver0.14