Sha256: 5a517fde92ce3d2aaae58ff7d847f82e7debef9890bd1108626fa7becba2b6ff

Contents?: true

Size: 1.75 KB

Versions: 4

Compression:

Stored size: 1.75 KB

Contents

# Patch ActionDispatch::DebugExceptions to render HTML for Inertia requests
#
# Original source:
# https://github.com/rails/rails/blob/4-2-stable/actionpack/lib/action_dispatch/middleware/debug_exceptions.rb
#

ActionDispatch::DebugExceptions.class_eval do
  prepend(InertiaDebugExceptions = Module.new do
    def render_exception(env, exception)
      wrapper = ExceptionWrapper.new(env, exception)
      log_error(env, wrapper)

      if env['action_dispatch.show_detailed_exceptions']
        request = Request.new(env)
        traces = wrapper.traces

        trace_to_show = 'Application Trace'
        if traces[trace_to_show].empty? && wrapper.rescue_template != 'routing_error'
          trace_to_show = 'Full Trace'
        end

        if source_to_show = traces[trace_to_show].first
          source_to_show_id = source_to_show[:id]
        end

        template = ActionView::Base.new([RESCUES_TEMPLATE_PATH],
          request: request,
          exception: wrapper.exception,
          traces: traces,
          show_source_idx: source_to_show_id,
          trace_to_show: trace_to_show,
          routes_inspector: routes_inspector(exception),
          source_extracts: wrapper.source_extracts,
          line_number: wrapper.line_number,
          file: wrapper.file
        )
        file = "rescues/#{wrapper.rescue_template}"

        if request.xhr? && !request.headers['X-Inertia'] # <<<< this line is changed only
          body = template.render(template: file, layout: false, formats: [:text])
          format = "text/plain"
        else
          body = template.render(template: file, layout: 'rescues/layout')
          format = "text/html"
        end
        render(wrapper.status_code, body, format)
      else
        raise exception
      end
    end
  end)
end

Version data entries

4 entries across 4 versions & 1 rubygems

Version Path
inertia_rails-1.4.0 lib/patches/debug_exceptions/patch-4-2.rb
inertia_rails-1.3.1 lib/patches/debug_exceptions/patch-4-2.rb
inertia_rails-1.3.0 lib/patches/debug_exceptions/patch-4-2.rb
inertia_rails-1.2.2 lib/patches/debug_exceptions/patch-4-2.rb