我试图从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)
上位机的问题(和我的问题)是与prototype-rails gem的不兼容有关。这可以通过直接从github上使用prototype-rails的 "4.2 "分支来解决。修改你的Gemfile条目如下。
gem 'prototype-rails', github: 'rails/prototype-rails', branch: '4.2'
请注意,从Rails 5开始将不支持prototype-rails gem,所以现在是删除这个依赖的好时机。
我相信他们在4.2版本中,当他们改用了 rails-html-sanitizer
根据 升级指南 但似乎你可以使用 rails-deprecated_sanitizer
宝石 到您的 Gemfile 中,然后重新包含 html-scanner 库。
gem 'rails-deprecated_sanitizer'
希望这能帮助你
我在一个遗留项目上也遇到过这个问题。这是一个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并启动服务器了。