request-log-analyzer 1.5.4 → 1.6.4

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.
@@ -46,4 +46,22 @@ describe RequestLogAnalyzer::FileFormat::AmazonS3 do
46
46
  end
47
47
  end
48
48
 
49
+ it "should parse a COPY request correctly" do
50
+ line = '09216466b5571a8db0bf5abca72041fd3fc163e5eb83c51159735353ac6a2b9a testbucket [03/Mar/2010:23:04:59 +0000] 174.119.31.76 09216466b5571a8db0bf5abca72041fd3fc163e5eb83c51159735353ac6a2b9a ACCC34B843C87BC9 REST.COPY.OBJECT files/image.png "PUT /files/image.png HTTP/1.1" 200 - 234 65957 365 319 "-" "" -'
51
+ @file_format.should parse_line(line).as(:access).and_capture(
52
+ :bucket_owner => '09216466b5571a8db0bf5abca72041fd3fc163e5eb83c51159735353ac6a2b9a',
53
+ :bucket => 'testbucket',
54
+ :timestamp => 20100303230459,
55
+ :remote_ip => '174.119.31.76',
56
+ :requester => '09216466b5571a8db0bf5abca72041fd3fc163e5eb83c51159735353ac6a2b9a',
57
+ :key => 'files/image.png',
58
+ :operation => 'REST.COPY.OBJECT',
59
+ :total_time => 0.365,
60
+ :turnaround_time => 0.319,
61
+ :bytes_sent => 234,
62
+ :object_size => 65957,
63
+ :referer => nil,
64
+ :user_agent => '')
65
+ end
66
+
49
67
  end
@@ -0,0 +1,65 @@
1
+ require File.dirname(__FILE__) + '/../../spec_helper'
2
+
3
+ describe RequestLogAnalyzer::FileFormat::Postgresql do
4
+
5
+ it "should be a valid file format" do
6
+ RequestLogAnalyzer::FileFormat.load(:Postgresql).should be_valid
7
+ end
8
+
9
+ describe '#parse_line' do
10
+ before(:each) do
11
+ @file_format = RequestLogAnalyzer::FileFormat.load(:Postgresql)
12
+ end
13
+
14
+ it "should parse a :query line correctly" do
15
+ line = '2004-05-07 11:58:36 LOG: query: SELECT plugin_id, plugin_name FROM plugins'
16
+ @file_format.should parse_line(line).as(:query).and_capture(:timestamp => 20040507115836, :query_fragment => 'SELECT plugin_id, plugin_name FROM plugins')
17
+ end
18
+
19
+ it "should parse a :query_fragment line correctly" do
20
+ line = ' groups.type_id,users.user_name,users.realname,'
21
+ @file_format.should parse_line(line).as(:query_fragment).and_capture(:query_fragment => "groups.type_id,users.user_name,users.realname,")
22
+ end
23
+
24
+ it "should parse a :duration line correctly" do
25
+ line = '2004-05-07 11:58:36 LOG: duration: 0.002612 sec'
26
+ @file_format.should parse_line(line).as(:duration).and_capture(:query_time => 0.002612)
27
+ end
28
+ end
29
+
30
+ describe '#parse_io' do
31
+ before(:each) do
32
+ @log_parser = RequestLogAnalyzer::Source::LogParser.new(RequestLogAnalyzer::FileFormat.load(:postgresql))
33
+ end
34
+
35
+ it "should parse a multiline query entry correctly" do
36
+ fixture = <<EOS
37
+ 2004-05-07 11:58:22 LOG: query: SELECT groups.group_name,groups.unix_group_name,
38
+ groups.type_id,users.user_name,users.realname,
39
+ news_bytes.forum_id,news_bytes.summary,news_bytes.post_date,news_bytes.details
40
+ FROM users,news_bytes,groups
41
+ WHERE news_bytes.group_id='98' AND news_bytes.is_approved <> '4'
42
+ AND users.user_id=news_bytes.submitted_by
43
+ AND news_bytes.group_id=groups.group_id
44
+ ORDER BY post_date DESC LIMIT 10 OFFSET 0
45
+ 2004-05-07 11:58:22 LOG: duration: 0.002680 sec
46
+ EOS
47
+ @log_parser.parse_io(StringIO.new(fixture)) do |request|
48
+ request.should be_kind_of(RequestLogAnalyzer::FileFormat::Postgresql::Request)
49
+ request[:query].should == "SELECT groups.group_name,groups.unix_group_name, groups.type_id,users.user_name,users.realname, news_bytes.forum_id,news_bytes.summary,news_bytes.post_date,news_bytes.details FROM users,news_bytes,groups WHERE news_bytes.group_id=:string AND news_bytes.is_approved <> :string AND users.user_id=news_bytes.submitted_by AND news_bytes.group_id=groups.group_id ORDER BY post_date DESC LIMIT :int OFFSET :int"
50
+ end
51
+ end
52
+
53
+ it "should parse a dualline query entry correctly" do
54
+ fixture = <<EOS
55
+ 2004-05-07 11:58:36 LOG: query: SELECT type, count FROM project_sums_agg WHERE group_id=59
56
+ 2004-05-07 11:58:36 LOG: duration: 0.001197 sec
57
+ EOS
58
+ @log_parser.parse_io(StringIO.new(fixture)) do |request|
59
+ request.should be_kind_of(RequestLogAnalyzer::FileFormat::Postgresql::Request)
60
+ request[:query].should == "SELECT type, count FROM project_sums_agg WHERE group_id=:int"
61
+ end
62
+ end
63
+ end
64
+ end
65
+
@@ -0,0 +1,120 @@
1
+ require 'spec_helper'
2
+
3
+ describe RequestLogAnalyzer::FileFormat::Rails do
4
+
5
+ it "should be a valid file format" do
6
+ RequestLogAnalyzer::FileFormat.load(:rails3).should be_valid
7
+ end
8
+
9
+ describe '#parse_line' do
10
+ before(:each) { @file_format = RequestLogAnalyzer::FileFormat.load(:rails3) }
11
+
12
+ it "should parse :started lines correctly" do
13
+ line = 'Started GET "/queries" for 127.0.0.1 at 2010-02-25 16:15:18'
14
+ @file_format.should parse_line(line).as(:started).and_capture(:method => 'GET',
15
+ :path => '/queries', :ip => '127.0.0.1', :timestamp => 20100225161518)
16
+ end
17
+
18
+ it "should parse :processing lines correctly" do
19
+ line = ' Processing by QueriesController#index as HTML'
20
+ @file_format.should parse_line(line).as(:processing).and_capture(
21
+ :controller => 'QueriesController', :action => 'index', :format => 'HTML')
22
+ end
23
+
24
+
25
+ # it "should parse beta :completed lines correctly" do
26
+ # line = 'Completed in 9ms (Views: 4.9ms | ActiveRecord: 0.5ms) with 200'
27
+ # @file_format.should parse_line(line).as(:completed).and_capture(
28
+ # :duration => 0.009, :status => 200)
29
+ # end
30
+
31
+ it "should parse :completed lines correctly" do
32
+ line = 'Completed 200 OK in 170ms (Views: 78.4ms | ActiveRecord: 48.2ms)'
33
+ @file_format.should parse_line(line).as(:completed).and_capture(
34
+ :duration => 0.170, :status => 200)
35
+ end
36
+
37
+ it "should pase :failure lines correctly" do
38
+ line = "ActionView::Template::Error (undefined local variable or method `field' for #<Class>) on line #3 of /Users/willem/Code/warehouse/app/views/queries/execute.csv.erb:"
39
+ @file_format.should parse_line(line).as(:failure).and_capture(:line => 3,
40
+ :error => 'ActionView::Template::Error',
41
+ :message => "undefined local variable or method `field' for #<Class>",
42
+ :file => '/Users/willem/Code/warehouse/app/views/queries/execute.csv.erb')
43
+ end
44
+ end
45
+
46
+ describe '#parse_io' do
47
+ before(:each) do
48
+ @log_parser = RequestLogAnalyzer::Source::LogParser.new(RequestLogAnalyzer::FileFormat.load(:rails3))
49
+ end
50
+
51
+ it "should parse a successful request correctly" do
52
+ log = <<-EOLOG
53
+ Started GET "/" for 127.0.0.1 at 2010-03-19 06:40:41
54
+ Processing by QueriesController#index as HTML
55
+ SQL (16.3ms) SHOW TABLES
56
+ Query Load (32.0ms) SELECT `queries`.* FROM `queries`
57
+ Rendered queries/index.html.erb within layouts/default (40.9ms)
58
+ Completed 200 OK in 170ms (Views: 78.4ms | ActiveRecord: 48.2ms)
59
+ EOLOG
60
+
61
+ request_counter.should_receive(:hit!).once
62
+ @log_parser.should_not_receive(:warn)
63
+
64
+ @log_parser.parse_io(StringIO.new(log)) do |request|
65
+ request_counter.hit! if request.kind_of?(RequestLogAnalyzer::FileFormat::Rails3::Request) && request.completed?
66
+ end
67
+ end
68
+
69
+ it "should parse an unroutable request correctly" do
70
+ log = <<-EOLOG
71
+ Started GET "/404" for 127.0.0.1 at 2010-03-19 06:40:57
72
+
73
+ ActionController::RoutingError (No route matches "/404"):
74
+
75
+
76
+ Rendered /Users/rails/actionpack/lib/action_dispatch/middleware/templates/rescues/routing_error.erb within rescues/layout (1.0ms)
77
+
78
+ EOLOG
79
+
80
+ request_counter.should_receive(:hit!).once
81
+ @log_parser.should_not_receive(:warn)
82
+
83
+ @log_parser.parse_io(StringIO.new(log)) do |request|
84
+ request_counter.hit! if request.kind_of?(RequestLogAnalyzer::FileFormat::Rails3::Request) && request.completed?
85
+ end
86
+ end
87
+
88
+ it "should parse a failing request correctly" do
89
+ log = <<-EOLOG
90
+ Started POST "/queries/397638749/execute.csv" for 127.0.0.1 at 2010-03-01 18:44:33
91
+ Processing by QueriesController#execute as CSV
92
+ Parameters: {"commit"=>"Run query", "authenticity_token"=>"pz9WcxkcrlG/43eg6BgSAnJL7yIsaffuHbYxPHUsUzQ=", "id"=>"397638749"}
93
+
94
+ ActionView::Template::Error (undefined local variable or method `field' for #<Class>) on line #3 of /Users/application/app/views/queries/execute.csv.erb:
95
+ 1: <%=raw @result.fields.map { |f| f.humanize.to_json }.join(',') %>
96
+ 2: <% @result.each do |record| %>
97
+ 3: <%=raw @result.fields.map { |f| record[field].to_s }.join(",") %>
98
+ 4: <% end %>
99
+
100
+ app/views/queries/execute.csv.erb:3:in `_render_template__652100315_2182241460_0'
101
+ app/views/queries/execute.csv.erb:3:in `map'
102
+ app/views/queries/execute.csv.erb:3:in `_render_template__652100315_2182241460_0'
103
+ app/views/queries/execute.csv.erb:2:in `_render_template__652100315_2182241460_0'
104
+ app/controllers/queries_controller.rb:34:in `execute'
105
+
106
+ Rendered /rails/actionpack-3.0.0.beta/lib/action_dispatch/middleware/templates/rescues/_trace.erb (1.0ms)
107
+ Rendered /rails/actionpack-3.0.0.beta/lib/action_dispatch/middleware/templates/rescues/_request_and_response.erb (9.7ms)
108
+ Rendered /rails/actionpack-3.0.0.beta/lib/action_dispatch/middleware/templates/rescues/template_error.erb within /Users/willem/.rvm/gems/ruby-1.8.7-p248/gems/actionpack-3.0.0.beta/lib/action_dispatch/middleware/templates/rescues/layout.erb (20.4ms)
109
+
110
+ EOLOG
111
+
112
+ request_counter.should_receive(:hit!).once
113
+ @log_parser.should_not_receive(:warn)
114
+
115
+ @log_parser.parse_io(StringIO.new(log)) do |request|
116
+ request_counter.hit! if request.kind_of?(RequestLogAnalyzer::FileFormat::Rails3::Request) && request.completed?
117
+ end
118
+ end
119
+ end
120
+ end
@@ -80,11 +80,17 @@ describe RequestLogAnalyzer::FileFormat::Rails do
80
80
  @rails.should parse_line(line).as(:failure).and_capture(:error => 'NoMethodError', :message => "undefined method `update_domain_account' for nil:NilClass")
81
81
  end
82
82
 
83
- it "should parse a :cache_hit line correctly" do
84
- line = prefix + 'Filter chain halted as [#<ActionController::Caching::Actions::ActionCacheFilter:0x2a999ad620 @check=nil, @options={:store_options=>{}, :layout=>nil, :cache_path=>#<Proc:0x0000002a999b8890@/app/controllers/cached_controller.rb:8>}>] rendered_or_redirected.'
83
+ it "should parse a :cache_hit line correctly with an filter instance reference" do
84
+ line = prefix + 'Filter chain halted as [#<ActionController::Filters::AroundFilter:0x2a999ad120 @identifier=nil, @kind=:filter, @options={:only=>#<Set: {"cached"}>, :if=>:not_logged_in?, :unless=>nil}, @method=#<ActionController::Caching::Actions::ActionCacheFilter:0x2a999ad620 @check=nil, @options={:store_options=>{}, :layout=>nil, :cache_path=>#<Proc:0x0000002a999b8890@/app/controllers/cached_controller.rb:8>}>>] did_not_yield.'
85
85
  @rails.should parse_line(line).as(:cache_hit)
86
86
  end
87
87
 
88
+ it "should parse a :cache_hit line correctly with an proc instance reference" do
89
+ line = prefix + 'Filter chain halted as [#<ActionController::Filters::AroundFilter:0x2a9a923e38 @method=#<Proc:0x0000002a9818b3f8@/usr/local/lib/ruby/gems/1.8/gems/actionpack-2.3.5/lib/action_controller/caching/actions.rb:64>, @kind=:filter, @identifier=nil, @options={:unless=>nil, :if=>nil, :only=>#<Set: {"show"}>}>] did_not_yield.'
90
+ @rails.should parse_line(line).as(:cache_hit)
91
+ end
92
+
93
+
88
94
  it "should parse a :parameters line correctly" do
89
95
  line = prefix + ' Parameters: {"action"=>"cached", "controller"=>"cached"}'
90
96
  @rails.should parse_line(line).as(:parameters).and_capture(:params => {:action => 'cached', :controller => 'cached'})
@@ -46,7 +46,7 @@ describe RequestLogAnalyzer::Source::LogParser, :requests do
46
46
  end
47
47
 
48
48
  it "should parse a stream and find valid requests" do
49
- io = File.new(log_fixture(:test_file_format), 'r')
49
+ io = File.new(log_fixture(:test_file_format), 'rb')
50
50
  @log_parser.parse_io(io) do |request|
51
51
  request.should be_kind_of(RequestLogAnalyzer::Request)
52
52
  request.should =~ :test
@@ -85,22 +85,22 @@ describe RequestLogAnalyzer::Tracker::Base do
85
85
  end
86
86
 
87
87
  it "should return the value of the block if one is given to the :if option" do
88
- tracker = @tracker_class.new(:if => lambda { false } )
88
+ tracker = @tracker_class.new(:if => lambda { |r| false } )
89
89
  tracker.should_update?(request(:field => 'anything')).should be_false
90
90
  end
91
91
 
92
92
  it "should return the inverse value of the block if one is given to the :if option" do
93
- tracker = @tracker_class.new(:unless => lambda { false } )
93
+ tracker = @tracker_class.new(:unless => lambda { |r| false } )
94
94
  tracker.should_update?(request(:field => 'anything')).should be_true
95
95
  end
96
96
 
97
97
  it "should return false if any of the checks fail" do
98
- tracker = @tracker_class.new(:if => :field, :unless => lambda { false }, :line_type => :not_present )
98
+ tracker = @tracker_class.new(:if => :field, :unless => lambda { |r| false }, :line_type => :not_present )
99
99
  tracker.should_update?(request(:line_type => :present, :field => 'anything')).should be_false
100
100
  end
101
101
 
102
102
  it "should return true if all of the checks succeed" do
103
- tracker = @tracker_class.new(:if => :field, :unless => lambda { false }, :line_type => :present )
103
+ tracker = @tracker_class.new(:if => :field, :unless => lambda { |r| false }, :line_type => :present )
104
104
  tracker.should_update?(request(:line_type => :present, :field => 'anything')).should be_true
105
105
  end
106
106
 
@@ -119,19 +119,20 @@ module GithubGem
119
119
  checks = [:check_current_branch, :check_clean_status, :check_not_diverged, :check_version]
120
120
  checks.unshift('spec:basic') if has_specs?
121
121
  checks.unshift('test:basic') if has_tests?
122
- checks.push << [:check_rubyforge] if gemspec.rubyforge_project
122
+ # checks.push << [:check_rubyforge] if gemspec.rubyforge_project
123
123
 
124
124
  desc "Perform all checks that would occur before a release"
125
125
  task(:release_checks => checks)
126
126
 
127
- release_tasks = [:release_checks, :set_version, :build, :github_release]
128
- release_tasks << [:rubyforge_release] if gemspec.rubyforge_project
127
+ release_tasks = [:release_checks, :set_version, :build, :github_release, :gemcutter_release]
128
+ # release_tasks << [:rubyforge_release] if gemspec.rubyforge_project
129
129
 
130
130
  desc "Release a new verison of the gem"
131
131
  task(:release => release_tasks) { release_task }
132
132
 
133
- task(:check_rubyforge) { check_rubyforge_task }
134
- task(:rubyforge_release) { rubyforge_release_task }
133
+ # task(:check_rubyforge) { check_rubyforge_task }
134
+ # task(:rubyforge_release) { rubyforge_release_task }
135
+ task(:gemcutter_release) { gemcutter_release_task }
135
136
  task(:github_release => [:commit_modified_files, :tag_version]) { github_release_task }
136
137
  task(:tag_version) { tag_version_task }
137
138
  task(:commit_modified_files) { commit_modified_files_task }
@@ -215,18 +216,22 @@ module GithubGem
215
216
  git.push(remote, remote_branch, true)
216
217
  end
217
218
 
218
- # Checks whether Rubyforge is configured properly
219
- def check_rubyforge_task
220
- # Login no longer necessary when using rubyforge 2.0.0 gem
221
- # raise "Could not login on rubyforge!" unless `rubyforge login 2>&1`.strip.empty?
222
- output = `rubyforge names`.split("\n")
223
- raise "Rubyforge group not found!" unless output.any? { |line| %r[^groups\s*\:.*\b#{Regexp.quote(gemspec.rubyforge_project)}\b.*] =~ line }
224
- raise "Rubyforge package not found!" unless output.any? { |line| %r[^packages\s*\:.*\b#{Regexp.quote(gemspec.name)}\b.*] =~ line }
225
- end
226
-
227
- # Task to release the .gem file toRubyforge.
228
- def rubyforge_release_task
229
- sh 'rubyforge', 'add_release', gemspec.rubyforge_project, gemspec.name, gemspec.version.to_s, "pkg/#{gemspec.name}-#{gemspec.version}.gem"
219
+ # # Checks whether Rubyforge is configured properly
220
+ # def check_rubyforge_task
221
+ # # Login no longer necessary when using rubyforge 2.0.0 gem
222
+ # # raise "Could not login on rubyforge!" unless `rubyforge login 2>&1`.strip.empty?
223
+ # output = `rubyforge names`.split("\n")
224
+ # raise "Rubyforge group not found!" unless output.any? { |line| %r[^groups\s*\:.*\b#{Regexp.quote(gemspec.rubyforge_project)}\b.*] =~ line }
225
+ # raise "Rubyforge package not found!" unless output.any? { |line| %r[^packages\s*\:.*\b#{Regexp.quote(gemspec.name)}\b.*] =~ line }
226
+ # end
227
+
228
+ # # Task to release the .gem file toRubyforge.
229
+ # def rubyforge_release_task
230
+ # sh 'rubyforge', 'add_release', gemspec.rubyforge_project, gemspec.name, gemspec.version.to_s, "pkg/#{gemspec.name}-#{gemspec.version}.gem"
231
+ # end
232
+
233
+ def gemcutter_release_task
234
+ sh "gem push pkg/#{gemspec.name}-#{gemspec.version}.gem"
230
235
  end
231
236
 
232
237
  # Gem release task.
metadata CHANGED
@@ -1,7 +1,12 @@
1
1
  --- !ruby/object:Gem::Specification
2
2
  name: request-log-analyzer
3
3
  version: !ruby/object:Gem::Version
4
- version: 1.5.4
4
+ prerelease: false
5
+ segments:
6
+ - 1
7
+ - 6
8
+ - 4
9
+ version: 1.6.4
5
10
  platform: ruby
6
11
  authors:
7
12
  - Willem van Bergen
@@ -10,29 +15,37 @@ autorequire:
10
15
  bindir: bin
11
16
  cert_chain: []
12
17
 
13
- date: 2009-12-17 00:00:00 +01:00
18
+ date: 2010-03-22 00:00:00 -04:00
14
19
  default_executable: request-log-analyzer
15
20
  dependencies:
16
21
  - !ruby/object:Gem::Dependency
17
22
  name: rspec
18
- type: :development
19
- version_requirement:
20
- version_requirements: !ruby/object:Gem::Requirement
23
+ prerelease: false
24
+ requirement: &id001 !ruby/object:Gem::Requirement
21
25
  requirements:
22
26
  - - ">="
23
27
  - !ruby/object:Gem::Version
28
+ segments:
29
+ - 1
30
+ - 2
31
+ - 4
24
32
  version: 1.2.4
25
- version:
33
+ type: :development
34
+ version_requirements: *id001
26
35
  - !ruby/object:Gem::Dependency
27
36
  name: git
28
- type: :development
29
- version_requirement:
30
- version_requirements: !ruby/object:Gem::Requirement
37
+ prerelease: false
38
+ requirement: &id002 !ruby/object:Gem::Requirement
31
39
  requirements:
32
40
  - - ">="
33
41
  - !ruby/object:Gem::Version
42
+ segments:
43
+ - 1
44
+ - 1
45
+ - 0
34
46
  version: 1.1.0
35
- version:
47
+ type: :development
48
+ version_requirements: *id002
36
49
  description: " Request log analyzer's purpose is to find out how your web application is being used, how it performs and to\n focus your optimization efforts. This tool will parse all requests in the application's log file and aggregate the \n information. Once it is finished parsing the log file(s), it will show the requests that take op most server time \n using various metrics. It can also insert all parsed request information into a database so you can roll your own\n analysis. It supports Rails-, Merb- and Rack-based applications logs, Apache and Amazon S3 access logs and MySQL \n slow query logs out of the box, but file formats of other applications can easily be supported by supplying an \n easy to write log file format definition.\n"
37
50
  email:
38
51
  - willem@railsdoctors.com
@@ -65,8 +78,8 @@ files:
65
78
  - lib/request_log_analyzer/tracker/frequency.rb
66
79
  - lib/request_log_analyzer/tracker/duration.rb
67
80
  - tasks/github-gem.rake
68
- - .gitignore
69
81
  - spec/unit/filter/filter_spec.rb
82
+ - .gitignore
70
83
  - spec/lib/macros.rb
71
84
  - spec/spec_helper.rb
72
85
  - spec/fixtures/decompression.log.bz2
@@ -74,10 +87,10 @@ files:
74
87
  - lib/request_log_analyzer/filter.rb
75
88
  - spec/integration/scout_spec.rb
76
89
  - spec/fixtures/test_file_format.log
90
+ - spec/unit/filter/timespan_filter_spec.rb
77
91
  - lib/request_log_analyzer/tracker/traffic.rb
78
92
  - spec/unit/file_format/merb_format_spec.rb
79
93
  - spec/unit/file_format/format_autodetection_spec.rb
80
- - spec/unit/filter/timespan_filter_spec.rb
81
94
  - spec/unit/file_format/file_format_api_spec.rb
82
95
  - lib/request_log_analyzer/filter/field.rb
83
96
  - lib/request_log_analyzer/file_format/merb.rb
@@ -87,11 +100,14 @@ files:
87
100
  - spec/integration/mailer_spec.rb
88
101
  - lib/request_log_analyzer/line_definition.rb
89
102
  - spec/unit/tracker/frequency_tracker_spec.rb
103
+ - spec/fixtures/postgresql.log
90
104
  - spec/fixtures/multiple_files_2.log
91
105
  - spec/lib/mocks.rb
92
106
  - spec/unit/file_format/apache_format_spec.rb
93
107
  - spec/fixtures/syslog_1x.log
108
+ - spec/unit/file_format/rails3_format_spec.rb
94
109
  - spec/integration/munin_plugins_rails_spec.rb
110
+ - lib/request_log_analyzer/file_format/rails3.rb
95
111
  - spec/lib/helpers.rb
96
112
  - spec/unit/file_format/delayed_job_format_spec.rb
97
113
  - spec/fixtures/rails.db
@@ -107,10 +123,10 @@ files:
107
123
  - lib/request_log_analyzer/file_format/rack.rb
108
124
  - lib/request_log_analyzer/tracker/numeric_value.rb
109
125
  - spec/fixtures/test_language_combined.log
126
+ - spec/unit/request_spec.rb
110
127
  - lib/cli/command_line_arguments.rb
111
128
  - lib/request_log_analyzer.rb
112
129
  - spec/database.yml
113
- - spec/unit/request_spec.rb
114
130
  - lib/request_log_analyzer/database/base.rb
115
131
  - spec/unit/aggregator/database_inserter_spec.rb
116
132
  - lib/request_log_analyzer/database/request.rb
@@ -123,6 +139,7 @@ files:
123
139
  - spec/unit/tracker/duration_tracker_spec.rb
124
140
  - spec/fixtures/rails_22_cached.log
125
141
  - lib/request_log_analyzer/aggregator/summarizer.rb
142
+ - spec/unit/file_format/postgresql_format_spec.rb
126
143
  - spec/unit/file_format/common_regular_expressions_spec.rb
127
144
  - spec/fixtures/rails_1x.log
128
145
  - lib/request_log_analyzer/file_format/delayed_job.rb
@@ -132,17 +149,18 @@ files:
132
149
  - spec/unit/file_format/mysql_format_spec.rb
133
150
  - request-log-analyzer.gemspec
134
151
  - spec/fixtures/apache_common.log
152
+ - spec/unit/mailer_spec.rb
135
153
  - lib/request_log_analyzer/file_format/rails.rb
136
154
  - Rakefile
137
- - spec/unit/mailer_spec.rb
138
155
  - lib/request_log_analyzer/tracker/hourly_spread.rb
139
156
  - spec/unit/aggregator/summarizer_spec.rb
140
157
  - spec/unit/tracker/traffic_tracker_spec.rb
141
158
  - spec/unit/tracker/numeric_value_tracker_spec.rb
159
+ - lib/request_log_analyzer/file_format/postgresql.rb
142
160
  - lib/request_log_analyzer/tracker/timespan.rb
143
161
  - spec/unit/controller/log_processor_spec.rb
144
- - spec/fixtures/sinatra.log
145
162
  - spec/unit/filter/field_filter_spec.rb
163
+ - spec/fixtures/sinatra.log
146
164
  - spec/fixtures/merb_prefixed.log
147
165
  - lib/request_log_analyzer/log_processor.rb
148
166
  - lib/request_log_analyzer/filter/timespan.rb
@@ -186,18 +204,20 @@ required_ruby_version: !ruby/object:Gem::Requirement
186
204
  requirements:
187
205
  - - ">="
188
206
  - !ruby/object:Gem::Version
207
+ segments:
208
+ - 0
189
209
  version: "0"
190
- version:
191
210
  required_rubygems_version: !ruby/object:Gem::Requirement
192
211
  requirements:
193
212
  - - ">="
194
213
  - !ruby/object:Gem::Version
214
+ segments:
215
+ - 0
195
216
  version: "0"
196
- version:
197
217
  requirements:
198
218
  - To use the database inserter, ActiveRecord and an appropriate database adapter are required.
199
219
  rubyforge_project: r-l-a
200
- rubygems_version: 1.3.5
220
+ rubygems_version: 1.3.6
201
221
  signing_key:
202
222
  specification_version: 3
203
223
  summary: A command line tool to analyze request logs for Apache, Rails, Merb, MySQL and other web application servers
@@ -209,13 +229,14 @@ test_files:
209
229
  - spec/unit/filter/filter_spec.rb
210
230
  - spec/unit/database/connection_spec.rb
211
231
  - spec/integration/scout_spec.rb
232
+ - spec/unit/filter/timespan_filter_spec.rb
212
233
  - spec/unit/file_format/merb_format_spec.rb
213
234
  - spec/unit/file_format/format_autodetection_spec.rb
214
- - spec/unit/filter/timespan_filter_spec.rb
215
235
  - spec/unit/file_format/file_format_api_spec.rb
216
236
  - spec/integration/mailer_spec.rb
217
237
  - spec/unit/tracker/frequency_tracker_spec.rb
218
238
  - spec/unit/file_format/apache_format_spec.rb
239
+ - spec/unit/file_format/rails3_format_spec.rb
219
240
  - spec/integration/munin_plugins_rails_spec.rb
220
241
  - spec/unit/file_format/delayed_job_format_spec.rb
221
242
  - spec/unit/source/log_parser_spec.rb
@@ -225,6 +246,7 @@ test_files:
225
246
  - spec/unit/aggregator/database_inserter_spec.rb
226
247
  - spec/unit/filter/anonymize_filter_spec.rb
227
248
  - spec/unit/tracker/duration_tracker_spec.rb
249
+ - spec/unit/file_format/postgresql_format_spec.rb
228
250
  - spec/unit/file_format/common_regular_expressions_spec.rb
229
251
  - spec/unit/file_format/line_definition_spec.rb
230
252
  - spec/unit/file_format/mysql_format_spec.rb