升级到Rails 4.2问题

问题描述 投票:4回答:3

我试图从Rails 4.1.9升级到Rails 4.2,当我试图运行控制台或服务器时,我得到以下错误。有什么想法吗?我以为html-scanner gem包含在Action::View中。

gems/activesupport-4.2.0/lib/active_support/dependencies.rb:274:in `require': cannot load such file -- action_view/vendor/html-scanner (LoadError)
ruby-on-rails ruby ruby-on-rails-4.2
3个回答
8
投票

上位机的问题(和我的问题)是与prototype-rails gem的不兼容有关。这可以通过直接从github上使用prototype-rails的 "4.2 "分支来解决。修改你的Gemfile条目如下。

gem 'prototype-rails', github: 'rails/prototype-rails', branch: '4.2'

请注意,从Rails 5开始将不支持prototype-rails gem,所以现在是删除这个依赖的好时机。


3
投票

我相信他们在4.2版本中,当他们改用了 rails-html-sanitizer 根据 升级指南 但似乎你可以使用 rails-deprecated_sanitizer 宝石 到您的 Gemfile 中,然后重新包含 html-scanner 库。

gem 'rails-deprecated_sanitizer'

希望这能帮助你


1
投票

我在一个遗留项目上也遇到过这个问题。这是一个1.17.3 ruby 2.4 rails 4.2.11.3的捆绑程序,它把我逼上了绝路。

下面这个讨厌的黑客成功了。

Gemfile:

gem 'rails-deprecated_sanitizer'
gem 'prototype-rails', git: 'https://github.com/rails/prototype-rails.git', branch: '4.2'

但这还不够 然后我必须让rails-deprecated_sanitizer出现在宝石想要的地方。

所以在我的项目中,我创建了libaction_viewvendorhtml-scanner.rb。

require 'rails-deprecated_sanitizer'
require 'rails/deprecated_sanitizer/railtie'
require 'rails/deprecated_sanitizer/html-scanner'

(我怀疑这三个元素是否都需要)

当然,这取决于lib是否在你的加载路径中。

这就解决了这个问题,我终于能够重置db并启动服务器了。

© www.soinside.com 2019 - 2024. All rights reserved.