我正在运行bundler v1.3.0.pre.2并试图让bundler将一个拥有gem的本地git存储库捆绑到rails应用程序中 .
Gemfile:
gem 'mygem', :github => 'myrepo/mygem', :branch => 'develop'
配置:
bundle config local.mygem /path/to/local/git/repo
Bundle install抛出错误:
/ path / to / local / git / repo中mygem的本地覆盖使用分支开发,但Gemfile指定开发
这是一个错误吗?我看到分支名称完全相同 . 可能有什么不对?对于Bundler v1.2.3也有同样的错误
4 回答
您可以使用本地gem甚至是您正在处理的分支
只需将
github
更改为path
,然后另外就捆绑器配置而言,虽然它在文档中,但我从来不需要像上面那样更改本地配置 .
使用这种方法,我从来没有需要删除
Gemfile.lock
,它只是选择了对本地仓库的更改 .虽然我不推荐它,但您可以禁用bundler使用的分支检查功能,以确保在开发时使用正确的分支
如果您只需要在gemfile中指向本地存储库中的分支,就像gem一样:
然后在
bundle
-ing之前为该"gem"创建bundler配置(请记住,存储库名称可能与gem的名称不同,尽管这不是常态) .
奇怪的是,当您启动本地服务器时,当前在本地检出的任何分支都将处于活动状态 . 如果需要进行更改或更改分支,则可能需要重新启动服务器(除非您具有某种类型的自动重新加载功能) .
一个问题是当配置设置已经 Build 时(让's say via the mechanism above), and you need to use/reference a remote git gem - you don'需要捆绑器配置来使用远程git gem(如果你有一个活动配置,你将得到
local override
错误) .检查以确保您没有给定gem的本地设置:
如果这样做,请删除该gem的配置:
然后在gemfile中指向远程repo和branch:
更多信息:
Git Gems:http://bundler.io/v1.7/git.html
"bundle config":http://bundler.io/v1.7/man/bundle-config.1.html
您在Gemfile中引用的分支需要与在本地存储库中签出的分支相同 . 请注意,在本地存储库中提交后,您需要在主应用程序上运行bundle install,以便重建Gemfile.lock以包含新的版本哈希并提交它 . 我建议使用下面的gem,因为它可以为您自动执行此过程,也可以帮助其他方案 . 有关详细信息,请参阅gem页面 .
https://github.com/EPI-USE-Labs/git-bundle
Full detail of what happens:
当您在gemfile中使用git存储库时,您可以使用bundle local overrides for development,它将在您的Gemfile.lock中存储修订哈希值 . 在 生产环境 时,这些精确的修订版哈希将在运行bundle install时检出 .
Gemfile:
gem 'example', git: 'https://github.com/your_name/example.git', branch: :master
Bundle config shell command:
bundle config local.example /path/to/local/git/repository
Gemfile.lock (auto generated):
GIT remote: https://github.com/your_name/example.git revision: b9270e61abb89e1ff77fb8cfacb463e4d04388ad branch: master
这个GitHub issue建议解决方法可能是删除
Gemfile.lock
并再次执行bundle install
.