我应该在Gemfile中为每个gem添加版本吗?这是最佳做法吗?刚刚推荐?
答案 0 :(得分:5)
我更喜欢将所有宝石锁定到生产中的特定版本。考虑到可能有更新版本破坏与其他gem的兼容性或弃用某些API,您希望100%确保在部署时不会因为gem不一致而使应用程序崩溃。更新gems只应在开发中本地完成,方法是更新Gemfile条目并针对其余代码和库测试每个新版本。
答案 1 :(得分:2)
通常情况下,除非被指示这样做,否则您不需要(由宝石作者或由于不兼容性而引起的用户反馈)。偶尔你可能会使用某些宝石的边缘版本,所以无论如何它都无关紧要:
# 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"
答案 2 :(得分:1)
我认为你不应该指定每个gem的版本,因为已经在Gemfile.lock
指定了当前工作宝石的版本。
此外,如果您这样做,bundle update
命令将毫无用处。您应该能够使用此命令更新gem。如果测试通过并且您的应用程序继续正常工作,则只需提交新的Gemfile.lock