ngauthier-slow-actions 0.2.4 → 0.2.6

This diff represents the content of publicly available package versions that have been released to one of the supported registries. The information contained in this diff is provided for informational purposes only and reflects changes between package versions as they appear in their respective public registries.
data/README.rdoc CHANGED
@@ -5,10 +5,54 @@ Nick Gauthier (nick@smartlogicsolutions.com)
5
5
  Reads a rails app's log file for slow actions
6
6
 
7
7
  == Usage
8
- ./bin/slow-actions.rb path/to/log/file
9
8
 
10
- Or:
9
+ === Command line
11
10
 
11
+ slow-actions (--actions | --controllers | --sessions) log_file [log_file ...]
12
+ You may also specify:
13
+ --min-cost=FLOAT
14
+ --min-avg=FLOAT
15
+ --min-max=FLOAT
16
+
17
+ === Ruby Code
18
+
19
+ require 'rubygems'
12
20
  require 'slow_actions'
13
- sap = SlowActionParser.new(file_path)
14
- actions = sap.parse
21
+ @sa = SlowActions.new
22
+ @sa.parse_file(file_path)
23
+ puts @sa.print_actions
24
+
25
+ == Sample output:
26
+ $> slow-actions --controller my_log_file
27
+ Cost Average Max
28
+ + UsersController (7 entries)
29
+ | Total: 1.88300 0.96000 6.62000
30
+ | Render: 1.75600 0.89600 6.24000
31
+ | DB: 0.29500 0.15000 0.36400
32
+ |-+ index (3 entries)
33
+ | | Total: 2.49600 2.20600 6.62000
34
+ | | Render: 2.35300 2.08000 6.24000
35
+ | | DB: 0.25700 0.22800 0.36400
36
+ |-+ winning_history (2 entries)
37
+ | | Total: 0.03800 0.05200 0.10400
38
+ | | Render: 0.01100 0.01600 0.03200
39
+ | | DB: 0.13800 0.18600 0.34800
40
+
41
+ + StaticPagesController (3 entries)
42
+ | Total: 0.04500 0.04000 0.06000
43
+ | Render: 0.03100 0.02700 0.04400
44
+ | DB: 0.08200 0.07300 0.21600
45
+ |-+ static_hunters_lodge (3 entries)
46
+ | | Total: 0.04500 0.04000 0.06000
47
+ | | Render: 0.03100 0.02700 0.04400
48
+ | | DB: 0.08200 0.07300 0.21600
49
+
50
+ + SessionsController (5 entries)
51
+ | Total: 0.03300 0.02000 0.06400
52
+ | Render: 0.00700 0.00400 0.01600
53
+ | DB: 0.01500 0.00900 0.04800
54
+ |-+ create (2 entries)
55
+ | | Total: 0.03400 0.04600 0.06400
56
+ | | Render: 0.00100 0.00200 0.00400
57
+ | | DB: 0.02600 0.03600 0.04800
58
+
data/VERSION.yml CHANGED
@@ -1,4 +1,4 @@
1
1
  ---
2
2
  :minor: 2
3
- :patch: 4
3
+ :patch: 6
4
4
  :major: 0
data/bin/slow-actions CHANGED
@@ -6,20 +6,34 @@ ARGV.select{|arg| arg[0,2] != "--"}.each do |file|
6
6
  @sa.parse_file(file)
7
7
  end
8
8
 
9
+ opts = {}
10
+ mincost = ARGV.detect{|arg| arg =~ /--min-cost=(\S+)/ }
11
+ opts[:mincost] = $1.to_f if mincost
12
+
13
+ minavg = ARGV.detect{|arg| arg =~ /--min-avg=(\S+)/ }
14
+ opts[:minavg] = $1.to_f if minavg
15
+
16
+ minmax = ARGV.detect{|arg| arg =~ /--min-max=(\S+)/ }
17
+ opts[:minmax] = $1.to_f if minmax
18
+
9
19
  output = []
10
20
  if (ARGV.include? "--actions")
11
- output << @sa.print_actions
21
+ output << @sa.print_actions(opts)
12
22
  end
13
23
  if (ARGV.include? "--controllers")
14
- output << @sa.print_controller_tree
24
+ output << @sa.print_controller_tree(opts)
15
25
  end
16
26
  if (ARGV.include? "--sessions")
17
- output << @sa.print_sessions
27
+ output << @sa.print_sessions(opts)
18
28
  end
19
29
 
20
30
 
21
31
  if output.size == 0
22
- puts "Usage: slow-actions (--actions | --controllers | --sessions) log_file"
32
+ puts "Usage: slow-actions (--actions | --controllers | --sessions) log_file [log_file ...]"
33
+ puts "You may also specify:"
34
+ puts "\t--min-cost=FLOAT"
35
+ puts "\t--min-avg=FLOAT"
36
+ puts "\t--min-max=FLOAT"
23
37
  else
24
38
  puts output.join("\n\n")
25
39
  end
data/lib/slow_actions.rb CHANGED
@@ -18,10 +18,13 @@ class SlowActions
18
18
  return @log_entries
19
19
  end
20
20
 
21
- def print_actions
21
+ def print_actions(opts = {})
22
22
  str = ""
23
- str += " Cost Average Max\n"
23
+ str += " Cost Average Max\n"
24
24
  actions.sort{|x,y| y.total_cost <=> x.total_cost}.each do |a|
25
+ next if opts[:mincost] and a.total_cost < opts[:mincost]
26
+ next if opts[:minavg] and a.total_avg < opts[:minavg]
27
+ next if opts[:minmax] and a.total_max < opts[:minmax]
25
28
  str += "- #{a.controller.name} : #{a.name} (#{a.log_entries.size} entries)\n"
26
29
  str += " Total: #{ftos a.total_cost}#{ftos a.total_avg}#{ftos a.total_max}\n"
27
30
  str += " Render: #{ftos a.render_cost}#{ftos a.render_avg}#{ftos a.render_max}\n"
@@ -31,15 +34,21 @@ class SlowActions
31
34
  return str
32
35
  end
33
36
 
34
- def print_controller_tree
37
+ def print_controller_tree(opts = {})
35
38
  str = ""
36
- str += " Cost Average Max\n"
39
+ str += " Cost Average Max\n"
37
40
  controllers.sort{|x,y| y.total_cost <=> x.total_cost}.each do |c|
41
+ next if opts[:mincost] and c.total_cost < opts[:mincost]
42
+ next if opts[:minavg] and c.total_avg < opts[:minavg]
43
+ next if opts[:minmax] and c.total_max < opts[:minmax]
38
44
  str += "+ #{c.name} (#{c.log_entries.size} entries)\n"
39
45
  str += "| Total: #{ftos c.total_cost}#{ftos c.total_avg}#{ftos c.total_max}\n"
40
46
  str += "| Render: #{ftos c.render_cost}#{ftos c.render_avg}#{ftos c.render_max}\n"
41
47
  str += "| DB: #{ftos c.db_cost}#{ftos c.db_avg}#{ftos c.db_max}\n"
42
48
  c.actions.sort{|x,y| y.total_cost <=> x.total_cost}.each do |a|
49
+ next if opts[:mincost] and a.total_cost < opts[:mincost]
50
+ next if opts[:minavg] and a.total_avg < opts[:minavg]
51
+ next if opts[:minmax] and a.total_max < opts[:minmax]
43
52
  str += "|-+ #{a.name} (#{a.log_entries.size} entries)\n"
44
53
  str += "| | Total: #{ftos a.total_cost}#{ftos a.total_avg}#{ftos a.total_max}\n"
45
54
  str += "| | Render: #{ftos a.render_cost}#{ftos a.render_avg}#{ftos a.render_max}\n"
@@ -50,10 +59,13 @@ class SlowActions
50
59
  return str
51
60
  end
52
61
 
53
- def print_sessions
62
+ def print_sessions(opts = {})
54
63
  str = ""
55
- str += " Cost Average Max\n"
64
+ str += " Cost Average Max\n"
56
65
  sessions.sort{|x,y| y.total_cost <=> x.total_cost}.each do |s|
66
+ next if opts[:mincost] and s.total_cost < opts[:mincost]
67
+ next if opts[:minavg] and s.total_avg < opts[:minavg]
68
+ next if opts[:minmax] and s.total_max < opts[:minmax]
57
69
  str += "+ #{s.name} (#{s.log_entries.size} entries)\n"
58
70
  str += "| Total: #{ftos s.total_cost}#{ftos s.total_avg}#{ftos s.total_max}\n"
59
71
  str += "| Render: #{ftos s.render_cost}#{ftos s.render_avg}#{ftos s.render_max}\n"
metadata CHANGED
@@ -1,7 +1,7 @@
1
1
  --- !ruby/object:Gem::Specification
2
2
  name: ngauthier-slow-actions
3
3
  version: !ruby/object:Gem::Version
4
- version: 0.2.4
4
+ version: 0.2.6
5
5
  platform: ruby
6
6
  authors:
7
7
  - Nick Gauthier