我已经分叉了一个宝石,它托管在Github上。
然后,在Gemfile中,这就是我所拥有的:
gem 'mongoid-scroll', git: 'https://github.com/bgvo/mongoid-scroll.git'
每当我使用Pry gem-opem
命令更改gem时,更改都会保存在以下目录中:
/Users/borjagvo/.rbenv/versions/2.1.2/lib/ruby/gems/2.1.0/bundler/ruby/2.1.0/bundler/gems/
有些事让我困惑:
1)在此目录中,有两个mongoid-scroll
个宝石(mongoid-scroll-7e23e72653c6
和mongoid-scroll-23bc60ce76bd
)而不是一个宝石。我认为这个目录中的宝石是运行bundler时使用的宝石。 Bundler如何确定使用的是另一个而不是另一个?
2)如果我尝试将更改推送到Github回购:
Borjas-MacBook-Pro:mongoid-scroll-7e23e72653c6 borjagvo$ git push
Counting objects: 10, done.
Delta compression using up to 8 threads.
Compressing objects: 100% (9/9), done.
Writing objects: 100% (10/10), 1.00 KiB | 0 bytes/s, done.
Total 10 (delta 6), reused 0 (delta 0)
To /Users/borjagvo/.rbenv/versions/2.1.2/lib/ruby/gems/2.1.0/bundler/ruby/2.1.0/cache/bundler/git/mongoid-scroll-f814a84d6332ef5d28cf5db04da93b434e01f07b
d8f9f91..696bdce master -> master
我看到Github repo不是上传更改的地方。
执行git config --get remote.origin.url
查看来源:
Borjas-MacBook-Pro:mongoid-scroll-7e23e72653c6 borjagvo$ git remote show origin
* remote origin
Fetch URL: /Users/borjagvo/.rbenv/versions/2.1.2/lib/ruby/gems/2.1.0/bundler/ruby/2.1.0/cache/bundler/git/mongoid-scroll- f814a84d6332ef5d28cf5db04da93b434e01f07b
Push URL: /Users/borjagvo/.rbenv/versions/2.1.2/lib/ruby/gems/2.1.0/bundler/ruby/2.1.0/cache/bundler/git/mongoid-scroll- f814a84d6332ef5d28cf5db04da93b434e01f07b
HEAD branch: master
Remote branch:
master tracked
Local branch configured for 'git pull':
master merges with remote master
Local ref configured for 'git push':
master pushes to master (up to date)
将更改从捆绑器使用的gem上传到Github中的分叉存储库的好方法是什么(记住我正在使用Pry命令gem-open
)。
感谢。
答案 0 :(得分:1)
Gemfile.lock应该知道要加载什么gem,当你进行捆绑更新或安装新的gem时,Gemfile.lock也将使用新的gems,路径等进行更新。还有修订版哈希。
运行Fetch/Push URL
时看到的git remote show origin
末尾的哈希值必须与Gemfile.lock中的revision
相同。
例如在我的Gemfile.lock中使用active-admin
gem的情况下,我有:
GIT
remote: git://github.com/gregbell/active_admin.git
revision: b7e8c7dde2c26a47e5db0dd1efc163405afadd9d
specs:
activeadmin (1.0.0.pre)
...
即使我有2个主动管理宝石,也只有一个有修订:b7e8c7dde2c26a47e5db0dd1efc163405afadd9d
然而,使用分叉,这就是我所做的:
我通常fork
它,pull
我的计算机上的gem
,更新我的应用的Gemfile
以使用来自local-storage的gem {{1参数,并且每次我做一个小的改动只是为了测试它,我可以更新gem而不将它推送到github。
当我按需要使它工作时,我将它推送到github并更改我的应用程序的Gemfile中的路径,再次运行bundle来更新路径Gemfile.lock并且我已经完成了设置。至少在这里你不会混淆应用程序加载的宝石。