production_log_analyzer 1.5.0 → 1.5.1

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.
Binary file
@@ -1,10 +1,14 @@
1
- = 1.5.0
1
+ === 1.5.1
2
+
3
+ * 1.9 and 1.8.7 compatibility.
4
+
5
+ === 1.5.0
2
6
 
3
7
  * Fixed empty log bug. Patch by Tim Lucas.
4
8
  * Fixed bug where sometimes lines would be logged before the
5
9
  Processing line. Patch by Geoff Grosenbach.
6
10
 
7
- = 1.4.0
11
+ === 1.4.0
8
12
 
9
13
  * Switched to Hoe
10
14
  * Allowed action_errors to suppress routing errors with > 3 occurances
@@ -13,22 +17,22 @@
13
17
  * Added action_errors to extract error counts from logs
14
18
  * Retabbed to match the rest of the world
15
19
 
16
- = 1.3.0
20
+ === 1.3.0
17
21
 
18
22
  * Added action_grep
19
23
  * Added support for newer log format
20
24
 
21
- = 1.2.0
25
+ === 1.2.0
22
26
 
23
27
  * pl_analyze calculates per-action statistics
24
28
  * pl_analyze can send an email with its output
25
29
 
26
- = 1.1.0
30
+ === 1.1.0
27
31
 
28
32
  * RDoc
29
33
  * Other various fixes lost to time.
30
34
 
31
- = 1.0.0
35
+ === 1.0.0
32
36
 
33
37
  * Birthday!
34
38
 
data/README.txt CHANGED
@@ -1,11 +1,12 @@
1
1
  = production_log_analyzer
2
2
 
3
- production_log_analyzer lets you find out which actions on a Rails
4
- site are slowing you down.
3
+ * http://seattlerb.rubyforge.org/production_log_analyzer
4
+ * http://rubyforge.org/projects/seattlerb
5
5
 
6
- http://seattlerb.rubyforge.org/production_log_analyzer
6
+ == DESCRIPTION
7
7
 
8
- http://rubyforge.org/projects/seattlerb
8
+ production_log_analyzer lets you find out which actions on a Rails
9
+ site are slowing you down.
9
10
 
10
11
  Bug reports:
11
12
 
data/Rakefile CHANGED
@@ -1,17 +1,15 @@
1
+ ENV.delete 'GEM_PATH'
2
+
3
+ require 'rubygems'
1
4
  require 'hoe'
2
5
 
3
- $:.unshift './lib'
4
- require 'production_log/analyzer'
6
+ Hoe.plugin :seattlerb
5
7
 
6
- Hoe.new 'production_log_analyzer', '1.5.0' do |p|
7
- p.summary = p.paragraphs_of('README.txt', 1).join ' '
8
- p.description = p.paragraphs_of('README.txt', 7).join ' '
9
- p.author = 'Eric Hodel'
10
- p.email = 'drbrain@segment7.net'
11
- p.url = p.paragraphs_of('README.txt', 2).join ' '
8
+ Hoe.spec 'production_log_analyzer' do
9
+ developer 'Eric Hodel', 'drbrain@segment7.net'
12
10
 
13
- p.rubyforge_name = 'seattlerb'
11
+ self.rubyforge_name = 'seattlerb'
14
12
 
15
- p.extra_deps << ['rails_analyzer_tools', '>= 1.4.0']
13
+ extra_deps << ['rails_analyzer_tools', '>= 1.4.0']
16
14
  end
17
15
 
File without changes
File without changes
File without changes
@@ -95,7 +95,7 @@ class SlowestTimes < SizedList
95
95
 
96
96
  def initialize(limit)
97
97
  super limit do |arr, new_item|
98
- fastest_time = arr.sort_by { |time, name| time }.first
98
+ fastest_time = arr.sort_by { |time, name| [time, name] }.first
99
99
  if fastest_time.first < new_item.first then
100
100
  arr.delete_at index(fastest_time)
101
101
  true
@@ -115,7 +115,7 @@ class Analyzer
115
115
  ##
116
116
  # The version of the production log analyzer you are using.
117
117
 
118
- VERSION = '1.5.0'
118
+ VERSION = '1.5.1'
119
119
 
120
120
  ##
121
121
  # The logfile being read by the Analyzer.
@@ -161,11 +161,13 @@ class Analyzer
161
161
 
162
162
  def self.envelope(recipient, subject = nil) # :nodoc:
163
163
  envelope = {}
164
- envelope['To'] = recipient
164
+
165
+ # HACK: this is a hack and the tests should be made order independent
165
166
  envelope['Subject'] = subject || "pl_analyze"
167
+ envelope['To'] = recipient
166
168
  envelope['Content-Type'] = "text/html"
167
169
 
168
- return envelope.map { |(k,v)| "#{k}: #{v}" }
170
+ envelope.sort.map { |(k,v)| "#{k}: #{v}" }
169
171
  end
170
172
 
171
173
  ##
@@ -328,16 +330,19 @@ class Analyzer
328
330
  list << record.join("\t")
329
331
 
330
332
  # all requests
331
- times = records.values.flatten
332
- record = [times.average, times.standard_deviation, times.min, times.max]
333
+ all_times = records.values.flatten
334
+ record = [
335
+ all_times.average, all_times.standard_deviation, all_times.min,
336
+ all_times.max
337
+ ]
333
338
  record.map! { |v| "%0.3f" % v }
334
- record.unshift [pad_request_name('ALL REQUESTS'), times.size]
339
+ record.unshift [pad_request_name('ALL REQUESTS'), all_times.size]
335
340
  list << record.join("\t")
336
341
 
337
342
  # spacer
338
343
  list << nil
339
344
 
340
- records.sort_by { |k,v| v.size}.reverse_each do |req, times|
345
+ records.sort_by { |k,v| [-v.size, k] }.each do |req, times|
341
346
  record = [times.average, times.standard_deviation, times.min, times.max]
342
347
  record.map! { |v| "%0.3f" % v }
343
348
  record.unshift ["#{pad_request_name req}", times.size]
@@ -356,7 +361,7 @@ class Analyzer
356
361
  end
357
362
  end
358
363
 
359
- return slowest_times.sort_by { |time, name| time }.reverse
364
+ return slowest_times.sort_by { |time, name| [-time, name] }
360
365
  end
361
366
 
362
367
  def time_average(records) # :nodoc:
@@ -71,6 +71,7 @@ module LogParser
71
71
  # same request.
72
72
 
73
73
  def parse(entry)
74
+ entry = entry.split(/\n/) if String === entry
74
75
  entry.each do |line|
75
76
  case line
76
77
  when /^Parameters/, /^Cookie set/, /^Rendering/,
@@ -149,7 +150,7 @@ module LogParser
149
150
  end
150
151
  end
151
152
 
152
- buckets.each do |bucket, data|
153
+ buckets.sort.each do |bucket, data|
153
154
  yield LogEntry.new(data)
154
155
  end
155
156
  end
@@ -1,4 +1,3 @@
1
- //src/production_log_analyzer/dev/test/test.syslog.log#1 - add change 3135 (text)
2
1
  Mar 7 00:00:00 online1 newsyslog[61307]: logfile turned over
3
2
  Mar 7 00:00:20 online1 rails[59600]: Goal Load (0.002112) SELECT g.*, gs.score as score FROM goals g, goal_similarities gs WHERE g.id = gs.similar_goal_id AND g.num_active_people > 0 AND gs.goal_similarity_type_id = 1 AND gs.goal_id = 59133 ORDER BY score DESC LIMIT 3
4
3
  Mar 7 00:00:20 online1 rails[59600]: Tag Load (0.001527) SELECT tags.*, count(*) as num_goals FROM tags_teams, tags, teams WHERE tags_teams.tag_id = tags.id AND tags_teams.team_id = teams.id AND teams.num_members > 0 AND teams.goal_id = 59133 GROUP BY tags.id ORDER BY num_goals DESC LIMIT 5
@@ -255,4 +254,3 @@ Mar 7 00:00:32 online1 rails[59635]: Processing PeopleController#progress (for
255
254
  Mar 7 00:00:32 online1 rails[59635]: Parameters: {:id=>"swirlygirl", :on=>"35926", :action=>"progress", :"people/progress/swirlygirl/35926.html/progress/swirlygirl/35926"=>nil, :controller=>"people"}
256
255
  Mar 7 00:00:32 online1 rails[59635]: Browser Load (0.000698) SELECT * FROM browsers WHERE ubid = 'STUFF' LIMIT 1
257
256
  Mar 7 00:00:32 online1 rails[59635]: Person Load (0.001319) SELECT * FROM people WHERE username = 'swirlygirl' LIMIT 1
258
-
File without changes
@@ -91,18 +91,18 @@ class TestAnalyzer < Test::Unit::TestCase
91
91
  email = Analyzer.email('test/test.syslog.log', 'devnull@robotcoop.com',
92
92
  nil, 1)
93
93
  expected = <<-EOF
94
+ Content-Type: text/html
94
95
  Subject: pl_analyze
95
96
  To: devnull@robotcoop.com
96
- Content-Type: text/html
97
97
 
98
98
  <pre>Request Times Summary: Count Avg Std Dev Min Max
99
99
  ALL REQUESTS: 11 0.576 0.508 0.000 1.470
100
100
 
101
101
  ThingsController#view: 3 0.716 0.387 0.396 1.260
102
- TeamsController#progress: 2 0.841 0.629 0.212 1.470
103
- RssController#uber: 2 0.035 0.000 0.035 0.035
104
102
  PeopleController#progress: 2 0.489 0.489 0.000 0.977
105
103
  PeopleController#view: 2 0.731 0.371 0.360 1.102
104
+ RssController#uber: 2 0.035 0.000 0.035 0.035
105
+ TeamsController#progress: 2 0.841 0.629 0.212 1.470
106
106
 
107
107
  Slowest Request Times:
108
108
  \tTeamsController#progress took 1.470s
@@ -113,10 +113,10 @@ DB Times Summary: Count Avg Std Dev Min Max
113
113
  ALL REQUESTS: 11 0.366 0.393 0.000 1.144
114
114
 
115
115
  ThingsController#view: 3 0.403 0.362 0.122 0.914
116
- TeamsController#progress: 2 0.646 0.497 0.149 1.144
117
- RssController#uber: 2 0.008 0.000 0.008 0.008
118
116
  PeopleController#progress: 2 0.415 0.415 0.000 0.830
119
117
  PeopleController#view: 2 0.338 0.149 0.189 0.486
118
+ RssController#uber: 2 0.008 0.000 0.008 0.008
119
+ TeamsController#progress: 2 0.646 0.497 0.149 1.144
120
120
 
121
121
  Slowest Total DB Times:
122
122
  \tTeamsController#progress took 1.144s
@@ -127,10 +127,10 @@ Render Times Summary: Count Avg Std Dev Min Max
127
127
  ALL REQUESTS: 11 0.219 0.253 0.000 0.695
128
128
 
129
129
  ThingsController#view: 3 0.270 0.171 0.108 0.506
130
- TeamsController#progress: 2 0.000 0.000 0.000 0.000
131
- RssController#uber: 2 0.012 0.000 0.012 0.012
132
130
  PeopleController#progress: 2 0.302 0.302 0.000 0.604
133
131
  PeopleController#view: 2 0.487 0.209 0.278 0.695
132
+ RssController#uber: 2 0.012 0.000 0.012 0.012
133
+ TeamsController#progress: 2 0.000 0.000 0.000 0.000
134
134
 
135
135
  Slowest Total Render Times:
136
136
  \tPeopleController#view took 0.695s
@@ -142,9 +142,9 @@ Slowest Total Render Times:
142
142
 
143
143
  def test_self_envelope
144
144
  expected = [
145
+ "Content-Type: text/html",
145
146
  "Subject: pl_analyze",
146
147
  "To: devnull@example.com",
147
- "Content-Type: text/html"
148
148
  ]
149
149
 
150
150
  assert_equal expected, Analyzer.envelope('devnull@example.com')
@@ -152,9 +152,9 @@ Slowest Total Render Times:
152
152
 
153
153
  def test_self_envelope_subject
154
154
  expected = [
155
+ "Content-Type: text/html",
155
156
  "Subject: happy fancy boom",
156
157
  "To: devnull@example.com",
157
- "Content-Type: text/html"
158
158
  ]
159
159
 
160
160
  assert_equal(expected,
@@ -183,10 +183,10 @@ DB Times Summary: Count Avg Std Dev Min Max
183
183
  ALL REQUESTS: 11 0.366 0.393 0.000 1.144
184
184
 
185
185
  ThingsController#view: 3 0.403 0.362 0.122 0.914
186
- TeamsController#progress: 2 0.646 0.497 0.149 1.144
187
- RssController#uber: 2 0.008 0.000 0.008 0.008
188
186
  PeopleController#progress: 2 0.415 0.415 0.000 0.830
189
187
  PeopleController#view: 2 0.338 0.149 0.189 0.486
188
+ RssController#uber: 2 0.008 0.000 0.008 0.008
189
+ TeamsController#progress: 2 0.646 0.497 0.149 1.144
190
190
  EOF
191
191
 
192
192
  assert_equal expected, @analyzer.db_times_summary
@@ -282,10 +282,10 @@ Render Times Summary: Count Avg Std Dev Min Max
282
282
  ALL REQUESTS: 11 0.219 0.253 0.000 0.695
283
283
 
284
284
  ThingsController#view: 3 0.270 0.171 0.108 0.506
285
- TeamsController#progress: 2 0.000 0.000 0.000 0.000
286
- RssController#uber: 2 0.012 0.000 0.012 0.012
287
285
  PeopleController#progress: 2 0.302 0.302 0.000 0.604
288
286
  PeopleController#view: 2 0.487 0.209 0.278 0.695
287
+ RssController#uber: 2 0.012 0.000 0.012 0.012
288
+ TeamsController#progress: 2 0.000 0.000 0.000 0.000
289
289
  EOF
290
290
 
291
291
  assert_equal expected, @analyzer.render_times_summary
@@ -297,10 +297,10 @@ Request Times Summary: Count Avg Std Dev Min Max
297
297
  ALL REQUESTS: 11 0.576 0.508 0.000 1.470
298
298
 
299
299
  ThingsController#view: 3 0.716 0.387 0.396 1.260
300
- TeamsController#progress: 2 0.841 0.629 0.212 1.470
301
- RssController#uber: 2 0.035 0.000 0.035 0.035
302
300
  PeopleController#progress: 2 0.489 0.489 0.000 0.977
303
301
  PeopleController#view: 2 0.731 0.371 0.360 1.102
302
+ RssController#uber: 2 0.035 0.000 0.035 0.035
303
+ TeamsController#progress: 2 0.841 0.629 0.212 1.470
304
304
 
305
305
  Slowest Request Times:
306
306
  \tTeamsController#progress took 1.470s
@@ -320,10 +320,10 @@ DB Times Summary: Count Avg Std Dev Min Max
320
320
  ALL REQUESTS: 11 0.366 0.393 0.000 1.144
321
321
 
322
322
  ThingsController#view: 3 0.403 0.362 0.122 0.914
323
- TeamsController#progress: 2 0.646 0.497 0.149 1.144
324
- RssController#uber: 2 0.008 0.000 0.008 0.008
325
323
  PeopleController#progress: 2 0.415 0.415 0.000 0.830
326
324
  PeopleController#view: 2 0.338 0.149 0.189 0.486
325
+ RssController#uber: 2 0.008 0.000 0.008 0.008
326
+ TeamsController#progress: 2 0.646 0.497 0.149 1.144
327
327
 
328
328
  Slowest Total DB Times:
329
329
  \tTeamsController#progress took 1.144s
@@ -343,10 +343,10 @@ Render Times Summary: Count Avg Std Dev Min Max
343
343
  ALL REQUESTS: 11 0.219 0.253 0.000 0.695
344
344
 
345
345
  ThingsController#view: 3 0.270 0.171 0.108 0.506
346
- TeamsController#progress: 2 0.000 0.000 0.000 0.000
347
- RssController#uber: 2 0.012 0.000 0.012 0.012
348
346
  PeopleController#progress: 2 0.302 0.302 0.000 0.604
349
347
  PeopleController#view: 2 0.487 0.209 0.278 0.695
348
+ RssController#uber: 2 0.012 0.000 0.012 0.012
349
+ TeamsController#progress: 2 0.000 0.000 0.000 0.000
350
350
 
351
351
  Slowest Total Render Times:
352
352
  \tPeopleController#view took 0.695s
@@ -374,10 +374,10 @@ Request Times Summary: Count Avg Std Dev Min Max
374
374
  ALL REQUESTS: 11 0.576 0.508 0.000 1.470
375
375
 
376
376
  ThingsController#view: 3 0.716 0.387 0.396 1.260
377
- TeamsController#progress: 2 0.841 0.629 0.212 1.470
378
- RssController#uber: 2 0.035 0.000 0.035 0.035
379
377
  PeopleController#progress: 2 0.489 0.489 0.000 0.977
380
378
  PeopleController#view: 2 0.731 0.371 0.360 1.102
379
+ RssController#uber: 2 0.035 0.000 0.035 0.035
380
+ TeamsController#progress: 2 0.841 0.629 0.212 1.470
381
381
  EOF
382
382
 
383
383
  assert_equal expected, @analyzer.request_times_summary
@@ -222,8 +222,8 @@ Jan 03 12:24:24 duo2 rails[4277]: Completed in 0.00112 (896 reqs/sec) | DB: 0.00
222
222
 
223
223
  def test_class_parse_multi
224
224
  entries = []
225
- File.open 'test/test.syslog.log' do |fp|
226
- LogParser.parse fp do |entry|
225
+ open 'test/test.syslog.log' do |io|
226
+ LogParser.parse io do |entry|
227
227
  entries << entry
228
228
  end
229
229
  end
@@ -235,15 +235,18 @@ Jan 03 12:24:24 duo2 rails[4277]: Completed in 0.00112 (896 reqs/sec) | DB: 0.00
235
235
  assert_equal 'TeamsController#progress', redirect.page
236
236
  assert_equal 0, redirect.render_time
237
237
 
238
+ second_last = entries[-2]
239
+ assert_equal 'PeopleController#progress', second_last.page
240
+ assert_equal 0, second_last.request_time
241
+
238
242
  last = entries.last
239
- assert_equal 'PeopleController#progress', last.page
240
- assert_equal 0, last.request_time
243
+ assert_equal nil, last.page
241
244
  end
242
245
 
243
246
  def test_class_parse_0_14_x
244
247
  entries = []
245
- File.open 'test/test.syslog.0.14.x.log' do |fp|
246
- LogParser.parse fp do |entry|
248
+ open 'test/test.syslog.0.14.x.log' do |io|
249
+ LogParser.parse io do |entry|
247
250
  entries << entry
248
251
  end
249
252
  end
metadata CHANGED
@@ -1,33 +1,78 @@
1
1
  --- !ruby/object:Gem::Specification
2
- rubygems_version: 0.9.2
3
- specification_version: 1
4
2
  name: production_log_analyzer
5
3
  version: !ruby/object:Gem::Version
6
- version: 1.5.0
7
- date: 2007-05-16 00:00:00 -07:00
8
- summary: production_log_analyzer lets you find out which actions on a Rails site are slowing you down.
9
- require_paths:
10
- - lib
11
- email: drbrain@segment7.net
12
- homepage: http://seattlerb.rubyforge.org/production_log_analyzer
13
- rubyforge_project: seattlerb
14
- description: production_log_analyzer provides three tools to analyze log files created by SyslogLogger. pl_analyze for getting daily reports, action_grep for pulling log lines for a single action and action_errors to summarize errors with counts.
15
- autorequire:
16
- default_executable:
17
- bindir: bin
18
- has_rdoc: true
19
- required_ruby_version: !ruby/object:Gem::Version::Requirement
20
- requirements:
21
- - - ">"
22
- - !ruby/object:Gem::Version
23
- version: 0.0.0
24
- version:
4
+ version: 1.5.1
25
5
  platform: ruby
26
- signing_key:
27
- cert_chain:
28
- post_install_message:
29
6
  authors:
30
7
  - Eric Hodel
8
+ autorequire:
9
+ bindir: bin
10
+ cert_chain:
11
+ - |
12
+ -----BEGIN CERTIFICATE-----
13
+ MIIDNjCCAh6gAwIBAgIBADANBgkqhkiG9w0BAQUFADBBMRAwDgYDVQQDDAdkcmJy
14
+ YWluMRgwFgYKCZImiZPyLGQBGRYIc2VnbWVudDcxEzARBgoJkiaJk/IsZAEZFgNu
15
+ ZXQwHhcNMDcxMjIxMDIwNDE0WhcNMDgxMjIwMDIwNDE0WjBBMRAwDgYDVQQDDAdk
16
+ cmJyYWluMRgwFgYKCZImiZPyLGQBGRYIc2VnbWVudDcxEzARBgoJkiaJk/IsZAEZ
17
+ FgNuZXQwggEiMA0GCSqGSIb3DQEBAQUAA4IBDwAwggEKAoIBAQCbbgLrGLGIDE76
18
+ LV/cvxdEzCuYuS3oG9PrSZnuDweySUfdp/so0cDq+j8bqy6OzZSw07gdjwFMSd6J
19
+ U5ddZCVywn5nnAQ+Ui7jMW54CYt5/H6f2US6U0hQOjJR6cpfiymgxGdfyTiVcvTm
20
+ Gj/okWrQl0NjYOYBpDi+9PPmaH2RmLJu0dB/NylsDnW5j6yN1BEI8MfJRR+HRKZY
21
+ mUtgzBwF1V4KIZQ8EuL6I/nHVu07i6IkrpAgxpXUfdJQJi0oZAqXurAV3yTxkFwd
22
+ g62YrrW26mDe+pZBzR6bpLE+PmXCzz7UxUq3AE0gPHbiMXie3EFE0oxnsU3lIduh
23
+ sCANiQ8BAgMBAAGjOTA3MAkGA1UdEwQCMAAwCwYDVR0PBAQDAgSwMB0GA1UdDgQW
24
+ BBS5k4Z75VSpdM0AclG2UvzFA/VW5DANBgkqhkiG9w0BAQUFAAOCAQEAHagT4lfX
25
+ kP/hDaiwGct7XPuVGbrOsKRVD59FF5kETBxEc9UQ1clKWngf8JoVuEoKD774dW19
26
+ bU0GOVWO+J6FMmT/Cp7nuFJ79egMf/gy4gfUfQMuvfcr6DvZUPIs9P/TlK59iMYF
27
+ DIOQ3DxdF3rMzztNUCizN4taVscEsjCcgW6WkUJnGdqlu3OHWpQxZBJkBTjPCoc6
28
+ UW6on70SFPmAy/5Cq0OJNGEWBfgD9q7rrs/X8GGwUWqXb85RXnUVi/P8Up75E0ag
29
+ 14jEc90kN+C7oI/AGCBN0j6JnEtYIEJZibjjDJTSMWlUKKkj30kq7hlUC2CepJ4v
30
+ x52qPcexcYZR7w==
31
+ -----END CERTIFICATE-----
32
+
33
+ date: 2009-06-23 00:00:00 -07:00
34
+ default_executable:
35
+ dependencies:
36
+ - !ruby/object:Gem::Dependency
37
+ name: rails_analyzer_tools
38
+ type: :runtime
39
+ version_requirement:
40
+ version_requirements: !ruby/object:Gem::Requirement
41
+ requirements:
42
+ - - ">="
43
+ - !ruby/object:Gem::Version
44
+ version: 1.4.0
45
+ version:
46
+ - !ruby/object:Gem::Dependency
47
+ name: hoe
48
+ type: :development
49
+ version_requirement:
50
+ version_requirements: !ruby/object:Gem::Requirement
51
+ requirements:
52
+ - - ">="
53
+ - !ruby/object:Gem::Version
54
+ version: 2.2.0
55
+ version:
56
+ description: |-
57
+ production_log_analyzer lets you find out which actions on a Rails
58
+ site are slowing you down.
59
+
60
+ Bug reports:
61
+
62
+ http://rubyforge.org/tracker/?func=add&group_id=1513&atid=5921
63
+ email:
64
+ - drbrain@segment7.net
65
+ executables:
66
+ - action_errors
67
+ - action_grep
68
+ - pl_analyze
69
+ extensions: []
70
+
71
+ extra_rdoc_files:
72
+ - History.txt
73
+ - LICENSE.txt
74
+ - Manifest.txt
75
+ - README.txt
31
76
  files:
32
77
  - History.txt
33
78
  - LICENSE.txt
@@ -47,38 +92,36 @@ files:
47
92
  - test/test_action_grep.rb
48
93
  - test/test_analyzer.rb
49
94
  - test/test_parser.rb
95
+ has_rdoc: true
96
+ homepage: http://seattlerb.rubyforge.org/production_log_analyzer
97
+ licenses: []
98
+
99
+ post_install_message:
100
+ rdoc_options:
101
+ - --main
102
+ - README.txt
103
+ require_paths:
104
+ - lib
105
+ required_ruby_version: !ruby/object:Gem::Requirement
106
+ requirements:
107
+ - - ">="
108
+ - !ruby/object:Gem::Version
109
+ version: "0"
110
+ version:
111
+ required_rubygems_version: !ruby/object:Gem::Requirement
112
+ requirements:
113
+ - - ">="
114
+ - !ruby/object:Gem::Version
115
+ version: "0"
116
+ version:
117
+ requirements: []
118
+
119
+ rubyforge_project: seattlerb
120
+ rubygems_version: 1.3.4
121
+ signing_key:
122
+ specification_version: 3
123
+ summary: production_log_analyzer lets you find out which actions on a Rails site are slowing you down
50
124
  test_files:
51
125
  - test/test_action_grep.rb
52
126
  - test/test_analyzer.rb
53
127
  - test/test_parser.rb
54
- rdoc_options: []
55
-
56
- extra_rdoc_files: []
57
-
58
- executables:
59
- - action_errors
60
- - action_grep
61
- - pl_analyze
62
- extensions: []
63
-
64
- requirements: []
65
-
66
- dependencies:
67
- - !ruby/object:Gem::Dependency
68
- name: rails_analyzer_tools
69
- version_requirement:
70
- version_requirements: !ruby/object:Gem::Version::Requirement
71
- requirements:
72
- - - ">="
73
- - !ruby/object:Gem::Version
74
- version: 1.4.0
75
- version:
76
- - !ruby/object:Gem::Dependency
77
- name: hoe
78
- version_requirement:
79
- version_requirements: !ruby/object:Gem::Version::Requirement
80
- requirements:
81
- - - ">="
82
- - !ruby/object:Gem::Version
83
- version: 1.2.0
84
- version:
Binary file