在使用 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) 引起的,但我不确定如何解决这个问题。当我从命令行手动执行相同的命令时,一切正常。我的应用正在使用:
- ruby (2.2.0)
- rails (4.2.0)
- 卡皮斯特拉诺 (3.4.0)
- Capistrano 乘客 (0.0.4)
- Capistrano-rails (1.1.2)
- Capistrano-rvm (0.1.2)
- 乘客 (5.0.6)
请注意:我已经能够通过覆盖 passenger:restart 任务并使用旧的 touch 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)
最佳答案
如果你得到一个命令 not found for rvmsudo
,可能是因为你 don't have rvmsudo installed .
关于ruby-on-rails - 找不到 Capistrano passenger-config restart-app 命令,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/29567970/