production_log_analyzer 1.5.0 → 1.5.1

Sign up to get free protection for your applications and to get access to all the features.
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