我有一个相当大的Capistrano部署文件(Capfile),它包含一些名称空间,并且通常包含很多信息。我的最终目标是,使用Tinder gem将整个部署的输出粘贴到Campfire中。我已经正确安装了Tinder。
我研究了使用Capistrano捕获方法,但这只适用于第一台主机。此外,还需要做很多工作,并添加以下内容:
output << capture 'foocommand'
具体来说,我希望将该文件中任何部署的输出捕获到一个变量中(除了将它放到STDOUT以便我可以看到它),然后将变量中的输出传递给一个名为{{1的函数}}。由于notify_campfire
函数在任务结束时被调用(每个任务都与命名空间无关),因此它应该具有可用的任务名称和输出(存储在该输出变量中)。任何关于如何实现这一点的想法将不胜感激。
答案 0 :(得分:1)
这是解决问题的一种黑客手段,但您可以尝试在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
答案 1 :(得分:1)
我建议不要弄乱Capistrano记录器,而是使用unix提供给你的东西并使用管道:
cap deploy | my_logger.rb
记录器读取STDIN和STDOUT以及两个记录的位置,并将其传回适当的流。
另一方面,Engineyard cap recipies have a logger - 如果您确实需要编辑代码,这可能是一个有用的参考,但我建议您不要这样做。