【问题标题】:Rails 5 Upgrade: No such middleware to insert after: ActionDispatch::ParamsParser (RuntimeError)Rails 5 升级:没有要插入的中间件:ActionDispatch::ParamsParser (RuntimeError)
【发布时间】:2016-02-02 22:53:50
【问题描述】:

我正在将开发中的应用从 Rails 4.2 升级到 Rails 5 beta1.1。应用程序在升级前运行良好。我已经完成了基本的升级步骤(更新 Ruby、更新 Rails 和相关步骤:http://edgeguides.rubyonrails.org/upgrading_ruby_on_rails.html)。 Gemfile 也已更新为最新的 Gems。

当我运行 $ rails middleware 或 $ rails console 或 $ rails server 时,我收到以下错误:

No such middleware to insert after: ActionDispatch::ParamsParser
.../.rvm/gems/ruby-2.3.0/bundler/gems/rails-dbf67b3a6f54/actionpack/lib/action_dispatch/middleware/stack.rb:108:in `assert_index'
.../.rvm/gems/ruby-2.3.0/bundler/gems/rails-dbf67b3a6f54/actionpack/lib/action_dispatch/middleware/stack.rb:80:in `insert_after'
.../.rvm/gems/ruby-2.3.0/bundler/gems/rails-dbf67b3a6f54/railties/lib/rails/configuration.rb:69:in `block in merge_into'
.../.rvm/gems/ruby-2.3.0/bundler/gems/rails-dbf67b3a6f54/railties/lib/rails/configuration.rb:68:in `each'
.../.rvm/gems/ruby-2.3.0/bundler/gems/rails-dbf67b3a6f54/railties/lib/rails/configuration.rb:68:in `merge_into'
.../.rvm/gems/ruby-2.3.0/bundler/gems/rails-dbf67b3a6f54/railties/lib/rails/engine.rb:507:in `block in app'
.../.rvm/gems/ruby-2.3.0/bundler/gems/rails-dbf67b3a6f54/railties/lib/rails/engine.rb:504:in `synchronize'
.../.rvm/gems/ruby-2.3.0/bundler/gems/rails-dbf67b3a6f54/railties/lib/rails/engine.rb:504:in `app'
.../.rvm/gems/ruby-2.3.0/bundler/gems/rails-dbf67b3a6f54/railties/lib/rails/application/finisher.rb:34:in `block in <module:Finisher>'
.../.rvm/gems/ruby-2.3.0/bundler/gems/rails-dbf67b3a6f54/railties/lib/rails/initializable.rb:30:in `instance_exec'
.../.rvm/gems/ruby-2.3.0/bundler/gems/rails-dbf67b3a6f54/railties/lib/rails/initializable.rb:30:in `run'
.../.rvm/gems/ruby-2.3.0/bundler/gems/rails-dbf67b3a6f54/railties/lib/rails/initializable.rb:55:in `block in run_initializers'
.../.rvm/gems/ruby-2.3.0/bundler/gems/rails-dbf67b3a6f54/railties/lib/rails/initializable.rb:54:in `run_initializers'
.../.rvm/gems/ruby-2.3.0/bundler/gems/rails-dbf67b3a6f54/railties/lib/rails/application.rb:350:in `initialize!'
.../config/environment.rb:5:in `<top (required)>'
.../.rvm/gems/ruby-2.3.0/bundler/gems/rails-dbf67b3a6f54/activesupport/lib/active_support/dependencies.rb:302:in `require'
.../.rvm/gems/ruby-2.3.0/bundler/gems/rails-dbf67b3a6f54/activesupport/lib/active_support/dependencies.rb:302:in `block in require'
.../.rvm/gems/ruby-2.3.0/bundler/gems/rails-dbf67b3a6f54/activesupport/lib/active_support/dependencies.rb:268:in `load_dependency'
.../.rvm/gems/ruby-2.3.0/bundler/gems/rails-dbf67b3a6f54/activesupport/lib/active_support/dependencies.rb:302:in `require'
.../.rvm/gems/ruby-2.3.0/bundler/gems/rails-dbf67b3a6f54/railties/lib/rails/application.rb:326:in `require_environment!'
.../.rvm/gems/ruby-2.3.0/bundler/gems/rails-dbf67b3a6f54/railties/lib/rails/application.rb:446:in `block in run_tasks_blocks'
.../.rvm/gems/ruby-2.3.0/bundler/gems/rails-dbf67b3a6f54/railties/lib/rails/commands/rake_proxy.rb:13:in `block in run_rake_task'
.../.rvm/gems/ruby-2.3.0/bundler/gems/rails-dbf67b3a6f54/railties/lib/rails/commands/rake_proxy.rb:10:in `run_rake_task'
.../.rvm/gems/ruby-2.3.0/bundler/gems/rails-dbf67b3a6f54/railties/lib/rails/commands/commands_tasks.rb:51:in `run_command!'
.../.rvm/gems/ruby-2.3.0/bundler/gems/rails-dbf67b3a6f54/railties/lib/rails/command.rb:20:in `run'
.../.rvm/gems/ruby-2.3.0/bundler/gems/rails-dbf67b3a6f54/railties/lib/rails/commands.rb:19:in `<top (required)>'
bin/rails:4:in `require'
bin/rails:4:in `<main>'

这与 ActionDispatch::ParamsParser 已从 Rails 5 beta 中间件 (https://github.com/rails/rails/commit/38d2bf5fd1f3e014f2397898d371c339baa627b1) 中删除有关。但是,不知何故,我的应用似乎仍在寻找它。

我在 config/application.rb 中尝试了 ActionDispatch::ParamsParser 的各种操作,例如删除它,当这不起作用时,我也尝试添加它。同样的错误。有什么办法可以解决这个错误?

【问题讨论】:

    标签: ruby rack middleware ruby-on-rails-5


    【解决方案1】:

    我相信这个错误是由尚未针对 Rails 5 更新的 gem 引起的。我一直在使用 gem remotipart (https://github.com/JangoSteve/remotipart)。这非常有帮助。当我从 gem 文件中删除它时,问题中提到的错误就消失了。

    【讨论】:

    • 你好,那你用什么代替了remoteit?
    • 我最终使用 javascript 从表单输入中获取数据并执行 AJAX 发布调用以提交表单。可能不是“rails 方式”,但我发现它是提交远程表单的灵活解决方案。
    • 同样的错误,我提供了部分解决方案,因为此 PR (github.com/JangoSteve/remotipart/pull/154) 尚未集成:将此添加到您的 gemfile gem 'remotipart', '~&gt; 1.2', github: 'pedantix/remotipart', ref: '7f7989db572976816c03508c335bbc1d8230af78'
    猜你喜欢
    • 1970-01-01
    • 2013-06-12
    • 1970-01-01
    • 1970-01-01
    • 2011-11-25
    • 2013-03-05
    • 2017-03-09
    • 1970-01-01
    • 1970-01-01
    相关资源
    最近更新 更多