2011-09-30 48 views
1

我喜歡儘可能多地提供寶石,除了那些必須在每個平臺上構建的應用程序(libxml等),但有時我喜歡使用一些流血的代碼而不是gem服務器上的寶石。如何可靠地使用供應商/寶石中的github代碼?

我可以直接將github gem克隆到vendor/gems中。我想我可以,但它會影響我的應用程序代碼,因爲它已經是一個git存儲庫?我想爲這些寶石做週期性的git pulls,這樣我就不必更新每一塊寶石,也許不會破壞一些東西。

回答

6

使用vendor/gems已被棄用,轉而使用BundlerGemfile來代替。供應商系統有一些缺陷,包括缺乏對編譯擴展的支持,所以它從來不是一個完整的解決方案。

根據需要,最好將您的版本鎖定在Gemfile中。如果您想使用最新版本,請註釋版本聲明,刪除Gemfile.lock並再次執行bundle install

這往往是創業板的發行版有你需要通過派生和固定修復缺陷的情況下,因此很容易跟蹤此:

gem 'broken-gem', :git => 'git://github.com/myname/broken-gem.git' 

這裏的優點是Gemfile作爲記錄你需要什麼版本的寶石,以及在哪裏得到它們。 vendor/gems讓人們在黑暗中知道該版本來自哪裏。

+2

也可能與'bundle package'命令相關:http://gembundler.com/bundle_package.html –

+2

All correct notice:更新一個gem不要刪除整個'Gemfile.lock'只是運行'bundle update '。通過這種方式,您只會更新該寶石及其依賴關係,而將其他寶石固定到以前的版本。 – Fabio

+0

這是非常方便,很高興知道。 – tadman

相關問題