Thinサーバーをまた使ってみる
Rubyで書かれたwebサーバ Thinも、いつの間にかバージョン0.5.4になっていたので、また試してみることにします。以前、試してみたとき( webサーバ Thin を使ってみる)は、HTTPヘッダがおかしなことになって、cookieがうまく働かなかったりしましたが、今回は修正されているみたい。また試してみることにします。
関係ないけど、Thinのコードネームはおもしろいね。今回はFlying Mustardだそうです。
spider-manさんがすでに試されていますが、Thinにクラスタ機能が実装されました。が、まだちょっと使いにくそう。なので、以前作ったthin_clusterを改良してみました。
#!/usr/bin/ruby
require 'yaml'
CONFIG_FILE = "config/thin_cluster.yml"
KEY = {"e" => :env, "p" => :port, "s" => :servers}
def error
puts "thin_cluster config|start|stop [options]"
exit
end
error if ARGV.size < 1
case ARGV.shift
when "config"
config = {:env => "development", :port => 3000, :servers => 1}
work = nil
ARGV.each do |argv|
if argv =~ /^\-([eps])(.*)$/
work = nil
if $2 && !$2.empty?
config[KEY[$1]] = $2
else
work = $1
end
elsif work
config[KEY[work]] = argv
work = nil
end
end
YAML.dump(config, File.open(CONFIG_FILE, "w"))
when "start"
config = YAML.load_file(CONFIG_FILE)
`thin -e #{config[:env]} -p #{config[:port]} -s #{config[:servers]} -d start`
when "stop"
config = YAML.load_file(CONFIG_FILE)
`thin -p #{config[:port]} -s #{config[:servers]} stop`
else
error
end
ソースを見れば一目瞭然だろうけど念のため使い方。すべてRAILS_ROOTで実行します。
まずは設定。
thin_cluster config -p3000 -e production -s 2
一度設定しておけば、起動するときは
thin_cluster start
停止するときは
thin_cluster stop
でOKです。