Ruby 需要修改gem源代码

Ruby 需要修改gem源代码,ruby,gem,require,Ruby,Gem,Require,我试图要求一个我下载并修改过的gem源代码。require适用于主文件,但主文件需要其他文件(类和模块),不幸的是,这些类和模块是从以前安装的gem(通过gem命令)加载的,而不是本地修改的 我正在做一个require'./lib/foo',有没有办法告诉require只加载本地文件 编辑:我的require./lib/foo'正在工作。foo是我想要的本地版本。但是foo还有其他要求,这些要求指向安装的gem的文件(我不想要,因为我正在尝试更正里面的内容)。最好的方法是在项目中添加一个Gemf

我试图
要求
一个我下载并修改过的gem源代码。
require
适用于主文件,但主文件
需要
其他文件(类和模块),不幸的是,这些类和模块是从以前安装的gem(通过
gem
命令)加载的,而不是本地修改的

我正在做一个
require'./lib/foo'
,有没有办法告诉require只加载本地文件


编辑:我的
require./lib/foo'
正在工作。foo是我想要的本地版本。但是foo还有其他要求,这些要求指向安装的gem的文件(我不想要,因为我正在尝试更正里面的内容)。

最好的方法是在项目中添加一个
Gemfile
,并在您想要自定义的gem上设置
源代码。

在Ruby 2.0下,您可以使用
\uu dir
。因此:

require "#{__dir__}/lib/foo"
将需要您的本地
foo.rb
文件,而不是位于不同目录中的
foo.rb


此外,最好不要使用与原始宝石相同的名称。您应该将文件名更改为其他文件名。

通过命令从系统中卸载原始gem

  gem uninstall some_gem
然后转到下载的源代码的根目录,使用命令从修改过的源代码构建您自己的gem

  gem build some_gem.gemspec
通过指定生成的源文件名来安装gem

  gem install some_gem-version 

如果您正在使用Bundler,并且您已经在github或其他在线git提供商上分叉了此gem,则可以使用
:git
命令()修改您的gem文件:

而不是

gem一些\u gem

你能行

gem some\u gem,:git=>'git://github.com/my_username/my_awesome_fork_of_some_gem.git“

甚至


gem some\u gem,:github=>'my\u username/my\u awesome\u fork\u of\u some\u gem'

您的修改是否通用,是否与当前gem的质量相匹配?如果是这样,除了可以立即使用的任何答案外,您还可以在github上发出请求,然后在发布更改时正常使用gem。是的,这是计划。我只想在推进我的更改之前能够在IRB或测试脚本上测试gem。实际上,我的require./lib/foo正在工作。另一个问题来自foo,它需要其他文件。这很奇怪
require
应该无法扩展文件名,除非您有一些奇怪的库正在工作。您是什么意思?我有:
lib/foo.rb
其中包含'require foo/module1',但是它不会加载本地版本,而是安装了
foo/module1
的gem版本。我明白了,你能更明确一点吗?我实际上在gem代码中。在您的gem文件中,包括以下行:
gem'foo',:path=>'/home/myDir/foo'