需要修改的gem源代码

时间:2013-07-22 09:44:25

标签: ruby gem require

我正在尝试require我已下载并修改过的宝石源代码。 require适用于主文件,但主文件require适用于其他文件(类和模块),不幸的是,这些类和模块是从先前安装的gem(via gem命令加载的)而不是本地修改的。

我正在做一个require './lib/foo',有什么想法告诉要求只加载本地文件吗?

已编辑:我的require './lib/foo'正在运作。 foo是我想要的本地版本。但foo做了其他要求,并且这些要求指向安装的gem的文件(我不想要,因为我正在尝试纠正内部的东西)。

4 个答案:

答案 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'