class AppfluxRuby::MessageBuilders::Bugflux

Constants

ENV_EXCEPTION_METHODS
ENV_REQUEST_KEYS
ENV_REQUEST_METHODS
SUPPORTED_BACKGROUND_JOB_PROCESSORS

Public Class Methods

build(exception, rack_env) click to toggle source
# File lib/appflux_ruby/message_builders/bugflux.rb, line 71
def self.build exception, rack_env
  new(exception, rack_env).build
end
new(exception, rack_env) click to toggle source
Calls superclass method AppfluxRuby::MessageBuilders::Base::new
# File lib/appflux_ruby/message_builders/bugflux.rb, line 49
def initialize exception, rack_env
  super(exception, rack_env)

  @notice[:bugflux] = Hash.new { |hsh, key| hsh[key] = Hash.new }
  @bugflux_notice = @notice[:bugflux]
end

Public Instance Methods

build() click to toggle source
# File lib/appflux_ruby/message_builders/bugflux.rb, line 56
def build
  super
  add_app_id
  add_request_data
  add_params
  add_exception_data
  add_env
  add_headers
  add_session_data
  add_background_job_info
  add_custom_tabs

  @notice
end

Private Instance Methods

add_app_id() click to toggle source
# File lib/appflux_ruby/message_builders/bugflux.rb, line 117
def add_app_id
  @bugflux_notice[:app_id] = ::AppfluxRuby::Bugflux.config.app_id
end
add_background_job_info() click to toggle source

Adds background processor information as a dedicated tab on the UI.

# File lib/appflux_ruby/message_builders/bugflux.rb, line 131
def add_background_job_info
  if @rack_env[:component].in?(SUPPORTED_BACKGROUND_JOB_PROCESSORS)
    builder_klass_string = @rack_env[:component].classify
    builder_klass = "::AppfluxRuby::MessageBuilders::#{ builder_klass_string }".constantize

    @bugflux_notice[:custom_tabs] ||= Hash.new
    @bugflux_notice[:custom_tabs]["#{@rack_env[:component]}".to_sym] = builder_klass.to_hash(@rack_env)
  end
end
add_custom_tabs() click to toggle source
# File lib/appflux_ruby/message_builders/bugflux.rb, line 125
def add_custom_tabs
  @bugflux_notice[:custom_tabs] ||= Hash.new
  @bugflux_notice[:custom_tabs].merge!(::AppfluxRuby::Bugflux.additional_data)
end
add_env() click to toggle source
# File lib/appflux_ruby/message_builders/bugflux.rb, line 121
def add_env
  @bugflux_notice[:env][:app_env] = ::Rails.env if defined?(::Rails)
end
add_exception_data() click to toggle source
# File lib/appflux_ruby/message_builders/bugflux.rb, line 90
def add_exception_data
  ENV_EXCEPTION_METHODS.each do |_method|
    @bugflux_notice[:exception][_method.to_sym] = @exception.public_send(_method)
  end
end
add_headers() click to toggle source
# File lib/appflux_ruby/message_builders/bugflux.rb, line 103
def add_headers
  @bugflux_notice[:env][:headers] = Hash.new

  @rack_env.keys.grep(/^HTTP_/).each do |_key|
    @bugflux_notice[:env][:headers][_key] = @rack_env[_key]
  end

  @bugflux_notice[:env][:headers].delete('HTTP_COOKIE')
end
add_params() click to toggle source
# File lib/appflux_ruby/message_builders/bugflux.rb, line 113
def add_params
  @bugflux_notice[:env][:params] = @request.env['action_dispatch.request.parameters']
end
add_request_data() click to toggle source
# File lib/appflux_ruby/message_builders/bugflux.rb, line 77
def add_request_data
  @bugflux_notice[:env][:request] = Hash.new
  _req_hash = @bugflux_notice[:env][:request]

  ENV_REQUEST_METHODS.each do |_method|
    _req_hash[_method.to_sym] = @request.public_send(_method)
  end

  ENV_REQUEST_KEYS.each do |_key|
    _req_hash[_key.to_sym] = @request.env[_key.to_s]
  end
end
add_session_data() click to toggle source
# File lib/appflux_ruby/message_builders/bugflux.rb, line 96
def add_session_data
  load_session
  return unless session_loaded?

  @bugflux_notice[:env][:session]= @request.env['rack.request.cookie_hash']
end
load_session() click to toggle source
# File lib/appflux_ruby/message_builders/bugflux.rb, line 143
def load_session
  unless session_loaded?
    @session['___bugflux_dummy_key___'] ||= 'bugflux'
  end
end
session_loaded?() click to toggle source
# File lib/appflux_ruby/message_builders/bugflux.rb, line 149
def session_loaded?
  @session.respond_to?(:loaded?) ? @session.loaded? : true
end