class ReactOnRails::PrerenderError

Constants

MAX_ERROR_SNIPPET_TO_LOG

Attributes

component_name[R]

TODO: Consider remove providing original ‘err` as already have access to `self.cause` blog.honeybadger.io/nested-errors-in-ruby-with-exception-cause/

console_messages[R]

TODO: Consider remove providing original ‘err` as already have access to `self.cause` blog.honeybadger.io/nested-errors-in-ruby-with-exception-cause/

err[R]

TODO: Consider remove providing original ‘err` as already have access to `self.cause` blog.honeybadger.io/nested-errors-in-ruby-with-exception-cause/

js_code[R]

TODO: Consider remove providing original ‘err` as already have access to `self.cause` blog.honeybadger.io/nested-errors-in-ruby-with-exception-cause/

props[R]

TODO: Consider remove providing original ‘err` as already have access to `self.cause` blog.honeybadger.io/nested-errors-in-ruby-with-exception-cause/

Public Class Methods

new(component_name: nil, err: nil, props: nil, js_code: nil, console_messages: nil) click to toggle source

err might be nil if JS caught the error

Calls superclass method
# File lib/react_on_rails/prerender_error.rb, line 12
def initialize(component_name: nil, err: nil, props: nil,
               js_code: nil, console_messages: nil)
  @component_name = component_name
  @err = err
  @props = props
  @js_code = js_code
  @console_messages = console_messages

  backtrace, message = calc_message(component_name, console_messages, err, js_code, props)

  super([message, backtrace].compact.join("\n"))
end

Public Instance Methods

raven_context() click to toggle source
# File lib/react_on_rails/prerender_error.rb, line 29
def raven_context
  to_error_context
end
to_error_context() click to toggle source
# File lib/react_on_rails/prerender_error.rb, line 33
def to_error_context
  result = {
    component_name: component_name,
    err: err,
    props: props,
    js_code: js_code,
    console_messages: console_messages
  }

  result.merge!(err.to_error_context) if err.respond_to?(:to_error_context)
  result
end
to_honeybadger_context() click to toggle source
# File lib/react_on_rails/prerender_error.rb, line 25
def to_honeybadger_context
  to_error_context
end

Private Instance Methods

calc_message(component_name, console_messages, err, js_code, props) click to toggle source
# File lib/react_on_rails/prerender_error.rb, line 48
    def calc_message(component_name, console_messages, err, js_code, props)
      message = +"ERROR in SERVER PRERENDERING\n"
      if err
        message << <<~MSG
          Encountered error:

          #{err}

        MSG

        backtrace = err.backtrace.first(15).join("\n")
      else
        backtrace = nil
      end
      message << <<~MSG
        when prerendering #{component_name} with props: #{Utils.smart_trim(props, MAX_ERROR_SNIPPET_TO_LOG)}

        code:

        #{Utils.smart_trim(js_code, MAX_ERROR_SNIPPET_TO_LOG)}

      MSG

      if console_messages
        message << <<~MSG
          console messages:
          #{console_messages}
        MSG

      end
      [backtrace, message]
    end