我怎样才能在模块中修补类?

时间:2016-04-30 23:26:59

标签: git github ruby-on-rails-3.2 monkeypatching ruby-1.9.3

我正在使用Xeroizer宝石,并希望修补pull requests中的一个补丁,增加了我需要的功能。

该请求有四个提交,其中一些提交涉及在模块内修补一个类。是否有可能这样做而不必分叉宝石并永远保持(或直到这个拉动请求被合并的时间)?

我发现this stackoverflow问题类似但不完全涵盖相同的情况,而this帖子涉及修补模块,但到目前为止我的尝试最终都破坏了宝石或只是不工作。

1 个答案:

答案 0 :(得分:0)

好的,这就是你能做的事情

  1. 使用命令git clone https://github.com/waynerobinson/xeroizer.git克隆系统上某个位置的repo(为了便于举例,请说〜/ Xeroizer)
  2. 然后导航到本例中的仓库〜/ Xeroizer
  3. 使用命令git checkout add-balances-to-contact
  4. 切换到相关分支
  5. 然后导航到您的rails项目
  6. 在你的编辑器中打开你的宝石文件
  7. 进入宝石文件后,找到包含Xeroizer宝石的行,它应该看起来像gem 'xeroizer'
  8. gem "xeroizer", :path => "~/Xeroizer"
  9. 替换gem文件中的那一行
  10. 然后保存您的gem文件并关闭您的编辑器
  11. 然后运行bundle
  12. 那应该会给你你想要的宝石版本。或者,您可以使用此命令从上面的列表中替换步骤7中的gem file命令

    gem "xeroizer", :git => "git@github.com:waynerobinson/xeroizer.git", :branch => "add-balances-to-contact"

    将它扔进你的gem文件中,然后运行bundle

    至于你关于必须永远保持这个问题的问题,答案当前是否定的,因为几个星期前这个分支已合并,但否则必须在某种程度上维持它。