Rails从3.2.3升级到3.2.11

时间:2013-01-10 08:32:53

标签: ruby-on-rails ruby-on-rails-3 ruby-on-rails-3.2

我正在将我的应用程序Rails应用程序从3.2.3升级到3.2.11,以解决最近发现的安全漏洞。

我用以下内容更新了我的Gem文件: gem 'rails', '3.2.11' 并运行bundle update rails

完成升级还需要做些什么吗?我怎么知道我是否还需要升级任何其他宝石?

4 个答案:

答案 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}来检查它}),所以你需要手动卸载它们。我认为最好是:

  1. 从当前的宝石集中删除所有已安装的宝石(如果没有rvm,那么我认为与gem list没有太大区别)

    bundle update rails

  2. 安装Gemfile中未提及的所有宝石(可能是rake,bundler,也可能是其他一些宝石)。例如,如果您在全局gemset中安装了所有gem,那么将删除所有gem,包括bundler,因此您必须首先重新安装它:

    rvm gemset empty your_gemset_name

    gem install rake

  3. 在bundler

    的帮助下安装宝石

    gem install bundler

  4. 运行测试

  5. 如果测试不能覆盖100%的代码,则手动检查功能
  6. 通过这种方式,您可以自动删除不必要的旧版本的宝石,并且在bundle install期间,如果宝石版本中存在任何不匹配,捆绑包将告知您。

答案 2 :(得分:0)

当我更新rails时,我就像你一样

gem 'rails', 'VERSION'

这就够了。要了解gem依赖关系,如果我不确定,我会执行此步骤:

1

检查gem页面(在我的情况下,它主要是我遵循的git页面)

2

运行我的测试用例,看看是否发生了与新的rails版本相关的错误

3

测试宝石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