2015-06-16 29 views
0

我需要改变与sshkit格式化器产生的输出,我不能安装额外的宝石,但我可以调整我的capistrano 3配置。起初,我尝试创建新的Formatter(我只是复制粘贴漂亮的格式化程序,并进行了一些输出更改)。像这样https://gist.github.com/Dariusp/3e455fdb78b9f8636289 比在0123.dep在deploy.rb文件。并添加自定义输出与capistrano 3

require_relative 'lib/improved_formatter' 

到Capfile。 但我总是得到错误“抽象格式化程序不应该直接使用,也许你想要SSHKit :: Formatter :: BlackHole”,就像我试图直接使用抽象格式化程序。如果我尝试扩展PrettyFormater,那么我会获得PrettyFormatter输出,而无需进行更改。它似乎总是执行父类方法。它有什么办法如何在我的capistrano配置中创建和设置自定义格式化程序?

回答

1

当我想重写漂亮的格式化程序时,遇到了完全相同的问题。 问题是我还需要定义“< <”运算符,因为它被定义为基类中的别名,并且别名不会被继承。

在Capfile
set :format, :myformatter 

在deploy.rb

module SSHKit 
    module Formatter 
    class MyFormatter < Pretty 

    def <<(obj) 
     write(obj) 
    end 

    def write(obj) 
     ... 
    end 
    end 
    end 
end 

require 'lib/sshkit/formatters/myformatter' 
在LIB/sshkit /格式化/ myformatter.rb