我一直在使用我作为gem安装的Ruby包。现在我想修改代码,尝试修复错误/添加功能。我可以从GitHub下载软件包的来源,但是,我不知道下一步该做什么。
有没有一种简单的方法可以用本地源目录中的代码替换特定的gem?理想情况下,该过程非常简单,以便在修改代码时能够不断更新。
此外,此包用作其他gem的依赖项,理想情况下,使用此gem的其他包将使用更新版本。 (因为我最终运行的程序来自其中一个宝石。)有没有办法安装而不从源代码安装其他软件包?
(这将在Linux上,如果它使事情变得更容易。)
答案 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'
即可在文本编辑器中打开它。