以下任务位于deploy.rb中,该服务器在服务器上执行两个shell脚本。
task :setup_nginx do
on roles(:app) do
execute "sudo /usr/local/sbin/setup_nginx.sh"
execute "sudo /usr/local/sbin/ctl_nginx.sh restart"
end
end
如何检查其中一个脚本是否失败(返回非零值)并采取适当的措施?我想要做的是用错误信息停止执行。
答案 0 :(得分:1)
正如您可能已经知道的那样,<select ng-model="currentSelectedProperty.Name" ng-init="currentSelectedProperty.Name=data.sortInfo.availableProperties[0]" ng-options="item as item.PropertyDisplayName for item in data.sortInfo.availableProperties track by item.PropertyName">
会自动引发异常并在检测到非零退出状态时暂停部署。这种行为通常足够好&#34;只要你总是希望命令能够成功执行,任何失败都意味着发生了非常糟糕的事情。
但是,如果您不确定某个命令是成功还是失败,并且您希望优雅地处理失败案例,请使用execute
代替test
。
execute
将根据退出状态返回一个布尔值。如果退出状态为零(即成功),则返回test
;对于非零,它将返回true
。
例如:
false
文档:
task :setup_nginx do on roles(:app) do if test "sudo /usr/local/sbin/setup_nginx.sh" # do something on success else # do something different on failure end end end
命令的行为与execute完全相同,但如果命令以非零退出退出(如test()
那样),则返回false。当它返回布尔值时,它可用于指示块内的控制流。