我正在使用this excellent tutorial学习Ruby on Rails,我注意到作者总是在Gemfile中指定Gem版本号(参见here,here和{{3 }})。这是我养成习惯的东西吗?如果是这样,我如何知道要指定的版本?
答案 0 :(得分:2)
我建议不指定gem版本,直到您发现与特定gem不兼容。
Bundler本身会锁定特定版本的宝石。您只需记住在生产计算机上使用bundle install --deployment
,并仅在您的开发计算机上(或在另一个目录中)进行升级。
对项目进行良好的测试覆盖非常重要。如果没有测试,您将不知道升级何时会破坏您的应用程序。我谦卑地建议以下路线:
rake test
(只是为了确保一切正常) bundle update
rake test
如果测试通过,请在Gemfile.lock
中提交更改。如果测试未通过,并且您想要锁定给定的gem,则然后在Gemfile中指定版本。
您可以在捆绑文档中了解install --deployment和deploying。
答案 1 :(得分:1)
特定版本的“冻结”宝石非常重要,如果您正在为生产做准备,这是必须的。宝石,库和应用程序随着时间的推移而发展 - 并且随着时间的推移,有时需要更改Gem API,这样可以提高与以前版本的向后兼容性。
有一些古老而好的文章关于“冻结”Rails版本(我们称之为“过去指定Gem版本”),例如DHH's Freeze is cool, so freeze for goodness sake和Should I freeze my Rails application?。
为了知道要指定的版本,我建议您指定最新版本。只需gem install gemname
然后gem list gemname
即可查看刚刚安装的版本。