Ruby 将分叉的宝石捆绑在宝石中

Ruby 将分叉的宝石捆绑在宝石中,ruby,gem,Ruby,Gem,我正在尝试为依赖于未命名外部gem的项目构建gem:) 在开发过程中,我在外部项目中发现了一个小bug,并添加了一行修复程序来解决它。我在github上提交了一个pull请求,但是我已经有一段时间没有得到维护人员的响应了 我想让我的项目作为一个宝石,但它不会没有这个修复工作。我能做什么? 解决这个问题的最佳方法是什么 我考虑的一个选择是创建一个分支项目的gem,并以一个复杂的名称发布它,并依赖于它。但是我不喜欢用这么愚蠢的宝石污染服务器的想法 因此,我想知道是否有可能将外部gem捆绑到我的应用程

我正在尝试为依赖于未命名外部gem的项目构建gem:)

在开发过程中,我在外部项目中发现了一个小bug,并添加了一行修复程序来解决它。我在github上提交了一个pull请求,但是我已经有一段时间没有得到维护人员的响应了

我想让我的项目作为一个宝石,但它不会没有这个修复工作。我能做什么? 解决这个问题的最佳方法是什么

我考虑的一个选择是创建一个分支项目的gem,并以一个复杂的名称发布它,并依赖于它。但是我不喜欢用这么愚蠢的宝石污染服务器的想法


因此,我想知道是否有可能将外部gem捆绑到我的应用程序中,并使其与我的gem一起安装。做这件事最干净最简单的方法是什么?

事实上,这很简单。在您的文件中,将依赖项添加为:

gem "nokogiri", :git => "git://github.com/tenderlove/nokogiri.git"
要做到这一点,你还需要使用bundler来管理你的gem,你可以获得更多信息

另一个选项是将您更改的代码添加到gem中的供应商目录,并将其与您的代码一起分发,这样您就可以将另一个gem的主目录添加到您的加载路径,并且您将能够在没有任何问题的情况下要求它

要向加载路径添加内容,只需执行以下操作:

$LOAD_PATH.unshift( File.join(File.dirname(__FILE__), '..', 'vendor', 'some_gem', 'lib') )

您可以直接在
一些gem
上请求文件

您可以用不同的名称发布它,一旦上游维护人员接受了您的修复,您就可以发布您的版本。

您是否考虑过用自己的代码覆盖该函数?几周前,我在工作中遇到了一些软件的类似问题,我刚刚重新定义了功能


因为这只是你找到的一行代码,看起来这是最简单的解决方案,但我对Ruby有点陌生,所以这个计划可能有一个我没有考虑过的问题。

Bundler会迫使我改变我在代码中需要模块的方式,以及我如何运行命令行实用程序。我认为这对于我所需要的东西来说太复杂了。好吧,如果使用bundler不是一个选项,那么只需在gem中的供应商目录中添加gem代码,并将路径添加到所需路径。这并不能解决发布依赖于fork的gem的问题。。。git引用是一个绑定器,不能放在gemspec中。我最初尝试过这个,但无法让它工作。但经过一些摆弄,弄清楚所有东西都在哪里初始化后,我做到了:)非常感谢!