2

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

我已经更新了我的 Gem 文件: gem 'rails', '3.2.11' 并运行bundle update rails

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

4

4 回答 4

2

我也从昨天升级3.2.3到了。3.2.11

确实你需要gem 'rails', '3.2.11',运行bundle update rails

这将Gemfile.lock使用所有新的 rails 3.2.11 依赖项更新您,即 actionmailer、actionpack、activemodel、activerecord、activesupport 等。

然后你应该运行你的规范/测试,你就可以开始了。

对于需要较低导轨版本的其他 gem,我们没有任何特殊问题。

于 2013-01-10T09:55:48.123 回答
1

它确实是运行的解决方案之一bundle update rails,但在这种情况下,您将安装两个版本的 gems - 3.2.3 和 3.2.11(您可以通过运行检查它gem list),因此您需要手动卸载它们。我认为最好是:

  1. 从当前 gemset 中删除所有已安装的 gem(如果没有 rvm,那么我认为与 没有太大区别bundle update rails

    rvm gemset empty your_gemset_name

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

    gem install rake

    gem install bundler

  3. 在 bundler 的帮助下安装 gems

    bundle install

  4. 运行测试

  5. 如果测试未覆盖 100% 的代码,则手动检查功能

通过这种方式,您将自动摆脱不必要的旧版本的 gems,并且在bundle installbundler 期间也会让您知道 gems 版本中是否存在任何不匹配。

于 2013-01-10T22:04:46.357 回答
0

当我更新rails时,我会像你一样做

gem 'rails', 'VERSION'

这就够了。要了解 gem 依赖项,如果我不确定,我会执行以下步骤:

1

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

2

运行我的测试用例以查看是否发生与新 Rails 版本相关的错误

3

手动测试 gems,这是因为页面上可能有 1-2 个功能的小宝石。只需点击它们即可。

在你的情况下,我会说它是一个小更新,所以不要担心太多,只要想想每个宝石在做什么并快速测试!gems 不能处理旧版本的rails 比新版本更常见。

于 2013-01-10T09:13:51.757 回答
0

我今天也升级到 rails 3.2.11。更改 gem 文件并运行后,bundle update rails我现在运行gem list并发现我安装了 rails 3.2.9 和 3.2.11。我还发现了其他需要清理的宝石。这是我在清理这些旧版本时发现的一篇很棒的 SO 帖子:卸载旧版本的 Ruby gems

于 2013-01-11T04:33:36.873 回答