我正在将我的应用程序Rails应用程序从3.2.3升级到3.2.11,以解决最近发现的安全漏洞。
我已经更新了我的Gem文件:gem 'rails', '3.2.11'
运行bundle update rails
我还需要做什么来完成升级吗?我怎么知道我是否也需要升级其他宝石?
我昨天也从3.2.3
升级到3.2.11
了。
你确实需要gem 'rails', '3.2.11'
,运行bundle update rails
。
这将更新你的Gemfile.lock
与所有新的rails 3.2.11依赖,即actionmailer, actionpack, activmodel, activerecord, activessupport,和其他。
你应该运行你的规格/测试,然后你就可以开始了。
这确实是运行bundle update rails
的解决方案之一,但在这种情况下,您将安装两个版本的gems - 3.2.3和3.2.11(您可以通过运行gem list
来检查它),因此您需要手动卸载它们。我认为最好是:
-
从当前gemset中删除所有已安装的gem(如果没有rvm,那么我认为与
bundle update rails
没有太大区别)rvm gemset empty your_gemset_name
-
安装所有你需要的Gemfile中没有提到的gem(可能是rake, bundler,也许是其他一些)。例如,如果你在全局gemset中安装了所有的gem,那么所有的gem都会被删除,包括bundler,所以你必须先重新安装它:
gem install rake
gem install bundler
-
在bundler的帮助下安装gems
bundle install
-
运行测试
- 如果测试没有覆盖100%的代码,则手动检查功能
通过这种方式,你将自动摆脱不必要的旧版本的gems,并且在bundle install
期间,bundler会告诉你是否有任何不匹配的gems版本。
当我更新rails时,我像你一样做同样的事情
gem 'rails', 'VERSION'
这就够了。如果我不确定,我可以执行以下步骤来了解gem的依赖关系:
<标题> 1检查gem页面(在我的情况下主要是git页面)
<标题> 2 h1> 行我的测试用例,看看是否发生与新rails版本相关的错误 <标题> 3 手动测试宝石,通常情况下,你的页面上可能有1-2个功能的小宝石。点击它们就可以了。在你的情况下,我会说这是一个小小的更新,所以不要担心这么多,只是想一下每个宝石正在做什么和快速测试!比起新版本,gem更容易处理旧版本的rails。
标题>标题>标题>我今天也升级到rails 3.2.11。在更改gem文件并运行bundle update rails
之后,我现在运行gem list
并发现我安装了rails 3.2.9和3.2.11。我还发现了其他需要清理的宝石。这是我找到的一篇关于清理旧版本的帖子:卸载旧版本的Ruby gems。