黃金俠

Ruby on Rails / Rubygems / Javascript / Git

Bigtuna 保持 delayed_job 持續執行

| Comments

BigTuna 是透過 delayed_job 讓所有 build 中的 process 的能夠正常運作
delayed_job 因為某種不明因素終止時, 就得再 ssh 到 server 重啟 delayed_job

God 是一套獨立的 rubygems
可以讓你在 linux 環境下監控某 process, 並且保持其持續且正常運作
因此我們可透過 God 來使 delayed_job 不被意外終止

安裝

1
2
sudo su -
gem install god

BigTuna 的 god-ruby 範例檔

1
2
3
4
5
6
7
8
God.watch do |w|
  w.uid = "passenger"  # bigtuna 在 linux 下的 user id
  w.gid = "passenger"  # bigtuna 在 linux 下的 group id
  w.name = "bigtuna-delayed_job"  # 在 god 中的名稱
  # 執行 delayed_job 的指令
  w.start = "cd /path/to/bigtuna && RAILS_ENV=production ./script/delayed_job start"
  w.keepalive
end

以 root 身分執行 god

1
god -c delayed_job.rb

執行後可透過 ps axu|grep "god"ps axu|grep "delayed_job" 看到 god 啟動 delayed_job 的相關 process

Comments