Перенаправить вывод Capistrano - PullRequest
0 голосов
/ 10 апреля 2010

У меня есть файл развертывания Capistrano (Capfile), который довольно большой, содержит несколько пространств имен и, как правило, содержит много информации. Моя конечная цель, используя драгоценный камень Tinder, вставить результаты всего развертывания в Campfire. У меня уже правильно настроен Tinder.

Я изучил использование метода захвата Capistrano, но он работает только для первого хоста. Кроме того, это было бы много работы, чтобы пройти и добавить что-то вроде:

output << capture 'foocommand'

В частности, я хочу записать вывод любого развертывания из этого файла в переменную (в дополнение к тому, чтобы поместить его в STDOUT, чтобы я мог его увидеть), а затем передать этот вывод в переменной в функцию с именем notify_campfire , Поскольку функция notify_campfire вызывается в конце задачи (для каждой задачи независимо от пространства имен), для нее должно быть доступно имя задачи и вывод (который хранится в этой выходной переменной). Мы будем благодарны за любые мысли о том, как этого добиться.

Ответы [ 2 ]

1 голос
/ 13 апреля 2010

Я рекомендую не связываться с регистратором Capistrano. Вместо этого используйте то, что дает вам Unix, и используйте каналы:

cap deploy | my_logger.rb

Где ваш регистратор читает STDIN и STDOUT и обе записи и передает их обратно в соответствующий поток.

В качестве альтернативы, Получатели шапки Engineyard имеют регистратор - это может быть полезно, если вам нужно отредактировать код, но я рекомендую этого не делать.

1 голос
/ 10 апреля 2010

Это своего рода хакерское средство решения вашей проблемы, но вы можете попробовать запустить задачу развертывания в задаче Rake и захватить вывод, используя %x.

# ...in your Rakefile...
task :deploy_and_notify do
  output = %x[ cap deploy ]  # Run your deploy task here.
  notify_campfire(output)
  puts output                # Echo the output.
end
Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...