2012-12-13 19 views
3

我正在運行bundler v1.3.0.pre.2並試圖讓bundler捆綁本地git存放寶石的倉庫,放入Rails應用程序中。在/ path/to/local/git/repo上的{gem}的本地覆蓋使用分支開發,但Gemfile指定開發

的Gemfile:

gem 'mygem', :github => 'myrepo/mygem', :branch => 'develop' 

配置:

bundle config local.mygem /path/to/local/git/repo 

捆綁安裝引發錯誤:

本地覆蓋了mygem在/路徑/到/本地/混帳/回購協議使用分支 開發但Gemfile指定開發

這是一個錯誤?我看到分支名稱完全相同。什麼可能是錯的? Bundler v1.2.3也有同樣的錯誤

回答

0

GitHub issue建議解決方法可能是刪除Gemfile.lock並再次做bundle install

8

您可以使用本地寶石,甚至你的工作在這樣

gem 'rspec-rails', path: '~/forks/rspec-rails', branch: 'feature-branch' 

分支只要改變githubpath,然後

bundle install 

而且儘可能捆綁配置推移,雖然它在文檔中,我從不需要像上面那樣更改本地配置。

使用這種方法,我從來沒有需要刪除Gemfile.lock,它只是把你的本地回購更改。

雖然我不建議這樣做,你可以禁用通過捆綁使用的分支檢查功能開發

bundle config disable_local_branch_check true 
3

時,以確保您使用的是正確的分支。如果你只需要內指向一個分支你使用像寶石本地資源庫,在Gemfile中:

gem 'gem-name', :path=> 'relative/path/to/directory' 

那麼對於bundle之前的「寶石」 -ing創建捆綁配置

(請記住存儲庫名稱可能不同於gem的名稱,雖然這不是標準)。

bundle config local.repository-name relative/path/to/directory 


奇妙的是,不管分支目前已簽出本地,當你啓動一個本地服務器將被激活。如果您需要進行更改或更改分支,您可能需要重新啓動服務器(除非您有某種類型的自動重新加載功能)。

一個問題是當一個配置設置已經建立(比如說通過上面的機制),並且你需要使用/引用一個遠程git gem - 你不需要使用bundler配置來使用遠程git gem(if你有一個活動的配置,你會得到local override錯誤)。

檢查以確保你沒有給定的寶石本地設置:

bundle config local.gem-name 

如果你這樣做,刪除了創業板配置:

bundle config --delete local.gem-name 

然後指向遠程回購和分支在的Gemfile:

gem 'gem-name', :path => 'https://github.com/reponame.git', :branch => 'branch_name' 

更多信息:

Git的寶石:http://bundler.io/v1.7/git.html

「捆綁配置」:http://bundler.io/v1.7/man/bundle-config.1.html

+0

主要爲+1包括逆轉筆記 – digitalextremist

0

在你的Gemfile參考分支需要是一樣的,你已經在本地存儲庫中籤出。請注意,在本地存儲庫中提交之後,需要在主應用程序上運行bundle install,以便重新構建Gemfile.lock以包含新修訂哈希並將其提交。我建議使用下面的gem,因爲它可以爲你自動完成這個過程,也可以幫助其他場景。查看寶石頁面以獲取確切的細節。

https://github.com/EPI-USE-Labs/git-bundle

發生什麼完全細節:

當您使用在你的Gemfile一個Git倉庫,你可以使用bundle local overrides for development將保存修改散列在Gemfile.lock的。在生產時,這些確切的修訂散列將在運行軟件包安裝時檢出。

的Gemfile: gem 'example', git: 'https://github.com/your_name/example.git', branch: :master

束配置的外殼命令: bundle config local.example /path/to/local/git/repository

Gemfile.lock的(自動生成的): GIT remote: https://github.com/your_name/example.git revision: b9270e61abb89e1ff77fb8cfacb463e4d04388ad branch: master