module RequestResponseStats::CustomClient
Constants
- MAX_URL_LENGTH
- RENAMED_METHODS
- RENAME_NAMESPACE
Public Class Methods
included(base)
click to toggle source
module_function :log_request_response_stats
# File lib/request_response_stats/custom_client.rb, line 57 def self.included(base) class << base RENAMED_METHODS.each do |key| if method_defined?(key) alias_method("#{RENAME_NAMESPACE}#{key.to_s}".to_sym, key) remove_method key end end end base.class_eval do const_set("RENAME_NAMESPACE", RENAME_NAMESPACE) const_set("RENAMED_METHODS", RENAMED_METHODS) module_function :method_missing module_function :log_request_response_stats module_function :custom_uri_key end end
Public Instance Methods
custom_uri_key()
click to toggle source
By default args is assumed to be an array with first element as uri If args is an hash contained within one-element array, then you can specify the key that is to be used to fetch the uri
# File lib/request_response_stats/custom_client.rb, line 16 def custom_uri_key false end
log_request_response_stats(name, args, &original_call)
click to toggle source
module_function :method_missing
# File lib/request_response_stats/custom_client.rb, line 30 def log_request_response_stats(name, args, &original_call) if defined?(RR_OUTBOUND_STATS) && RR_OUTBOUND_STATS begin uri = args.is_a?(Array) ? args.first : args uri = uri[custom_uri_key] if (uri.is_a?(Hash) && custom_uri_key && uri[custom_uri_key]) sanitized_uri = uri.to_s[0..(MAX_URL_LENGTH - 1)] rrs = RequestResponse.new( DummyRequest.new({method: name, path: sanitized_uri}), DummyResponse.new, {redis_connection: $redis, gather_stats: true, mongoid_doc_model: ReqResStat} ) rrs.capture_request_response_cycle_start_info resp = original_call.call rrs.capture_request_response_cycle_end_info return resp rescue Exception => ex # Rails.logger.info "Following exception is raised:" # Rails.logger.info ex rrs.try(:capture_request_response_cycle_error_info) raise ex end else resp = original_call.call end end
method_missing(name, *args, &block)
click to toggle source
Calls superclass method
# File lib/request_response_stats/custom_client.rb, line 20 def method_missing(name, *args, &block) if RENAMED_METHODS.include?(name) resp = log_request_response_stats(name, args) { self.public_send("#{RENAME_NAMESPACE}#{name.to_s}".to_sym, *args, &block) } return resp else super end end