如何将ruby gem的代码包含到主rails项目中?

时间:2015-05-08 08:21:30

标签: ruby-on-rails ruby gem

让我们说我需要在rails项目中更改我需要的某个ruby gem的功能。我想将ruby gem的所有内容放在主项目中。

这可能吗?有替代方法吗?

谢谢

2 个答案:

答案 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)