如何使用本地源目录中的代码替换Ruby gem

时间:2016-07-01 01:17:36

标签: ruby installation rubygems

我一直在使用我作为gem安装的Ruby包。现在我想修改代码,尝试修复错误/添加功能。我可以从GitHub下载软件包的来源,但是,我不知道下一步该做什么。

有没有一种简单的方法可以用本地源目录中的代码替换特定的gem?理想情况下,该过程非常简单,以便在修改代码时能够不断更新。

此外,此包用作其他gem的依赖项,理想情况下,使用此gem的其他包将使用更新版本。 (因为我最终运行的程序来自其中一个宝石。)有没有办法安装而不从源代码安装其他软件包?

(这将在Linux上,如果它使事情变得更容易。)

2 个答案:

答案 0 :(得分:2)

假设您使用bundler,可以在Gemfile中进行设置。如果您不确定使用捆绑包是否在项目的根目录中查找。应该有一个名为Gemfile的文件没有扩展名。此文件的存在通常表明项目的作者正在使用bundler。下面描述的所有更改都应该在该文件中进行。

gem hashmap中的:path:git键可用于将rubygems指向不同的位置。当我使用:path时,我将有两个不同的ruby项目。第一个项目是活动项目。我目前正在进行的项目。这个项目需要我需要更新的宝石。第二个项目将是我希望更改的gem的已检出源代码。通过这两个项目设置,我可以编辑第一个项目的Gemfile并将其指向第二个项目。这是使用:path完成的。

# The Gemfile of the first project
gem 'the_gem_in_question', :path => '/the/path/to/the/second/project'

答案 1 :(得分:0)

有两种方法可以修改这些文件并显示更改。

一个是使用Gemfile定义路径。例如,如果你想在本地使用redis gem,你可以{1}}然后如Stewart所指出的那样,将它放入你的Gemfile这一行git clone git@github.com:redis/redis-rb.git而不是gem 'redis', :path => './pathtoredis/redis'

另一种方法,即更快,更难以跟踪更改和内容,只需gem 'redis'即可在文本编辑器中打开它。