Итак, я работал над этим. швы работают хорошо. Однако вам нужен форматировщик, чтобы действительно воспользоваться преимуществами кода.
Если вы не хотите использовать форматировщик, просто установите уровень журнала в режим отладки. Эти семас к ч
SSHKit.config.output_verbosity = Logger::DEBUG
Шапка
namespace :invoke do
desc 'Run a bash task on a remote server. cap environment invoke:bash[\'ls -la\'] '
task :bash, :execute do |_task, args|
on roles(:app), in: :sequence do
SSHKit.config.format = :supersimple
execute args[:execute]
end
end
desc 'Run a rake task on a remote server. cap environment invoke:rake[\'db:migrate\'] '
task :rake, :task do |_task, args|
on primary :app do
within current_path do
with rails_env: fetch(:rails_env) do
SSHKit.config.format = :supersimple
rake args[:task]
end
end
end
end
end
Это средство форматирования, которое я построил для работы с приведенным выше кодом. Он основан на :textimple, встроенном в sshkit, но это неплохой способ вызывать пользовательские задачи. О, это много не работает с последней версией sshkit gem. Я знаю, что он работает с 1.7.1. Я говорю это потому, что главная ветвь изменила доступные методы SSHKit :: Command.
module SSHKit
module Formatter
class SuperSimple < SSHKit::Formatter::Abstract
def write(obj)
case obj
when SSHKit::Command then write_command(obj)
when SSHKit::LogMessage then write_log_message(obj)
end
end
alias :<< :write
private
def write_command(command)
unless command.started? && SSHKit.config.output_verbosity == Logger::DEBUG
original_output << "Running #{String(command)} #{command.host.user ? "as #{command.host.user}@" : "on "}#{command.host}\n"
if SSHKit.config.output_verbosity == Logger::DEBUG
original_output << "Command: #{command.to_command}" + "\n"
end
end
unless command.stdout.empty?
command.stdout.lines.each do |line|
original_output << line
original_output << "\n" unless line[-1] == "\n"
end
end
unless command.stderr.empty?
command.stderr.lines.each do |line|
original_output << line
original_output << "\n" unless line[-1] == "\n"
end
end
end
def write_log_message(log_message)
original_output << log_message.to_s + "\n"
end
end
end
end
#{rake}
переменной capistrano ? Кажется, это не всегда лучший вариант.