卡皮斯特拉诺 3: 如何抑制状态输出?



>我创建了一个 Capistrano 任务来执行 rake 命令。我计划将输出(STDOUT(重定向到文件。例如

cap production invoke:rake TASK=mytask > out

这有效,但我的输出包括一些额外的 Capistrano 状态输出,例如

00:00 invoke:rake 01 $HOME/.rbenv/bin/rbenv exec bundle exec rake mytask ... ✔ 01 ubuntu@mydomain.com 11.399s

有什么办法可以抑制这一点吗?

这可能是标准输出。如果是这样,您可以将标准错误重定向到标准输出,如下所示:

cap production invoke:rake TASK=mytask > out 2>&1

好的,所以我想我想出了一个很好的解决方案。

关键是使用捕获(在Capistrano 3.x中没有记录,但仍然有效(。 https://github.com/capistrano/capistrano-2.x-docs/blob/master/2.x-DSL-Action-Inspection-Capture.md

namespace :invoke do
desc "Execute a rake task on a remote server"
task :rake do
if ENV['TASK']
on roles(:app) do
with rails_env: fetch(:rails_env) do
puts capture :rake, ENV['TASK']
end
end
else
puts "nnFailed! You need to specify the 'TASK' parameter!",
"Usage: cap <stage> invoke:rake TASK=your:task"
end
end
end

相关内容

  • 没有找到相关文章

最新更新