lib/airbrake/rails/controller_methods.rb in airbrake-3.0.9 vs lib/airbrake/rails/controller_methods.rb in airbrake-3.1.0
- old
+ new
@@ -1,8 +1,18 @@
module Airbrake
module Rails
module ControllerMethods
+
+ def airbrake_request_data
+ { :parameters => airbrake_filter_if_filtering(params.to_hash),
+ :session_data => airbrake_filter_if_filtering(airbrake_session_data),
+ :controller => params[:controller],
+ :action => params[:action],
+ :url => airbrake_request_url,
+ :cgi_data => airbrake_filter_if_filtering(request.env) }
+ end
+
private
# This method should be used for sending manual notifications while you are still
# inside the controller. Otherwise it works like Airbrake.notify.
def notify_airbrake(hash_or_exception)
@@ -11,38 +21,34 @@
end
end
def airbrake_local_request?
if defined?(::Rails.application.config)
- ::Rails.application.config.consider_all_requests_local || request.local?
+ ::Rails.application.config.consider_all_requests_local || (request.local? && (!request.env["HTTP_X_FORWARDED_FOR"]))
else
- consider_all_requests_local || local_request?
+ consider_all_requests_local || (local_request? && (!request.env["HTTP_X_FORWARDED_FOR"]))
end
end
def airbrake_ignore_user_agent? #:nodoc:
# Rails 1.2.6 doesn't have request.user_agent, so check for it here
user_agent = request.respond_to?(:user_agent) ? request.user_agent : request.env["HTTP_USER_AGENT"]
Airbrake.configuration.ignore_user_agent.flatten.any? { |ua| ua === user_agent }
end
- def airbrake_request_data
- { :parameters => airbrake_filter_if_filtering(params.to_hash),
- :session_data => airbrake_filter_if_filtering(airbrake_session_data),
- :controller => params[:controller],
- :action => params[:action],
- :url => airbrake_request_url,
- :cgi_data => airbrake_filter_if_filtering(request.env) }
- end
def airbrake_filter_if_filtering(hash)
return hash if ! hash.is_a?(Hash)
- if respond_to?(:filter_parameters)
- filter_parameters(hash) rescue hash
+
+ if respond_to?(:filter_parameters) # Rails 2
+ filter_parameters(hash)
+ elsif defined?(ActionDispatch::Http::ParameterFilter) # Rails 3
+ ActionDispatch::Http::ParameterFilter.new(::Rails.application.config.filter_parameters).filter(hash)
else
hash
- end
+ end rescue hash
+
end
def airbrake_session_data
if session.respond_to?(:to_hash)
session.to_hash