为我的本地副本扩展gem的功能

时间:2013-07-09 14:57:29

标签: ruby rubygems gem

我使用webdriver-user-agent轻松调整自动浏览器的大小,并且它具有可在YAML文件中配置的用户代理和窗口大小。我想添加到YAML文件,我想知道最好的方法是什么。我可能只有我想要使用的附加内容,所以我在Github上排除了一个pull请求,我不想在gem的lib目录下添加它,因为当我升级时我会失去工作宝石。

向gem添加其他代码的最佳方法是什么?

1 个答案:

答案 0 :(得分:2)

不幸的是,你在谈论将配置添加到gem中,这比添加代码要容易,但仍然可行。

你将使用gem来用来加载其YAML配置而不是加载你选择的配置。查看the source,您可以看到#devices正在加载YAML,文件名来自#devices_file。对我们来说幸运的是(虽然性能不是很高),加载的YAML不会被缓存,所以只需替换#devices_file就能做到你想做的事情:

require 'webdriver-user-agent'
module Webdriver
  module UserAgent
    module Devices
      def devices_file
        File.expand_path("../my-devices.yml", __FILE__)
      end
    end
  end
end

这将在与上述代码所在文件相同的目录中查找名为my-devices.yml的文件(如spec_helper.rb或whatnot) - 适当调整。