升级到Rails 4.2问题

时间:2015-01-15 19:03:25

标签: ruby-on-rails ruby ruby-on-rails-4.2

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

3 个答案:

答案 0 :(得分:8)

OP的问题(以及我的问题)与prototype-rails gem中的不兼容性有关。这可以通过使用" 4.2" prototype-rails的分支直接来自github。修改您的Gemfile条目,如下所示:

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

请注意,从Rails 5开始,将不再支持prototype-rails gem,因此现在可以像删除此依赖项一样好。

答案 1 :(得分:3)

我相信他们在根据rails-html-sanitizer切换到upgrade guide时从4.2中删除了html-scanner但是你似乎可以使用rails-deprecated_sanitizer gem到你的Gem文件然后重新包括html-scanner库

gem 'rails-deprecated_sanitizer'

希望这有帮助!

答案 2 :(得分:1)

我在旧项目中也遇到了这个问题。这是捆包机1.17.3 /红宝石2.4 /导轨4.2.11.3,它把我推向高处。

以下令人讨厌的骇客行之有效:

宝石文件:

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在您的加载路径中。

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