我正在尝试require
我已下载并修改过的宝石源代码。 require
适用于主文件,但主文件require
适用于其他文件(类和模块),不幸的是,这些类和模块是从先前安装的gem(via gem
命令加载的)而不是本地修改的。
我正在做一个require './lib/foo'
,有什么想法告诉要求只加载本地文件吗?
已编辑:我的require './lib/foo'
正在运作。 foo是我想要的本地版本。但foo做了其他要求,并且这些要求指向安装的gem的文件(我不想要,因为我正在尝试纠正内部的东西)。
答案 0 :(得分:2)
通过命令
从系统中卸载原始gem gem uninstall some_gem
然后去下载源代码的根目录,并使用命令
从修改后的源代码构建自己的gem gem build some_gem.gemspec
通过指定生成的源文件名来安装gem。
gem install some_gem-version
答案 1 :(得分:0)
最好的方法是在项目中添加Gemfile
,并在要自定义的gem上设置source
。
答案 2 :(得分:0)
在Ruby 2.0下,您可以使用__dir__
。所以:
require "#{__dir__}/lib/foo"
将需要您的本地foo.rb
文件,而不是您在其他目录中的foo.rb
。
此外,最好不要使用与原始gem相同的名称。您应该将文件名更改为其他内容。
答案 3 :(得分:0)
如果你正在使用Bundler,并且你已经在github或其他在线git提供程序上分叉了这个gem,你可以使用:git
命令(http://bundler.io/v1.3/git.html)修改你的Gemfile:
而不是
gem some_gem
你可以做到
gem some_gem, :git => 'git://github.com/my_username/my_awesome_fork_of_some_gem.git'
甚至
gem some_gem, :github => 'my_username/my_awesome_fork_of_some_gem'