【问题标题】:Upgrading to Rails 4.2 issues升级到 Rails 4.2 问题
【发布时间】:2015-03-14 07:03:35
【问题描述】:

我正在尝试从 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 2.2.0 并已捆绑。
  • 看起来它与我的一些宝石不兼容。在这种情况下原型导轨。

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


【解决方案1】:

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

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

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

【讨论】:

    【解决方案2】:

    我相信当他们根据upgrade guide 切换到rails-html-sanitizer 时,他们在 4.2 中从 rails 中删除了 html-scanner,但您似乎可以在 Gemfile 中使用rails-deprecated_sanitizer gem,然后重新包含 html-scanner 库

    gem 'rails-deprecated_sanitizer'
    

    希望这会有所帮助!

    【讨论】:

    • 我曾尝试在某一时刻添加该宝石,但它仍然无法正常工作。我会再试一次。
    • 这不是正确的答案,但如果人们需要使用旧的消毒剂,那就很接近了。问题尤其是一些过时的宝石。
    • 它对我有用,但是,我必须使用 gem install rails-deprecated_sanitizer 手动安装 gem,当我将它添加到 Gemfile 并执行 bundle install 时它不起作用
    【解决方案3】:

    我在旧项目中也遇到过这个问题。这是一个捆绑器 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 在您的加载路径中。

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

    【讨论】:

      猜你喜欢
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      • 2015-05-15
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      相关资源
      最近更新 更多