rack-request-object-logger 2.0.1 → 3.0.3
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.
- checksums.yaml +5 -5
- data/.travis.yml +9 -6
- data/README.md +13 -10
- data/examples/rails5/app/models/http_request.rb +3 -0
- data/examples/rails5/config/log_http_request.rb +1 -0
- data/examples/rails5/db/migrate/20170211004327_create_http_requests.rb +15 -0
- data/lib/rack-request-object-logger/version.rb +1 -1
- data/rack-request-object-logger.gemspec +6 -6
- metadata +32 -16
checksums.yaml
CHANGED
@@ -1,7 +1,7 @@
|
|
1
1
|
---
|
2
|
-
|
3
|
-
metadata.gz:
|
4
|
-
data.tar.gz:
|
2
|
+
SHA256:
|
3
|
+
metadata.gz: 1f88b6570bfb9f0ce097804e7251033d148625664ed132ce82f9ed451786881b
|
4
|
+
data.tar.gz: 3c3944e7642717a2e4f11cf8f4f4386fcb0e5f140cfa751ae3484cc66341aafa
|
5
5
|
SHA512:
|
6
|
-
metadata.gz:
|
7
|
-
data.tar.gz:
|
6
|
+
metadata.gz: bbba4358191665de50681e94fb9e9af6406facf9388cd2065c9bb03e99c74a5716306efcbc8ea369ef0bbfee77a2159aaafd8e0041a9f5448a479f3c89b4b918
|
7
|
+
data.tar.gz: 669313528821b1bc40985ae94d6eafe5d209f94c3300f09036c860fdc64c93e48b1bd6946c5f7639a8661263a762bda4dc2e57e274e7dfb16434d3cb55775b0b
|
data/.travis.yml
CHANGED
@@ -1,15 +1,18 @@
|
|
1
1
|
sudo: false
|
2
2
|
language: ruby
|
3
|
+
services:
|
4
|
+
- mysql
|
3
5
|
rvm:
|
4
|
-
- 2.
|
5
|
-
- 2.
|
6
|
-
-
|
7
|
-
|
8
|
-
|
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
|
-
[](https://codeclimate.com/github/starmammoth/rack-request-object-logger)
|
1
|
+
[](https://travis-ci.org/istana/rack-request-object-logger)
|
3
2
|
[](https://rubygems.org/gems/rack-request-object-logger)
|
4
3
|
[](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.
|
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
|
-
|
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
|
-
|
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/
|
49
|
-
class
|
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,
|
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/
|
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 @@
|
|
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
|
@@ -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", "~>
|
28
|
-
spec.add_development_dependency "rake", "~> 12.
|
29
|
-
spec.add_development_dependency "rspec", "~> 3.
|
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", '>=
|
33
|
-
spec.add_development_dependency "sqlite3", "~> 1.
|
34
|
-
spec.add_development_dependency "
|
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:
|
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:
|
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: '
|
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: '
|
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.
|
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.
|
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.
|
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.
|
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: '
|
109
|
+
version: '6.0'
|
110
110
|
- - "<"
|
111
111
|
- !ruby/object:Gem::Version
|
112
|
-
version: '
|
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: '
|
119
|
+
version: '6.0'
|
120
120
|
- - "<"
|
121
121
|
- !ruby/object:Gem::Version
|
122
|
-
version: '
|
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.
|
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: '
|
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
|
-
|
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.
|