5

我正在尝试从 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)
4

3 回答 3

9

OP 的问题(和我的)与原型导轨 gem 中的不兼容有关。这可以通过直接从 github 使用原型导轨的“4.2”分支来解决。修改您的 Gemfile 条目,如下所示:

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

请注意,从 Rails 5 开始,prototype-rails gem 将不再受支持,因此现在是删除此依赖项的最佳时机。

于 2015-04-07T05:47:30.180 回答
3

我相信他们在rails-html-sanitizer根据升级指南切换到 4.2 时从 rails 中删除了 html-scanner但似乎您可以使用rails-deprecated_sanitizergem到您的 Gemfile 然后重新包含 html-scanner 库

gem 'rails-deprecated_sanitizer'

希望这可以帮助!

于 2015-01-16T01:53:17.120 回答
1

我在遗留项目中也遇到过这个问题。这是一个捆绑器 1.17.3 / ruby​​ 2.4 / rails 4.2.11.3,它把我逼到了墙角。

以下讨厌的 hack 奏效了:

宝石文件:

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

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

所以在我的项目中,我创建了 lib/action_view/vendor/html-scanner.rb:

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

(我怀疑这三个都需要,请注意)

这当然取决于 lib 在您的加载路径中。

这解决了问题,我终于能够重置数据库并启动服务器。

于 2020-05-25T14:46:50.280 回答