我正在使用Capistrano部署我的rails应用程序。 一旦我对我的应用程序进行了更改,我就会进行“封顶部署”并且它似乎正常工作,但更改不会生效。我总是要做“cap deploy:stop”和“cap deploy:start”然后一切都很好。 所以我想这与部署更改时运行的“cap deploy:restart”有关。
这是我的deploy.rb:deploy.rb gist
希望有人可以提供帮助。
提前谢谢
答案 0 :(得分:1)
如果使用USR2
信号重新启动独角兽,它不会自动知道bundler的正确环境。查看这个要点(特别是 before_exec 块)并相应地调整你的独角兽配置。
https://gist.github.com/534668
希望有所帮助。
答案 1 :(得分:1)
刚才在你的要点(105)中注意到了
task :restart, :except => { :no_release => true } do
if File.exist?("/tmp/unicorn.example.pid")
run "kill -s USR2 `cat /tmp/unicorn.example.pid`"
end
end
您正在测试本地计算机上是否存在pid文件。相反,你应该在你的服务器上这样做。尝试将其更改为
task :restart, :except => { :no_release => true } do
run "test -f /tmp/unicorn.example.pid && kill -s USR2 `cat /tmp/unicorn.example.pid`"
end
但请记住,如果缺少pid文件,它仍会无声地失败。