在构建Ruby on Rails应用程序时指定Gem版本

时间:2011-09-12 12:24:26

标签: ruby-on-rails gemfile

我正在使用this excellent tutorial学习Ruby on Rails,我注意到作者总是在Gemfile中指定Gem版本号(参见herehere和{{3 }})。这是我养成习惯的东西吗?如果是这样,我如何知道要指定的版本?

2 个答案:

答案 0 :(得分:2)

我建议指定gem版本,直到您发现与特定gem不兼容。

Bundler本身会锁定特定版本的宝石。您只需记住在生产计算机上使用bundle install --deployment,并仅在您的开发计算机上(或在另一个目录中)进行升级。

对项目进行良好的测试覆盖非常重要。如果没有测试,您将不知道升级何时会破坏您的应用程序。我谦卑地建议以下路线:

  • 运行rake test (只是为了确保一切正常)
  • 运行bundle update
  • 运行rake test

如果测试通过,请在Gemfile.lock中提交更改。如果测试未通过,并且您想要锁定给定的gem,则然后在Gemfile中指定版本。

您可以在捆绑文档中了解install --deploymentdeploying

答案 1 :(得分:1)

特定版本的“冻结”宝石非常重要,如果您正在为生产做准备,这是必须的。宝石,库和应用程序随着时间的推移而发展 - 并且随着时间的推移,有时需要更改Gem API,这样可以提高与以前版本的向后兼容性。

有一些古老而好的文章关于“冻结”Rails版本(我们称之为“过去指定Gem版本”),例如DHH's Freeze is cool, so freeze for goodness sakeShould I freeze my Rails application?

为了知道要指定的版本,我建议您指定最新版本。只需gem install gemname然后gem list gemname即可查看刚刚安装的版本。