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 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.