如何使用vendor文件夹中的插件而不是rails中的gem?

时间:2011-11-13 03:00:06

标签: ruby-on-rails rubygems ruby-on-rails-3.1

我有一个场景需要修改插件中的某些功能。所以我想我可以更改vendor/plugins/文件夹中的文件。但后来我意识到我安装的gems代码已经被rails使用而不是vendor/plugins/。我想从我的gemlist删除gem但是会抛出错误。那么如何重定向我的rails以使用vendor/plugins/文件夹中的插件而不是我的宝石?

2 个答案:

答案 0 :(得分:3)

根据bundler doc

尝试
gem [gem name], :path => [path]

前:

gem "rails", :path => "vendor/rails"

答案 1 :(得分:0)

尝试猴子修补,而不是直接修改插件/宝石。我在lib /文件夹中修补它们,并在我的环境中使用config.auto_load。这不是太糟糕,只要确保它在相同的模块中,并具有相同的方法名称。例如,要覆盖字符串方法,您可以执行以下操作:

class String
  def method_to_override
    do_something
    super # if you want to still use the original method
  end
end

我建议不要直接修改任何内容。

另外,如果我使用捆绑的宝石,我通常会捆绑exec命令,但我认为仍然会从我选择的路径中加载宝石。我最近很少使用插件。