僕たちが待ち望んでいたRubyスクリプトをデーモン化する方法

Rubyでは、簡単にデーモンが記述できる。その方法は簡単!Ruby 1.9だと

Process.daemon

と書くだけだ。その行の後は制御端末が切離され、デーモンとして実行される。Ctrl+Cで終了できないので、永遠に実行を続けるスクリプトは「pkill -f」などで殺す。

既存のスクリプトをデーモン化するには、この一行を加えればいいだけなのだが、常にデーモンにしてしまうとデバッグが困難になってしまう。そこで、テスト時はふつうに実行して、普段はデーモンにしてしまえばいい。その方法もまた簡単!上の一行を daemonize.rb というファイルに保存すればいい。だけどこれだけだとつまらないので、ついでにRuby 1.8にも対応させてみる。

if Process.respond_to? :daemon  # Ruby 1.9
  Process.daemon
else                            # Ruby 1.8
  require 'webrick'
  WEBrick::Daemon.start
end


こうすることで

$ ruby -rdaemonize /path/to/script

と実行すればデーモンとして実行してくれるぞ。rubyのオプションひとつでデーモン化してくれるとは、素晴しいぞRuby