3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
28
29
30
31
32
33
34
35
36
37
38
39
40
41
42
43
|
# File 'app/controllers/routetracker/dashboard_controller.rb', line 3
def index
@routes = []
all_hits = Routetracker::RouteHit.all
hits_map = all_hits.group_by { |h| "#{h.controller}##{h.action}" }
Rails.application.routes.routes.each do |route|
reqs = route.requirements
controller = reqs[:controller]
action = reqs[:action]
next unless controller && action
verb = route.verb.to_s
path = route.path.spec.to_s
path = path.sub('(.:format)', '')
key = "#{controller}##{action}"
related_hits = hits_map[key] || []
@routes << {
verb: verb,
path: path,
controller: controller,
action: action,
hit_count: related_hits.sum(&:hit_count),
last_hit_at: related_hits.map(&:last_hit_at).compact.max
}
end
@routes.sort_by! { |r| [r[:hit_count] == 0 ? 0 : 1, r[:controller], r[:action]] }
end
|