Monkeypatching Vagrant插件

时间:2014-12-19 19:06:26

标签: ruby vagrant patch

我想monkeypatch一个Vagrant插件。

由于我不是Ruby人,但想测试一些行为,我需要一些帮助。

我需要覆盖那里的方法chef_provisioner?https://github.com/fgrehm/vagrant-cachier/blob/master/lib/vagrant-cachier/cap/linux/chef_file_cache_path.rb

到目前为止,我在Vagrantfile的顶部得到了什么:

module VagrantPlugins
  module Cachier
    module Cap
      module Linux
        module ChefFileCachePath
          def self.chef_provisioner?(machine)
            # patch applies here
          end
        end
      end
    end
  end
end

Vagrant无法识别补丁。少了什么东西?这样可能吗?

1 个答案:

答案 0 :(得分:0)

我能够像这样monkeypatch它:

module VagrantPlugins
  module Cachier
    module Cap
      module Linux
        module ChefFileCachePath
          def self.chef_provisioner?(machine)
            # stuff
          end
          def self.chef_file_cache_path(machine)
            # other method stuff
          end
        end
      end
    end
  end
end

VagrantPlugins::Cachier::Plugin.guest_capability 'linux', 'chef_file_cache_path' do
  # load the patched module
  VagrantPlugins::Cachier::Cap::Linux::ChefFileCachePath
end