class Rails::NewRelicMetrics::UnusedActions

Public Instance Methods

all() click to toggle source
# File lib/rails/newrelic_metrics/unused_actions.rb, line 9
def all
  controllers.map { |controller| metric_names(controller) }
             .flatten
             .each_slice(100)
             .map { |metric_names| unused(metric_names) }
             .flatten
end
for(controller) click to toggle source
# File lib/rails/newrelic_metrics/unused_actions.rb, line 4
def for(controller)
  metric_names = metric_names(controller)
  unused(metric_names)
end

Private Instance Methods

api() click to toggle source
# File lib/rails/newrelic_metrics/unused_actions.rb, line 34
def api
  @api ||= API.new(api_key, app_id)
end
call_counts(metric_names) click to toggle source
# File lib/rails/newrelic_metrics/unused_actions.rb, line 25
def call_counts(metric_names)
  metrics = metric_names.map { |metric_name| "metrics[]=#{metric_name}" }.join('&')
  api.json("applications/#{app_id}/data.json?#{metrics}&field=call_count&summary=1&begin=#{two_weeks_ago}&end=#{now}")
end
controllers() click to toggle source
# File lib/rails/newrelic_metrics/unused_actions.rb, line 30
def controllers
  ::ApplicationController.descendants
end
metric_name(controller, action) click to toggle source
# File lib/rails/newrelic_metrics/unused_actions.rb, line 42
def metric_name(controller, action)
  "Controller/#{controller.controller_path}/#{action}"
end
metric_names(controller) click to toggle source
# File lib/rails/newrelic_metrics/unused_actions.rb, line 38
def metric_names(controller)
  controller.action_methods.map { |action| metric_name(controller, action) }
end
now() click to toggle source
# File lib/rails/newrelic_metrics/unused_actions.rb, line 46
def now
  Time.now.utc.iso8601
end
two_weeks_ago() click to toggle source
# File lib/rails/newrelic_metrics/unused_actions.rb, line 50
def two_weeks_ago
  (Time.now - 60*60*24*30).utc.iso8601
end
unused(metric_names) click to toggle source
# File lib/rails/newrelic_metrics/unused_actions.rb, line 19
def unused(metric_names)
  response = call_counts(metric_names)
  response.select { |metric| metric['call_count'].to_i == 0 }
          .map { |metric| metric['name'][11..metric['name'].length] }
end