Help us understand the problem. What is going on with this article?

ruby on railsでShoryukenを使うときにGod(神様)を使って監視をする

More than 5 years have passed since last update.

実行環境

ruby 2.2.0
Rails 4.2.1
OS X EL Capitan

下準備

Gemfileに下記の追記を行う

Gemfile
gem "shoryuken"            # sqs worker
gem "god"                  # A Process Monitoring
bundle install

補足ですが、bundle installに失敗する人は、下記のコマンドで解決出来るかもしれないです。
(私は数時間ドハマリしました。)

brew install ghc

設定ファイルを作成

config/shoryuken.yml
aws:
  access_key_id: "hogehoge"
  secret_access_key: "hogehoge"
  region: "ap-northeast-1"
concurrency: 25
delay: 5
queues:
  - ["sqs_queue", 1]
config/shoryuken.god
RAILS_ROOT = File.expand_path(File.dirname(__FILE__) + '/../')

God.watch do |w|
  w.name = "shoryuken"
  w.env = { 'RAILS_ROOT' => "#{RAILS_ROOT}",
            'RAILS_ENV' => "development" }
  w.start = "cd #{RAILS_ROOT} && bundle exec shoryuken -R -C ./config/shoryuken.yml -L ./log/shoryuken.log -P ./log/shoryuken.pid &"
  w.pid_file = File.join(RAILS_ROOT, "log/shoryuken.pid")
  w.keepalive
end

実行と確認

実行
bundle exec god -c config/shoryuken.god -D
% tail -f log/shoryuken.log
yyyy-mm-ddT12:47:59Z 9939 TID-ouqa6vpp8 INFO: Rails environment loaded
yyyy-mm-ddT12:48:02Z 9939 TID-ouqb0ogb8 INFO: Starting

kill `cat log/shoryuken.pid`
log/shoryuken.logで再度プロセスが立ち上がることを確認
yyyy-mm-ddT13:13:54Z 9939 TID-ouqa6vpp8 INFO: Got TERM signal
yyyy-mm-ddT13:13:54Z 9939 TID-ouqa6vpp8 INFO: Received TERM, will shutdown down
yyyy-mm-ddT13:13:54Z 9939 TID-ouqb0ogb8 INFO: Shutting down 25 quiet workers
yyyy-mm-ddT13:13:54Z 9939 TID-ouqb0ogb8 ERROR:
yyyy-mm-ddT13:14:07Z 12128 TID-oxcm0ccf0 INFO: Rails environment loaded
yyyy-mm-ddT13:14:08Z 12128 TID-oxcnb0v1k INFO: Starting

ちなみにgodのプロセス停止は下記のコマンド

停止
bundle exec god terminate

終わり

最小限の動作確認まですることが出来ました。
Godにはいろいろな設定があるようなので、もう少しいろいろと検証してみる必要がありそうです。

余談ですが、
検証の途中で、godを起動した瞬間に100以上のshoryukenが立ち上がり、再起動しながら動作検証をした時には、パソコンを投げそうになりました。

参考

shoryuken(github) https://github.com/phstc/shoryuken
god公式ページ http://godrb.com/
god(github) https://github.com/mojombo/god

dirty_hero
railsエンジニア ミスター短納期 気合と根性でコーディング
temona
"てもなく"とは「簡単に、たやすく」という意味を持った古語です。 テモナの社名にはIT技術で世の中を便利にしたいという想いが込められています。
http://temona.co.jp/
Why not register and get more from Qiita?
  1. We will deliver articles that match you
    By following users and tags, you can catch up information on technical fields that you are interested in as a whole
  2. you can read useful information later efficiently
    By "stocking" the articles you like, you can search right away