找不到Capistrano乘客配置重新启动应用程序命令



在使用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)
  • 轨道(4.2.0)
  • Capistrano(3.4.0)
  • Capistrano乘客(0.0.4)
  • Capistrano轨道(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)

如果您得到的命令找不到rvmsudo,可能是因为您没有安装rvmsudo。

最新更新