2011-09-30 52 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

相关问题