lib/restful_resource/instrumentation.rb in restful_resource-1.6.0 vs lib/restful_resource/instrumentation.rb in restful_resource-2.0.1
- old
+ new
@@ -40,11 +40,11 @@
end
# Subscribes to events from Faraday::HttpCache
ActiveSupport::Notifications.subscribe cache_instrument_name do |*args|
event = ActiveSupport::Notifications::Event.new(*args)
- cache_status = event.payload[:cache_status]
+ cache_status = event.payload.fetch(:cache_status, nil)
# Outputs log lines like:
# count#quotes_site.research_site_api.cache_hit=1
# count#quotes_site.research_site_api.api_v2_cap_derivatives.cache_hit=1
case cache_status
@@ -53,23 +53,26 @@
metric_class.count cache_notifier_namespace(metric: 'cache_hit', event: event), 1
when :invalid, :miss
metric_class.count cache_notifier_namespace(metric: 'cache_miss'), 1
metric_class.count cache_notifier_namespace(metric: 'cache_miss', event: event), 1
when :unacceptable
+ metric_class.count cache_notifier_namespace(metric: 'cache_not_cacheable'), 1
+ metric_class.count cache_notifier_namespace(metric: 'cache_not_cacheable', event: event), 1
+ when :bypass
metric_class.count cache_notifier_namespace(metric: 'cache_bypass'), 1
metric_class.count cache_notifier_namespace(metric: 'cache_bypass', event: event), 1
end
end
end
def validate_metric_class!
- metric_methods = [:count, :sample, :measure]
+ metric_methods = %i(count sample measure)
if metric_methods.any? {|m| !metric_class.respond_to?(m) }
raise ArgumentError.new "Metric class '#{metric_class}' does not respond to #{metric_methods.join ','}"
end
end
- def cache_notifier_namespace(event: nil, metric:)
+ def cache_notifier_namespace(metric:, event: nil)
[app_name, api_name, base_request_path(event), metric].compact.join('.')
end
# Converts a path like "/api/v2/cap_derivatives/75423" to "api_v2_cap_derivatives"
def base_request_path(event)