在使用Capistrano部署过程中,我遇到了重启Rails应用程序的问题。以下是问题代码的痕迹:
INFO [e14478ef] Running /usr/bin/env rvmsudo passenger-config restart-app /var/www/appname/staging/ --ignore-app-not-running as deploy@xxx.xxx.xxx.xx
DEBUG [e14478ef] Command: rvmsudo passenger-config restart-app
DEBUG [e14478ef] bash: rvmsudo: command not found
我几乎可以肯定这个问题源于执行命令的环境($ BASH_ENV),但我不确定如何解决这个问题。当我从命令行手动执行相同的命令时,一切正常。我的应用正在使用:
只需注意:我可以通过覆盖乘客来重启应用:重启任务并使用旧触摸tmp / restart.txt方法。但是,我真的想知道如何使默认重启方法正常工作。
更新:我可以通过使用以下代码替换默认重启任务来解决问题:
desc 'Restart your Passenger application - temporary fix'
task :restart do
on roles(:app) do
sudo "passenger-config restart-app #{fetch(:deploy_to)}"
end
end
我仍然有兴趣学习如何在不覆盖默认任务的情况下重新启动应用程序,但我已经为那些可能陷入类似情况的人添加了上面的代码。
(信用:https://github.com/capistrano/passenger/issues/9#issuecomment-92685064)