我正在使用这个优秀的教程学习 Ruby on Rails ,我注意到作者总是在 Gemfile 中指定 Gem 版本号(请参阅此处、此处和此处)。这是我应该养成的习惯吗?如果是这样,我怎么知道要指定哪个版本?
问问题
201 次
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 回答