module Batbugger::Rails::ControllerMethods

Public Instance Methods

batbugger_request_data() click to toggle source
# File lib/batbugger/rails/controller_methods.rb, line 4
def batbugger_request_data
  { :parameters       => batbugger_filter_if_filtering(params.to_hash),
    :session_data     => batbugger_filter_if_filtering(batbugger_session_data),
    :controller       => params[:controller],
    :action           => params[:action],
    :url              => batbugger_request_url,
    :cgi_data         => batbugger_filter_if_filtering(request.env) }
end

Private Instance Methods

batbugger_filter_if_filtering(hash) click to toggle source
# File lib/batbugger/rails/controller_methods.rb, line 37
def batbugger_filter_if_filtering(hash)
  return hash if ! hash.is_a?(Hash)

  # Rails 2 filters parameters in the controller
  # In Rails 3+ we use request.env['action_dispatch.parameter_filter']
  # to filter parameters in Batbugger::Notice (avoids filtering twice)
  if respond_to?(:filter_parameters)
    filter_parameters(hash)
  else
    hash
  end
end
batbugger_local_request?() click to toggle source
# File lib/batbugger/rails/controller_methods.rb, line 23
def batbugger_local_request?
  if defined?(::Rails.application.config)
    ::Rails.application.config.consider_all_requests_local || (request.local? && (!request.env["HTTP_X_FORWARDED_FOR"]))
  else
    consider_all_requests_local || (local_request? && (!request.env["HTTP_X_FORWARDED_FOR"]))
  end
end
batbugger_request_url() click to toggle source
# File lib/batbugger/rails/controller_methods.rb, line 58
def batbugger_request_url
  url = "#{request.protocol}#{request.host}"

  unless [80, 443].include?(request.port)
    url << ":#{request.port}"
  end

  url << request.fullpath
  url
end
batbugger_session_data() click to toggle source
# File lib/batbugger/rails/controller_methods.rb, line 50
def batbugger_session_data
  if session.respond_to?(:to_hash)
    session.to_hash
  else
    session.data
  end
end
notify_batbugger(hash_or_exception) click to toggle source

This method should be used for sending manual notifications while you are still inside the controller. Otherwise it works like Batbugger.notify.

# File lib/batbugger/rails/controller_methods.rb, line 17
def notify_batbugger(hash_or_exception)
  unless batbugger_local_request?
    Batbugger.notify(hash_or_exception, batbugger_request_data)
  end
end