让我们说我需要在rails项目中更改我需要的某个ruby gem的功能。我想将ruby gem的所有内容放在主项目中。
这可能吗?有替代方法吗?
谢谢
答案 0 :(得分:2)
你可以通过“monkeypatching”具体方法来做到这一点。要执行此操作,您需要创建一个覆盖您要修改的方法的初始化程序。例如,创建config/initializers/monkeypatch.rb
并覆盖方法:
class String
def inspect
puts "Im monkeypatched!"
end
end
然后,当您创建一个字符串并调用inspect时,您将看到该方法已被修补。另外你应该小心使用monkeypatching,因为它可能有一些不必要的副作用,特别是当你修补非常基本的类,如String或Fixnum类时。
答案 1 :(得分:1)
另一个选择是fork你正在编写的gem,更新它并保存在你的存储库中,然后在你的Gemfile中引用它。
当然你可以复制这个gem的整个来源并把它放在app里面的专用文件夹中(lib / folder_for_your_gem)