Hatena::ブログ(Diary)

yagihiro output RSSフィード

2007-05-19

clayfish2007-05-19

script/server で起動する web サーバを選択するには

気になったので調べてみたよログです.

rails 1.2.3 で調べました.



明示的に mongrel を使う場合の例です.

$ ruby script/server mongrel
=> Booting Mongrel (use 'script/server webrick' to force WEBrick)
=> Rails application starting on http://0.0.0.0:3000
=> Call with -d to detach
=> Ctrl-C to shutdown server
** Starting Mongrel listening at 0.0.0.0:3000
** Starting Rails with development environment...

mongrel の部分は

の 3 つが指定可能です.

使用するサーバを指定しない場合の例です.

$ ruby script/server

この場合、使用されるサーバの優先順位は

  1. lighttpd
  2. mongrel
  3. webrick

の順番になります.

この仕組みは script/server の

require 'commands/server'

上記 require により、$(gem)/rails-1.2.3/lib/commands/server.rb がロードされ、以下のコードが評価されることによりサーバの選択が行なわれます.

server = case ARGV.first
  when "lighttpd", "mongrel", "webrick"
    ARGV.shift
  else
    if defined?(Mongrel)
      "mongrel"
    elsif RUBY_PLATFORM !~ /(:?mswin|mingw)/ && !silence_stderr { `lighttpd -version` }.blank? && defined?(FCGI)
      "lighttpd"
    else
      "webrick"
    end
end

引数が指定されていて "lighttpd", "mongrel", "webrick" に該当した場合(whenのルートの場合)、引数サーバが使用されることがわかります。

また、引数が指定されない場合(elseのルートの場合)、

  1. クラス Mongrel が指定されていれば mongrel
  2. ウィンドウズではなく(mswin または mingw)、lighttpd がシステムに存在すれば lighttpd
  3. 上記以外は webrick

の順番で評価されていることがわかります。

スパム対策のためのダミーです。もし見えても何も入力しないでください
ゲスト


画像認証