【发布时间】:2011-09-12 12:24:25
【问题描述】:
我正在使用this excellent tutorial 学习Ruby on Rails,我注意到作者总是在Gemfile 中指定Gem 版本号(参见here、here 和here)。这是我应该养成的习惯吗?如果是这样,我怎么知道要指定哪个版本?
【问题讨论】:
标签: ruby-on-rails gemfile
我正在使用this excellent tutorial 学习Ruby on Rails,我注意到作者总是在Gemfile 中指定Gem 版本号(参见here、here 和here)。这是我应该养成的习惯吗?如果是这样,我怎么知道要指定哪个版本?
【问题讨论】:
标签: ruby-on-rails gemfile
我建议不要指定 gem 版本,直到您发现与特定 gem 不兼容。
Bundler 将自己锁定特定版本的 gem。您只需要记住在生产机器上使用bundle install --deployment,并且只在您的开发机器(或其他目录)上进行升级。
对您的项目进行良好的测试覆盖率非常重要。如果没有测试,您将不知道升级何时会破坏您的应用程序。我谦虚地建议以下路线:
rake test (只是为了确保一切正常)
bundle update
rake test
如果测试通过,请在Gemfile.lock 中提交更改。如果测试没有通过,并且您想锁定给定的 gem,然后在 Gemfile 中指定版本。
您可以在捆绑器文档中阅读有关 install --deployment 和 deploying 的信息。
【讨论】:
“冻结”特定版本的宝石很重要,如果您正在为生产做准备,则必须这样做。 Gems、库和应用程序会随着时间而发展——为了不断发展,有时需要更改 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 即可查看您刚刚安装的版本。
【讨论】: