Ich habe gelesen und versucht, was Matt Brictson in his awesome article über dynamische Fehlerseiten auf Schienen anwenden. Einfallsreichtum verwenden, um Benutzer zu authentifizieren, so muss ich authenticate_user zum errors_controller.rb
Rails dynamische Fehlerseiten und Devise: RuntimeError
skip_before_action :authenticate_user!, :only => [:not_found, :internal_server_error]
setzen Aber dies nicht gelingt mir eine Runtime in Fehler # not_found geben, wenn ich versuche, die /404
Seite aufzurufen:
can't add a new key into hash during Iteration
EDIT: ich poste die application.rb
Code zu:
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: hinzugefügt (hoffentlich Anspruch auf Vollständigkeit) Stack-Trace von Rails in development.log protokolliert:
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)
Wissen Sie, wie dieses Problem zu lösen? Vielen Dank im Voraus
Es besteht keine Notwendigkeit zur Zugabe des authentication_user auf Fehler Seite. –
Ok, aber was, wenn ich nicht eingeloggt bin? Werden die Seiten angezeigt? Wenn ich diese Zeile entferne und die '/ 404'-Seite aufruft, leite ich mich auf die Seite sign_in um. Aber ist das auch das Verhalten, wenn man einen Fehler macht? – Simon
Dies könnte ein Fehler in einem Edelstein von Drittanbietern sein. Können Sie die unten in diesem Thread vorgeschlagene Fehlerbehebungstechnik ausprobieren? https://github.com/rails/rails/issues/24627#issuecomment-217475139 –