2015-06-16 34 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