簡體   English   中英

Capistrano 3:如何抑制狀態輸出?

[英]Capistrano 3: How can I suppress status output?

我創建了一個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

有沒有辦法壓制這個?

這可能是stderr輸出。 如果是這樣,您可以將標准錯誤重定向到標准輸出,如下所示:

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 "\n\nFailed! You need to specify the 'TASK' parameter!",
          "Usage: cap <stage> invoke:rake TASK=your:task"
    end
  end
end

暫無
暫無

聲明:本站的技術帖子網頁,遵循CC BY-SA 4.0協議,如果您需要轉載,請注明本站網址或者原文地址。任何問題請咨詢:yoyou2525@163.com.

 
粵ICP備18138465號  © 2020-2024 STACKOOM.COM