rack-request-object-logger 2.0.1 → 3.0.3

Sign up to get free protection for your applications and to get access to all the features.
checksums.yaml CHANGED
@@ -1,7 +1,7 @@
1
1
  ---
2
- SHA1:
3
- metadata.gz: 68113b8a402b14c8a318bf7f4d741b1cdea58b5d
4
- data.tar.gz: f3b79f22b3c49915e445664b20bac57d603daebb
2
+ SHA256:
3
+ metadata.gz: 1f88b6570bfb9f0ce097804e7251033d148625664ed132ce82f9ed451786881b
4
+ data.tar.gz: 3c3944e7642717a2e4f11cf8f4f4386fcb0e5f140cfa751ae3484cc66341aafa
5
5
  SHA512:
6
- metadata.gz: a5df959bfad13fd9df2acb70480fc5e8f59d7d058c5e0e6a250838eea9df3284240a8cccd3fce58889d542a9686ef8a19b7f7e2858edfe854333a64f25f2c5bc
7
- data.tar.gz: 71f93253e15c2b0680be1ae37ceb318c4975260cc26046cccaff25df0813a17cf68ceb96bbaf8fa89df14f6966963dc97cab28ef964069118087597a2474d121
6
+ metadata.gz: bbba4358191665de50681e94fb9e9af6406facf9388cd2065c9bb03e99c74a5716306efcbc8ea369ef0bbfee77a2159aaafd8e0041a9f5448a479f3c89b4b918
7
+ data.tar.gz: 669313528821b1bc40985ae94d6eafe5d209f94c3300f09036c860fdc64c93e48b1bd6946c5f7639a8661263a762bda4dc2e57e274e7dfb16434d3cb55775b0b
@@ -1,15 +1,18 @@
1
1
  sudo: false
2
2
  language: ruby
3
+ services:
4
+ - mysql
3
5
  rvm:
4
- - 2.2.6
5
- - 2.3.3
6
- - 2.4.0
7
- - jruby-9.1.6.0
8
- before_install: gem install bundler -v 1.13.7
6
+ - 2.5.4
7
+ - 2.6.3
8
+ - truffleruby
9
+ before_install:
10
+ - gem update --system
11
+ - gem install bundler
9
12
  cache: bundler
10
13
  matrix:
11
14
  include:
12
15
  - rvm: ruby-head
13
16
  allow_failures:
14
17
  - rvm: ruby-head
15
- fast_finish: true
18
+ fast_finish: true
data/README.md CHANGED
@@ -1,5 +1,4 @@
1
- [![Build Status](http://img.shields.io/travis/starmammoth/rack-request-object-logger.svg?style=flat-square)](https://travis-ci.org/starmammoth/rack-request-object-logger)
2
- [![Code Climate](http://img.shields.io/codeclimate/github/starmammoth/rack-request-object-logger.svg?style=flat-square)](https://codeclimate.com/github/starmammoth/rack-request-object-logger)
1
+ [![Build Status](http://img.shields.io/travis/istana/rack-request-object-logger.svg?style=flat-square)](https://travis-ci.org/istana/rack-request-object-logger)
3
2
  [![Gem Version](http://img.shields.io/gem/v/rack-request-object-logger.svg?style=flat-square)](https://rubygems.org/gems/rack-request-object-logger)
4
3
  [![License](http://img.shields.io/:license-apache-blue.svg?style=flat-square)](http://www.apache.org/licenses/LICENSE-2.0.html)
5
4
 
@@ -25,28 +24,32 @@ gem 'rack-request-object-logger'
25
24
 
26
25
  ## Rubies Support
27
26
 
28
- Ruby 2.1+, jRuby and Rubinius 3.69+
27
+ Tested with Matz Ruby 2.5, 2.6 and Truffleruby.
28
+
29
+ Should work with Ruby 2.1+, jRuby and Rubinius 3.69+ (is dead!) and Truffleruby.
29
30
 
30
31
  ## Roadmap
31
32
 
32
33
  While the code works flawlessly
33
34
 
34
- - performance specs don't work on jruby, but works on MRI and Rubinius 3.60
35
+ Bug: I learned at EuRuKo 2018 that my implementation of timings is wrong and not very accurate.
35
36
 
36
37
  ## Example - logging to SQL database in Rails
37
38
 
38
39
  generate a model for storage
39
40
 
40
41
  ```bash
41
- $ bin/rails g model Sql::HttpRequest uid:string data:text
42
+ # you need to add 'limit: 6' to application_server_request_start and application_server_request_end
43
+ # to have subsecond resolution please see examples/db/migrate/
44
+ $ bin/rails g model AnalyticsHttpRequest uid:string data:text status_code:integer application_server_request_start:datetime application_server_request_end:datetime
42
45
 
43
46
  ```
44
47
 
45
48
  add JSON serialization
46
49
 
47
50
  ```ruby
48
- # app/models/sql/http_request.rb
49
- class Sql::HttpRequest < ApplicationRecord
51
+ # app/models/analytics_http_request.rb
52
+ class AnalyticsHttpRequest < ApplicationRecord
50
53
  serialize :data, JSON
51
54
  end
52
55
 
@@ -57,7 +60,7 @@ add automatic logging via initializer
57
60
  ```ruby
58
61
  # config/initializers/rack_middlewares.rb
59
62
 
60
- Rails.application.config.middleware.use(RackRequestObjectLogger, Sql::HttpRequest)
63
+ Rails.application.config.middleware.use(RackRequestObjectLogger, AnalyticsHttpRequest)
61
64
  ```
62
65
 
63
66
  # Performance
@@ -76,7 +79,7 @@ I've seen applications sending sensitive data in GET and even POST requests in a
76
79
 
77
80
  ## License & Author
78
81
 
79
- Copyright 2016 Ivan Stana
82
+ Copyright 2016-2019 Ivan Stana
80
83
 
81
84
  Licensed under the Apache License, Version 2.0 (the "License");
82
85
  you may not use this file except in compliance with the License.
@@ -100,7 +103,7 @@ To install this gem onto your local machine, run `bundle exec rake install`. To
100
103
 
101
104
  ## Contributing
102
105
 
103
- Bug reports and pull requests are welcome on GitHub at https://github.com/starmammoth/rack-request-object-logger. This project is intended to be a safe, welcoming space for collaboration, and contributors are expected to adhere to the [Contributor Covenant](http://contributor-covenant.org) code of conduct.
106
+ Bug reports and pull requests are welcome on GitHub at https://github.com/istana/rack-request-object-logger. This project is intended to be a safe, welcoming space for collaboration, and contributors are expected to adhere to the [Contributor Covenant](http://contributor-covenant.org) code of conduct.
104
107
 
105
108
  ## Alternatives
106
109
 
@@ -0,0 +1,3 @@
1
+ class AnaylticsHttpRequest < ApplicationRecord
2
+ serialize :data, JSON
3
+ end
@@ -0,0 +1 @@
1
+ Rails.application.config.middleware.use "RackRequestObjectLogger", AnalyticsHttpRequest
@@ -0,0 +1,15 @@
1
+ class CreateAnalyticsHttpRequests < ActiveRecord::Migration[5.0]
2
+ def change
3
+ create_table :analytics_http_requests do |t|
4
+ t.string :uid
5
+ t.text :data
6
+ t.integer :status_code
7
+ # with limit: 6 we will store nanosecond resolution
8
+ # for statistics and performance monitoring sub-second resolution is a must
9
+ t.datetime :application_server_request_start, limit: 6
10
+ t.datetime :application_server_request_end, limit: 6
11
+
12
+ t.timestamps
13
+ end
14
+ end
15
+ end
@@ -1,4 +1,4 @@
1
1
  # frozen_string_literal: true
2
2
  class RackRequestObjectLogger
3
- VERSION = "2.0.1"
3
+ VERSION = "3.0.3"
4
4
  end
@@ -24,12 +24,12 @@ Gem::Specification.new do |spec|
24
24
  spec.require_paths = ["lib"]
25
25
 
26
26
  spec.add_dependency "rack", "> 0", "< 3.0"
27
- spec.add_development_dependency "bundler", "~> 1.14"
28
- spec.add_development_dependency "rake", "~> 12.0"
29
- spec.add_development_dependency "rspec", "~> 3.5"
27
+ spec.add_development_dependency "bundler", "~> 2.0"
28
+ spec.add_development_dependency "rake", "~> 12.3"
29
+ spec.add_development_dependency "rspec", "~> 3.8"
30
30
  spec.add_development_dependency "rspec-benchmark", "~> 0"
31
31
  spec.add_development_dependency "pry", "~> 0"
32
- spec.add_development_dependency "activerecord", '>= 4.2', "< 6.0"
33
- spec.add_development_dependency "sqlite3", "~> 1.3" unless RUBY_PLATFORM == 'java'
34
- spec.add_development_dependency "activerecord-jdbcsqlite3-adapter", "~> 1.3" if RUBY_PLATFORM == 'java'
32
+ spec.add_development_dependency "activerecord", '>= 6.0', "< 7.0"
33
+ spec.add_development_dependency "sqlite3", "~> 1.4" unless RUBY_PLATFORM == 'java'
34
+ spec.add_development_dependency "mysql2", "~> 0.5" unless RUBY_PLATFORM == 'java'
35
35
  end
metadata CHANGED
@@ -1,14 +1,14 @@
1
1
  --- !ruby/object:Gem::Specification
2
2
  name: rack-request-object-logger
3
3
  version: !ruby/object:Gem::Version
4
- version: 2.0.1
4
+ version: 3.0.3
5
5
  platform: ruby
6
6
  authors:
7
7
  - Ivan Stana
8
8
  autorequire:
9
9
  bindir: exe
10
10
  cert_chain: []
11
- date: 2017-02-11 00:00:00.000000000 Z
11
+ date: 2019-08-19 00:00:00.000000000 Z
12
12
  dependencies:
13
13
  - !ruby/object:Gem::Dependency
14
14
  name: rack
@@ -36,42 +36,42 @@ dependencies:
36
36
  requirements:
37
37
  - - "~>"
38
38
  - !ruby/object:Gem::Version
39
- version: '1.14'
39
+ version: '2.0'
40
40
  type: :development
41
41
  prerelease: false
42
42
  version_requirements: !ruby/object:Gem::Requirement
43
43
  requirements:
44
44
  - - "~>"
45
45
  - !ruby/object:Gem::Version
46
- version: '1.14'
46
+ version: '2.0'
47
47
  - !ruby/object:Gem::Dependency
48
48
  name: rake
49
49
  requirement: !ruby/object:Gem::Requirement
50
50
  requirements:
51
51
  - - "~>"
52
52
  - !ruby/object:Gem::Version
53
- version: '12.0'
53
+ version: '12.3'
54
54
  type: :development
55
55
  prerelease: false
56
56
  version_requirements: !ruby/object:Gem::Requirement
57
57
  requirements:
58
58
  - - "~>"
59
59
  - !ruby/object:Gem::Version
60
- version: '12.0'
60
+ version: '12.3'
61
61
  - !ruby/object:Gem::Dependency
62
62
  name: rspec
63
63
  requirement: !ruby/object:Gem::Requirement
64
64
  requirements:
65
65
  - - "~>"
66
66
  - !ruby/object:Gem::Version
67
- version: '3.5'
67
+ version: '3.8'
68
68
  type: :development
69
69
  prerelease: false
70
70
  version_requirements: !ruby/object:Gem::Requirement
71
71
  requirements:
72
72
  - - "~>"
73
73
  - !ruby/object:Gem::Version
74
- version: '3.5'
74
+ version: '3.8'
75
75
  - !ruby/object:Gem::Dependency
76
76
  name: rspec-benchmark
77
77
  requirement: !ruby/object:Gem::Requirement
@@ -106,34 +106,48 @@ dependencies:
106
106
  requirements:
107
107
  - - ">="
108
108
  - !ruby/object:Gem::Version
109
- version: '4.2'
109
+ version: '6.0'
110
110
  - - "<"
111
111
  - !ruby/object:Gem::Version
112
- version: '6.0'
112
+ version: '7.0'
113
113
  type: :development
114
114
  prerelease: false
115
115
  version_requirements: !ruby/object:Gem::Requirement
116
116
  requirements:
117
117
  - - ">="
118
118
  - !ruby/object:Gem::Version
119
- version: '4.2'
119
+ version: '6.0'
120
120
  - - "<"
121
121
  - !ruby/object:Gem::Version
122
- version: '6.0'
122
+ version: '7.0'
123
123
  - !ruby/object:Gem::Dependency
124
124
  name: sqlite3
125
125
  requirement: !ruby/object:Gem::Requirement
126
126
  requirements:
127
127
  - - "~>"
128
128
  - !ruby/object:Gem::Version
129
- version: '1.3'
129
+ version: '1.4'
130
+ type: :development
131
+ prerelease: false
132
+ version_requirements: !ruby/object:Gem::Requirement
133
+ requirements:
134
+ - - "~>"
135
+ - !ruby/object:Gem::Version
136
+ version: '1.4'
137
+ - !ruby/object:Gem::Dependency
138
+ name: mysql2
139
+ requirement: !ruby/object:Gem::Requirement
140
+ requirements:
141
+ - - "~>"
142
+ - !ruby/object:Gem::Version
143
+ version: '0.5'
130
144
  type: :development
131
145
  prerelease: false
132
146
  version_requirements: !ruby/object:Gem::Requirement
133
147
  requirements:
134
148
  - - "~>"
135
149
  - !ruby/object:Gem::Version
136
- version: '1.3'
150
+ version: '0.5'
137
151
  description: Log HTTP requests via Rack stack to an object. You can use any object,
138
152
  i.e. ActiveRecord model
139
153
  email:
@@ -152,6 +166,9 @@ files:
152
166
  - Rakefile
153
167
  - bin/console
154
168
  - bin/setup
169
+ - examples/rails5/app/models/http_request.rb
170
+ - examples/rails5/config/log_http_request.rb
171
+ - examples/rails5/db/migrate/20170211004327_create_http_requests.rb
155
172
  - lib/rack-request-object-logger.rb
156
173
  - lib/rack-request-object-logger/version.rb
157
174
  - performance/active_record_model_spec.rb
@@ -177,8 +194,7 @@ required_rubygems_version: !ruby/object:Gem::Requirement
177
194
  - !ruby/object:Gem::Version
178
195
  version: '0'
179
196
  requirements: []
180
- rubyforge_project:
181
- rubygems_version: 2.6.8
197
+ rubygems_version: 3.0.3
182
198
  signing_key:
183
199
  specification_version: 4
184
200
  summary: Log HTTP requests via Rack stack to an object. You can use any object.