1

我正在使用这个优秀的教程学习 Ruby on Rails ,我注意到作者总是在 Gemfile 中指定 Gem 版本号(请参阅此处此处此处)。这是我应该养成的习惯吗?如果是这样,我怎么知道要指定哪个版本?

4

2 回答 2

2

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

Bundler 将自己锁定特定版本的 gem。您只需要记住bundle install --deployment在生产机器上使用,并且只在您的开发机器(或另一个目录)上进行升级。

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

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

如果测试通过,则在Gemfile.lock. 如果测试未通过,并且您想锁定给定的 gem,在 Gemfile 中指定版本。

您可以在 bundler 文档中阅读有关install --deployment部署的信息。

于 2011-09-12T12:46:02.340 回答
1

在特定版本中“冻结”宝石很重要,如果您正在为生产做准备,这是强制性的。Gems、库和应用程序随着时间的推移而发展——为了不断发展,有时需要更改 Gem API,这破坏了与以前版本的向后兼容性。

有几篇关于“冻结”Rails 版本(过去我们称之为“指定 Gem 版本”的方式)的古老而优秀的文章,例如DHH 的 Freeze 很酷,所以看在上帝的份上冻结,以及我应该冻结我的轨道应用?.

为了知道要指定哪个版本,我建议您指定最新版本。只是gem install gemname然后gem list gemname看看你刚刚安装了什么版本。

于 2011-09-12T12:39:34.990 回答