Capistrano 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 [email protected] 11.399s

Есть ли способ подавить это?


person Felix Livni    schedule 18.08.2017    source источник


Ответы (2)


Вероятно, это вывод stderr. Если это так, вы можете перенаправить стандартную ошибку на стандартный вывод следующим образом:

cap production invoke:rake TASK=mytask > out 2>&1
person will_in_wi    schedule 18.08.2017
comment
will_in_wi, это не так. - person Felix Livni; 01.09.2017

Итак, я думаю, что нашел довольно хорошее решение.

Ключевым моментом было использование захвата (не задокументировано в 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
person Felix Livni    schedule 31.08.2017