如何有效地分叉宝石

Dro*_*ror 0 ruby rubygems

我找到了一个有用的宝石(如果你很好奇,这里就是链接).我用它安装了它sudo gem install json_resume.现在它驻留在/Library/Ruby/Gems/2.0.0/gems/json_resume-1.0.4/(Mac OS)上.但是,我需要改变它的一些元素.到目前为止,我/Library直接改变了它们.这显然不是最好的方法.

我想分叉存储库并安装我的版本.我该怎么做?我找到了这个答案,但我对Ruby太新了,不明白该怎么做.

更多细节:安装gem后,我发现了以下脚本/usr/local/bin/json_resume:

#!/System/Library/Frameworks/Ruby.framework/Versions/2.0/usr/bin/ruby


#!/System/Library/Frameworks/Ruby.framework/Versions/2.0/usr/bin/ruby
#
# This file was generated by RubyGems.
#
# The application 'json_resume' is installed as part of a gem, and
# this file is here to facilitate running it.
#

require 'rubygems'

version = ">= 0"

if ARGV.first
  str = ARGV.first
  str = str.dup.force_encoding("BINARY") if str.respond_to? :force_encoding
  if str =~ /\A_(.*)_\z/
    version = $1
    ARGV.shift
  end
end

gem 'json_resume', version
load Gem.bin_path('json_resume', 'json_resume', version)
Run Code Online (Sandbox Code Playgroud)

好像它调用了安装的gem /Library/Ruby/Gems/2.0.0/gems/json_resume-1.0.4/.我没有把它指向我的分叉版本.

mea*_*gar 7

您绝对不应该修改系统范围内安装的版本.

相反,你应该:

  1. 在Github上克隆存储库
  2. 在本地签出的源代码副本

    $ cd /home/my_user
    $ git clone git@github.com:/.../my_forked_gem
    
    Run Code Online (Sandbox Code Playgroud)
  3. 在您的消费项目的Gemfile中使用gem的源代码的本地副本,而不是Rubygems托管的gem:

    gem 'my_forked_gem', path: '/home/my_user/my_forked_gem'
    
    Run Code Online (Sandbox Code Playgroud)
  4. 修改您的本地副本~/my_forked_gem,并推送到您的分叉Github仓库

  5. 针对您认为值得包含在原始gem中的任何功能,针对原始项目发出拉取请求