unicorn+nginxで動かしてるRails をtouchでリスタートしちゃう
経緯
- エンジニアだけの開発チームにデザイナーが加わった
- 開発機はなるべく本番と同じにするためWEBrick ではなくnginx+unicornで動いている
- デザイナーは
kill -USR2
とかは打てない
方針
- 基本はこの記事に書いてあることをやる
- しかし、デザイナーに
tmp/unicorn_restart/restart.txt
です!と言っても忘れるかもしれない
-
tmp/restart.txt
でrestart出来るよう必要がある
結果
-
config/unicorn.rb
にこんな事を追記した
- 基本的には
Listen.to
の辺りを変えただけ
before_fork do |_server, _worker|
# oldsig QUIT
if File.exists?(old_pid) && _server.pid != old_pid
begin
Process.kill("QUIT", File.read(old_pid).to_i)
rescue Errno::ENOENT, Errno::ESRCH
end
end
# watch restart.txt
if _worker.nr == 0 && Rails.env.development?
listener = Listen.to(Rails.root.join('tmp').to_s, only: /\Arestart.txt\z/) do |modified, added, removed|
pid = _server.config[:pid]
if pid == _server.pid
begin
Process.kill("USR2", File.read(pid).to_i)
rescue Errno::ENOENT, Errno::ESRCH
end
end
end
listener.start
end
kill -USR2
とかは打てない- 基本はこの記事に書いてあることをやる
- しかし、デザイナーに
tmp/unicorn_restart/restart.txt
です!と言っても忘れるかもしれない -
tmp/restart.txt
でrestart出来るよう必要がある
結果
-
config/unicorn.rb
にこんな事を追記した
- 基本的には
Listen.to
の辺りを変えただけ
before_fork do |_server, _worker|
# oldsig QUIT
if File.exists?(old_pid) && _server.pid != old_pid
begin
Process.kill("QUIT", File.read(old_pid).to_i)
rescue Errno::ENOENT, Errno::ESRCH
end
end
# watch restart.txt
if _worker.nr == 0 && Rails.env.development?
listener = Listen.to(Rails.root.join('tmp').to_s, only: /\Arestart.txt\z/) do |modified, added, removed|
pid = _server.config[:pid]
if pid == _server.pid
begin
Process.kill("USR2", File.read(pid).to_i)
rescue Errno::ENOENT, Errno::ESRCH
end
end
end
listener.start
end
config/unicorn.rb
にこんな事を追記したListen.to
の辺りを変えただけbefore_fork do |_server, _worker|
# oldsig QUIT
if File.exists?(old_pid) && _server.pid != old_pid
begin
Process.kill("QUIT", File.read(old_pid).to_i)
rescue Errno::ENOENT, Errno::ESRCH
end
end
# watch restart.txt
if _worker.nr == 0 && Rails.env.development?
listener = Listen.to(Rails.root.join('tmp').to_s, only: /\Arestart.txt\z/) do |modified, added, removed|
pid = _server.config[:pid]
if pid == _server.pid
begin
Process.kill("USR2", File.read(pid).to_i)
rescue Errno::ENOENT, Errno::ESRCH
end
end
end
listener.start
end
Author And Source
この問題について(unicorn+nginxで動かしてるRails をtouchでリスタートしちゃう), 我々は、より多くの情報をここで見つけました https://qiita.com/gessy0129/items/c751993ddb69d8087089著者帰属:元の著者の情報は、元のURLに含まれています。著作権は原作者に属する。
Content is automatically searched and collected through network algorithms . If there is a violation . Please contact us . We will adjust (correct author information ,or delete content ) as soon as possible .