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'
。