2017-07-05 10 views
1

バグが破壊された後にカスタムルビコードを実行したいと思います。バグが破壊されてルビーが破壊される

コードです:

class OnDestroyMiddleware 

    def initialize(app, env) 
    @app = app 
    end 

    def call(env) 
    env["config"].vm.provisioners.each do |provisioner| 
     env.ui.info "Attempting to remove client #{provisioner.config.node_name}" 
     `knife client show #{provisioner.config.node_name}` 
     if $?.to_i == 0 
     env.ui.info "Removing client #{provisioner.config.node_name}" 
     `knife client delete #{provisioner.config.node_name} -y` 
     end 
     env.ui.info "Attempting to remove node #{provisioner.config.node_name}" 
     `knife node show #{provisioner.config.node_name}` 
     if $?.to_i == 0 
     env.ui.info "Removing node #{provisioner.config.node_name}" 
     `knife node delete #{provisioner.config.node_name} -y` 
     end 
    end 
    @app.call(env) 
    end 
end 

私はこれをしようとしているが、動作していない:

Vagrant::Action[:destroy].use(OnDestroyMiddleware) 

このコードのすべてがhttps://gist.github.com/skippy/1010660

からである私は、このエラーを持っていますヴァリアント::アクション[:破棄]

Message: NoMethodError: undefined method `[]' for Vagrant::Action:Module

答えて

2

vagrant trigger pluginを見ることができます。特定の変量コマンドの後にコードを実行することができます。

あなたはあなたが

Vagrant.configure("2") do |config| 
    # Your existing Vagrant configuration 
    ... 

    # run some script before the guest is destroyed 
    config.trigger.after :destroy do 
    info "Attempting to remove client..." 
    run "knife client show .." 
    end 
+0

のように、私は次のエラー持って、あなたのVagrantfileに直接コードを追加しますプラグイン

$ vagrant plugin install vagrant-triggers 

をインストールする必要がまず:*不明な構成セクション「トリガーを' – Lechucico

+0

プラグインをインストールしましたか? –

+0

私はそれを忘れました。問題は今、関数を呼び出す方法です:OnDestroyMiddleware.new.call ?? 2つのパラメータはどうですか? – Lechucico

関連する問題