おおいしつかさ


旅行とバイクとドライブと料理と宇宙が好き。
Ubie Discoveryのプログラマ。
Share:  このエントリーをはてなブックマークに追加

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です。