我正在将我的应用程序Rails应用程序从3.2.3升级到3.2.11,以解决最近发现的安全漏洞。
我用以下内容更新了我的Gem文件:
gem 'rails', '3.2.11'
并运行bundle update rails
完成升级还需要做些什么吗?我怎么知道我是否还需要升级任何其他宝石?
答案 0 :(得分:2)
我昨天也从3.2.3
升级到3.2.11
。
确实,您需要gem 'rails', '3.2.11'
,运行bundle update rails
。
这将使用所有新的rails 3.2.11依赖项更新您的Gemfile.lock
,即actionmailer,actionpack,activemodel,activerecord,activesupport等。
然后你应该运行你的规格/测试,然后你就可以了。
我们对其他需要较低轨道版本的宝石没有任何特殊问题。
答案 1 :(得分:1)
这确实是运行bundle update rails
的解决方案之一,但在这种情况下,您将安装两个版本的gem - 3.2.3和3.2.11(您可以通过运行{{1}来检查它}),所以你需要手动卸载它们。我认为最好是:
从当前的宝石集中删除所有已安装的宝石(如果没有rvm,那么我认为与gem list
没有太大区别)
bundle update rails
安装Gemfile中未提及的所有宝石(可能是rake,bundler,也可能是其他一些宝石)。例如,如果您在全局gemset中安装了所有gem,那么将删除所有gem,包括bundler,因此您必须首先重新安装它:
rvm gemset empty your_gemset_name
gem install rake
在bundler
的帮助下安装宝石 gem install bundler
运行测试
通过这种方式,您可以自动删除不必要的旧版本的宝石,并且在bundle install
期间,如果宝石版本中存在任何不匹配,捆绑包将告知您。
答案 2 :(得分:0)
当我更新rails时,我就像你一样
gem 'rails', 'VERSION'
这就够了。要了解gem依赖关系,如果我不确定,我会执行此步骤:
检查gem页面(在我的情况下,它主要是我遵循的git页面)
运行我的测试用例,看看是否发生了与新的rails版本相关的错误
测试宝石manualy,在页面上可能有1-2个功能的小宝石。只需点击它们。
在你的情况下,我会说它有点更新,所以不要担心这么多只是想想每个宝石正在做什么和快速测试!更常见的是,宝石无法处理旧的轨道版本,而是新版本。
答案 3 :(得分:0)
我今天也升级到rails 3.2.11。更改gem文件并运行bundle update rails
后,我现在运行gem list
并发现我已经安装了rails 3.2.9和3.2.11。我还发现了其他需要清理的宝石。这是我在清理这些旧版本时发现的一篇很棒的帖子:Uninstall old versions of Ruby gems。