我正在将我的应用程序 Rails 应用程序从 3.2.3 升级到 3.2.11,以解决最近发现的安全漏洞。
我已经更新了我的 Gem 文件:
gem 'rails', '3.2.11'
并运行bundle update rails
我还需要做些什么来完成升级吗?我怎么知道我是否还需要升级我的任何其他宝石?
我正在将我的应用程序 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、activemodel、activerecord、activesupport 等。
然后你应该运行你的规范/测试,你就可以开始了。
对于需要较低导轨版本的其他 gem,我们没有任何特殊问题。
它确实是运行的解决方案之一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
运行测试
通过这种方式,您将自动摆脱不必要的旧版本的 gems,并且在bundle install
bundler 期间也会让您知道 gems 版本中是否存在任何不匹配。
当我更新rails时,我会像你一样做
gem 'rails', 'VERSION'
这就够了。要了解 gem 依赖项,如果我不确定,我会执行以下步骤:
检查 gem 页面(在我的情况下,它主要是我关注的 git 页面)
运行我的测试用例以查看是否发生与新 Rails 版本相关的错误
手动测试 gems,这是因为页面上可能有 1-2 个功能的小宝石。只需点击它们即可。
在你的情况下,我会说它是一个小更新,所以不要担心太多,只要想想每个宝石在做什么并快速测试!gems 不能处理旧版本的rails 比新版本更常见。
我今天也升级到 rails 3.2.11。更改 gem 文件并运行后,bundle update rails
我现在运行gem list
并发现我安装了 rails 3.2.9 和 3.2.11。我还发现了其他需要清理的宝石。这是我在清理这些旧版本时发现的一篇很棒的 SO 帖子:卸载旧版本的 Ruby gems。