2016-02-02 15 views
8

Sto aggiornando un'applicazione da Rails 4.2 a Rails 5 beta1.1 in sviluppo. L'app ha funzionato bene prima dell'aggiornamento. Ho seguito i passaggi di aggiornamento di base (aggiornamento di Ruby, aggiornamento di Rails e passaggi correlati a: http://edgeguides.rubyonrails.org/upgrading_ruby_on_rails.html). Gemfile è stato aggiornato anche alle ultime gemme.Rails 5 Upgrade: Nessun middleware da inserire dopo: ActionDispatch :: ParamsParser (RuntimeError)

Quando eseguo $ rotaie middleware o $ rotaie console o $ guide del server ottengo il seguente errore:

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>' 

Questo è legato al fatto che ActionDispatch :: ParamsParser è stato rimosso dal Rails 5 beta middleware (https://github.com/rails/rails/commit/38d2bf5fd1f3e014f2397898d371c339baa627b1). Ma in qualche modo la mia app sembra ancora cercarla.

Ho provato varie cose con ActionDispatch :: ParamsParser in config/application.rb, come cancellarlo, e, quando non ha funzionato, ho anche provato ad aggiungerlo. Lo stesso errore. Un modo per superare questo errore?

risposta

9

Credo che questo errore sia stato causato da una gemma che non è stata ancora aggiornata per Rails 5. Ho utilizzato la gemma remotipart (https://github.com/JangoSteve/remotipart). È stato molto utile Quando lo rimuovo dal file gem, l'errore annotato nella domanda scompare.

+0

Ciao, cosa hai usato al posto del telecomando allora? –

+2

Ho finito per prendere i dati dagli input del modulo con javascript e facendo una chiamata post AJAX per inviare il modulo. Potrebbe non essere la "via delle rotaie", ma trovo che sia una soluzione flessibile per l'invio di moduli remoti. – TH1J2

+1

Esattamente con lo stesso errore, sono arrivato con una soluzione parziale in quanto questa PR (https://github.com/JangoSteve/remotipart/pull/154) non era ancora integrata: aggiungila al tuo gemfile 'gem 'remotipart', '~> 1.2', github: 'pedantix/remotipart', rif: '7f7989db572976816c03508c335bbc1d8230af78'' – sequielo

Problemi correlati