let*_*nje 5 git gem ruby-on-rails bundler
我正在运行bundler v1.3.0.pre.2并试图让bundler将一个拥有gem的本地git存储库捆绑到rails应用程序中.
Gemfile:
gem 'mygem', :github => 'myrepo/mygem', :branch => 'develop'
Run Code Online (Sandbox Code Playgroud)
配置:
bundle config local.mygem /path/to/local/git/repo
Run Code Online (Sandbox Code Playgroud)
Bundle install抛出错误:
mygem在/ path/to/local/git/repo的本地覆盖是使用分支开发,但Gemfile指定develop
这是一个错误吗?我看到分支名称完全相同.可能有什么不对?对于Bundler v1.2.3也有同样的错误
fon*_*tno 10
您可以使用本地gem甚至是您正在处理的分支
gem 'rspec-rails', path: '~/forks/rspec-rails', branch: 'feature-branch'
Run Code Online (Sandbox Code Playgroud)
只需github改为path,然后
bundle install
Run Code Online (Sandbox Code Playgroud)
另外就捆绑器配置而言,虽然它在文档中,但我从来不需要像上面那样更改本地配置.
使用这种方法我永远不需要删除Gemfile.lock,它只是获取对本地仓库的更改.
虽然我不推荐它,但您可以禁用bundler使用的分支检查功能,以确保在开发时使用正确的分支
bundle config disable_local_branch_check true
Run Code Online (Sandbox Code Playgroud)
如果您只需要在gemfile中指向本地存储库中的分支,就像gem一样:
gem 'gem-name', :path=> 'relative/path/to/directory'
Run Code Online (Sandbox Code Playgroud)
然后在bundle-ing 之前为该"gem"创建bundler配置
(请记住,存储库名称可能与gem的名称不同,尽管这不是常态).
bundle config local.repository-name relative/path/to/directory
Run Code Online (Sandbox Code Playgroud)
奇怪的是,当您启动本地服务器时,当前在本地检出的任何分支都将处于活动状态.如果需要进行更改或更改分支,则可能需要重新启动服务器(除非您具有某种类型的自动重新加载功能).
一个问题是当配置设置已经建立时(让我们说通过上面的机制),你需要使用/引用一个远程git gem - 你不需要捆绑器配置来使用远程git gem(如果你有一个活跃的配置,你会得到local override错误).
检查以确保您没有给定gem的本地设置:
bundle config local.gem-name
Run Code Online (Sandbox Code Playgroud)
如果这样做,请删除该gem的配置:
bundle config --delete local.gem-name
Run Code Online (Sandbox Code Playgroud)
然后在gemfile中指向远程repo和branch:
gem 'gem-name', :path => 'https://github.com/reponame.git', :branch => 'branch_name'
Run Code Online (Sandbox Code Playgroud)
更多信息:
Git Gems:http://bundler.io/v1.7/git.html
"bundle config":http://bundler.io/v1.7/man/bundle-config.1.html