【发布时间】:2015-04-10 18:03:57
【问题描述】:
我在使用 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),但我不确定如何解决此问题。当我从命令行手动执行相同的命令时,一切正常。我的应用正在使用:
- 红宝石 (2.2.0)
- 导轨 (4.2.0)
- Capistrano (3.4.0)
- Capistrano 乘客 (0.0.4)
- Capistrano-rails (1.1.2)
- Capistrano-rvm (0.1.2)
- 客运 (5.0.6)
请注意:我已经能够通过覆盖乘客:重新启动任务并使用旧的 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)
【问题讨论】:
标签: ruby-on-rails ruby ubuntu passenger capistrano3