0

J'ai lu et essayé d'appliquer ce que Matt Brictson dit dans his awesome article sur les pages d'erreur dynamiques sur Rails. J'utilise Concevoir pour authentifier les utilisateurs, donc je dois mettre authenticate_user au errors_controller.rbRails pages d'erreur dynamiques et Devise: RuntimeError

skip_before_action :authenticate_user!, :only => [:not_found, :internal_server_error] 

Mais cela ne fonctionne pas me donner un RuntimeError des erreurs # not_found quand je tente d'appeler la page /404:

can't add a new key into hash during Iteration

enter image description here

EDIT: Je posterai la application.rb Code trop:

require_relative 'boot' 

require 'rails/all' 

I18n.available_locales = [:en, :de] 

# Require the gems listed in Gemfile, including any gems 
# you've limited to :test, :development, or :production. 
Bundler.require(*Rails.groups) 


module SoundnotationBackend 
    class Application < Rails::Application 
    # Settings in config/environments/* take precedence over those specified 
here. 
    # Application configuration should go into files in config/initializers 
    # -- all .rb files in that directory are automatically loaded. 
     config.i18n.load_path += Dir[Rails.root.join('config', 'locales', 
'**', '*.{rb,yml}')] 

    config.exceptions_app = self.routes 

    config.active_job.queue_adapter = :sidekiq 
    config.after_initialize do 
     ::Git_branch = `git rev-parse --abbrev-ref HEAD` 
    end 
    end 
end 

EDIT 2: ajoutée (espérons-exhaustive) trace de la pile enregistrée par Rails en development.log:

ActionView::Template::Error (can't add a new key into hash during iteration): 
    6:  <meta charset="utf-8" /> 
    7:  <meta name="viewport" content="width=device-width, initial-scale=1.0" /> 
    8:  <%= stylesheet_link_tag 'application', media: 'all' %> 
    9:  <%= javascript_include_tag 'application' %> 
    10:  <%= favicon_link_tag 'soundnotation8.ico' %> 
    11:  <script type="text/javascript" src="https://js.stripe.com/v2/"></script> 
    12: 

app/views/layouts/application.html.erb:9:in `_app_views_layouts_application_html_erb__320037179907821997_69815613536340' 
app/controllers/errors_controller.rb:4:in `not_found' 
    Rendering /home/soundnotation/.rvm/gems/ruby-2.3.1/gems/actionpack-5.0.3/lib/action_dispatch/middleware/templates/rescues/template_error.html.erb within rescues/layout 
    Rendering /home/soundnotation/.rvm/gems/ruby-2.3.1/gems/actionpack-5.0.3/lib/action_dispatch/middleware/templates/rescues/_source.html.erb 
    Rendered /home/soundnotation/.rvm/gems/ruby-2.3.1/gems/actionpack-5.0.3/lib/action_dispatch/middleware/templates/rescues/_source.html.erb (8.5ms) 
    Rendering /home/soundnotation/.rvm/gems/ruby-2.3.1/gems/actionpack-5.0.3/lib/action_dispatch/middleware/templates/rescues/_trace.html.erb 
    Rendered /home/soundnotation/.rvm/gems/ruby-2.3.1/gems/actionpack-5.0.3/lib/action_dispatch/middleware/templates/rescues/_trace.html.erb (1.6ms) 
    Rendering /home/soundnotation/.rvm/gems/ruby-2.3.1/gems/actionpack-5.0.3/lib/action_dispatch/middleware/templates/rescues/_request_and_response.html.erb 
    Rendered /home/soundnotation/.rvm/gems/ruby-2.3.1/gems/actionpack-5.0.3/lib/action_dispatch/middleware/templates/rescues/_request_and_response.html.erb (0.6ms) 
    Rendered /home/soundnotation/.rvm/gems/ruby-2.3.1/gems/actionpack-5.0.3/lib/action_dispatch/middleware/templates/rescues/template_error.html.erb within rescues/layout (71.6ms) 

Savez-vous comment résoudre ce problème? Merci beaucoup à l'avance

+0

Il n'y a pas besoin d'ajouter la authentication_user à la page des erreurs. –

+0

Ok, mais que faire si je ne suis pas connecté? Les pages seront-elles affichées? Si j'enlève cette ligne et appelle la page '/ 404', elle me redirige vers la page sign_in. Mais est-ce aussi le comportement quand on soulève une erreur? – Simon

+0

Cela peut être un bogue dans une gemme tierce. Pouvez-vous essayer la technique de dépannage suggérée au bas de ce fil? https://github.com/rails/rails/issues/24627#issuecomment-217475139 –

Répondre