3

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

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

编辑:我require './lib/foo'的工作。foo 是我想要的本地版本。但是 foo 有其他要求,这些要求指向已安装的 gem 的文件(我不想要它,因为我试图纠正里面的东西)。

4

4 回答 4

2

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

  gem uninstall some_gem

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

  gem build some_gem.gemspec

通过指定生成的源文件名来安装 gem。

  gem install some_gem-version 
于 2013-07-22T11:30:06.577 回答
0

最好的方法是将 a 添加Gemfile到您的项目中,然后source在您要自定义的 gem(s) 上设置。

于 2013-07-22T09:49:59.747 回答
0

在 Ruby 2.0 下,您可以使用__dir__. 所以:

require "#{__dir__}/lib/foo"

将需要您的本地foo.rb文件,而不是foo.rb您在不同目录中的文件。

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

于 2013-07-22T10:10:50.437 回答
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'

于 2013-07-24T06:49:40.847 回答