7

我应该在我的 Gemfile 中添加每个 gem 的版本吗?这是最佳实践吗?刚推荐?

4

3 回答 3

5

我确实更喜欢将我所有的 gem 锁定到生产中的特定版本。考虑到可能有较新的版本会破坏与其他 gem 的兼容性或弃用某些 API,因此您希望 100% 确保在部署时不会因为 gem 不一致而意外损坏应用程序。更新 gem 只能在本地开发中完成,通过更新 Gemfile 条目并针对您的其余代码和库测试每个新版本。

于 2012-07-06T09:52:47.643 回答
2

通常,您不需要这样做,除非有指示(由 gem 作者或由于不兼容而来自用户的反馈)。有时您可能会使用某些 gem 的边缘版本,所以无论如何都没关系:

# Bundle edge Rails instead:
gem 'rails', :git => 'git://github.com/rails/rails.git'
gem 'arel',  :git => 'git://github.com/rails/arel.git'
gem "rack", :git => "git://github.com/rack/rack.git"
于 2012-07-06T06:24:04.383 回答
1

我认为您不应该指定每个 gem 的版本,因为当前工作 gem 的版本已经在Gemfile.lock.

此外,如果您这样做,bundle update命令将毫无用处。您应该能够使用此命令来更新 gem。如果测试通过并且您的应用程序继续正常工作,只需提交新的Gemfile.lock

于 2012-07-06T09:41:30.987 回答