rack-request-object-logger 2.0.1 → 4.0.0
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/.github/workflows/ruby.yml +26 -0
- data/README.md +12 -24
- data/Rakefile +8 -2
- data/examples/rails7/config/initializers/log_http_request.rb +9 -0
- data/examples/rails7/db/migrate/20240917151639_create_analytics_requests.rb +14 -0
- data/examples/rails7/models/analytics_request.rb +3 -0
- data/lib/rack-request-object-logger/version.rb +1 -1
- data/lib/rack-request-object-logger.rb +2 -3
- data/rack-request-object-logger.gemspec +19 -13
- metadata +36 -33
- data/.travis.yml +0 -15
- data/performance/active_record_model_spec.rb +0 -41
- data/performance/in_memory_model_spec.rb +0 -20
- data/performance/performance_helper.rb +0 -5
checksums.yaml
CHANGED
@@ -1,7 +1,7 @@
|
|
1
1
|
---
|
2
|
-
|
3
|
-
metadata.gz:
|
4
|
-
data.tar.gz:
|
2
|
+
SHA256:
|
3
|
+
metadata.gz: f2df7642c85cddc3a1947c7d3b7191fcbee553877a19ca47ffd9b3a46a5bc0fa
|
4
|
+
data.tar.gz: 571cf74cb5555caf7d620c109e9b037cbf3a6330a44b354e44e5b1fd2c89b3b6
|
5
5
|
SHA512:
|
6
|
-
metadata.gz:
|
7
|
-
data.tar.gz:
|
6
|
+
metadata.gz: b43ceb51e1f0db58d96b83988a925e790b9dd5051acd203e980c0b4b3962976669f23518129c4d155619ad25f100f6d3c71cd0ec655657d5d7031370b24a4c0e
|
7
|
+
data.tar.gz: 12254a4a8c854a1da0583c5a329e229f5169f8b538023732c693b7a8ca2abc3db7a490c6914c7950946c544e5933930179499e4d1e2d42f9a2b765b9262841b5
|
@@ -0,0 +1,26 @@
|
|
1
|
+
name: github-actions-rails
|
2
|
+
|
3
|
+
on:
|
4
|
+
pull_request:
|
5
|
+
branches: ['*']
|
6
|
+
push:
|
7
|
+
branches: [master]
|
8
|
+
jobs:
|
9
|
+
test:
|
10
|
+
runs-on: ubuntu-latest
|
11
|
+
strategy:
|
12
|
+
fail-fast: false
|
13
|
+
matrix:
|
14
|
+
ruby: ['2.7', '3.0', '3.1', '3.2', '3.3', head, truffleruby, truffleruby-head]
|
15
|
+
steps:
|
16
|
+
- uses: actions/checkout@v4
|
17
|
+
- name: Set up Ruby ${{ matrix.ruby }}
|
18
|
+
uses: ruby/setup-ruby@v1
|
19
|
+
with:
|
20
|
+
ruby-version: ${{ matrix.ruby }}
|
21
|
+
bundler: default
|
22
|
+
bundler-cache: true
|
23
|
+
- name: Run tests
|
24
|
+
env:
|
25
|
+
RAILS_ENV: test
|
26
|
+
run: bundle exec rake
|
data/README.md
CHANGED
@@ -1,15 +1,12 @@
|
|
1
|
-
|
2
|
-
[](https://codeclimate.com/github/starmammoth/rack-request-object-logger)
|
1
|
+

|
3
2
|
[](https://rubygems.org/gems/rack-request-object-logger)
|
4
3
|
[](http://www.apache.org/licenses/LICENSE-2.0.html)
|
5
4
|
|
6
5
|
# rack-request-object-logger
|
7
6
|
|
8
|
-
|
7
|
+
The project is a Rack middleware to automatically log a HTTP request to a custom object.
|
9
8
|
|
10
|
-
|
11
|
-
|
12
|
-
Don't be confused with no commits in months or years. Rack middlewares rarely change. They just work.
|
9
|
+
There might be no commits in months or years. Rack middlewares rarely change.
|
13
10
|
|
14
11
|
## Install gem
|
15
12
|
|
@@ -25,39 +22,30 @@ gem 'rack-request-object-logger'
|
|
25
22
|
|
26
23
|
## Rubies Support
|
27
24
|
|
28
|
-
Ruby 2.1
|
25
|
+
Tested with Matz Ruby 2.7, 3.0, 3.1, 3.2, 3.3, head, and ruffleruby, truffleruby-head.
|
26
|
+
|
27
|
+
Should work also with jRuby, just sqlite3 adapter supports only Rails 7 and tests require a more recent Rails.
|
29
28
|
|
30
29
|
## Roadmap
|
31
30
|
|
32
31
|
While the code works flawlessly
|
33
32
|
|
34
|
-
|
33
|
+
Bug: I learned at EuRuKo 2018 that my implementation of timings is wrong and not very accurate.
|
35
34
|
|
36
35
|
## Example - logging to SQL database in Rails
|
37
36
|
|
38
37
|
generate a model for storage
|
39
38
|
|
40
39
|
```bash
|
41
|
-
$ bin/rails g model
|
42
|
-
|
43
|
-
```
|
44
|
-
|
45
|
-
add JSON serialization
|
46
|
-
|
47
|
-
```ruby
|
48
|
-
# app/models/sql/http_request.rb
|
49
|
-
class Sql::HttpRequest < ApplicationRecord
|
50
|
-
serialize :data, JSON
|
51
|
-
end
|
52
|
-
|
40
|
+
$ bin/rails g model AnalyticsRequest uid:string data:jsonb status_code:integer application_server_request_start:datetime application_server_request_end:datetime
|
53
41
|
```
|
54
42
|
|
55
43
|
add automatic logging via initializer
|
56
44
|
|
57
45
|
```ruby
|
58
|
-
# config/initializers/
|
46
|
+
# config/initializers/log_requests.rb
|
59
47
|
|
60
|
-
Rails.application.config.middleware.use(RackRequestObjectLogger,
|
48
|
+
Rails.application.config.middleware.use(RackRequestObjectLogger, AnalyticsHttpRequest)
|
61
49
|
```
|
62
50
|
|
63
51
|
# Performance
|
@@ -76,7 +64,7 @@ I've seen applications sending sensitive data in GET and even POST requests in a
|
|
76
64
|
|
77
65
|
## License & Author
|
78
66
|
|
79
|
-
Copyright 2016 Ivan Stana
|
67
|
+
Copyright 2016-2024 Ivan Stana
|
80
68
|
|
81
69
|
Licensed under the Apache License, Version 2.0 (the "License");
|
82
70
|
you may not use this file except in compliance with the License.
|
@@ -100,7 +88,7 @@ To install this gem onto your local machine, run `bundle exec rake install`. To
|
|
100
88
|
|
101
89
|
## Contributing
|
102
90
|
|
103
|
-
Bug reports and pull requests are welcome on GitHub at https://github.com/
|
91
|
+
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
92
|
|
105
93
|
## Alternatives
|
106
94
|
|
data/Rakefile
CHANGED
@@ -1,6 +1,12 @@
|
|
1
1
|
require "bundler/gem_tasks"
|
2
2
|
require "rspec/core/rake_task"
|
3
3
|
|
4
|
-
RSpec::Core::RakeTask.new(:spec)
|
4
|
+
RSpec::Core::RakeTask.new(:spec) do |t|
|
5
|
+
t.pattern = 'spec'
|
6
|
+
end
|
5
7
|
|
6
|
-
|
8
|
+
RSpec::Core::RakeTask.new(:spec_performance) do |t|
|
9
|
+
t.pattern = 'performance'
|
10
|
+
end
|
11
|
+
|
12
|
+
task :default => [:spec, :spec_performance]
|
@@ -0,0 +1,9 @@
|
|
1
|
+
require Rails.root.join('app', 'models', 'application_record').to_s
|
2
|
+
require Rails.root.join('app', 'models', 'analytics_request').to_s
|
3
|
+
|
4
|
+
Rails.configuration.before_initialize do
|
5
|
+
Rails.application.config.middleware.use(
|
6
|
+
RackRequestObjectLogger,
|
7
|
+
::AnalyticsRequest
|
8
|
+
)
|
9
|
+
end
|
@@ -0,0 +1,14 @@
|
|
1
|
+
class CreateAnalyticsRequests < ActiveRecord::Migration[7.2]
|
2
|
+
def change
|
3
|
+
create_table :analytics_requests, id: :uuid do |t|
|
4
|
+
t.text :uid
|
5
|
+
t.json :data
|
6
|
+
t.integer :status_code
|
7
|
+
t.datetime :application_server_request_start
|
8
|
+
t.datetime :application_server_request_end
|
9
|
+
t.references :requestable, polymorphic: true, null: true, type: :uuid, index: true
|
10
|
+
|
11
|
+
t.timestamps
|
12
|
+
end
|
13
|
+
end
|
14
|
+
end
|
@@ -17,8 +17,7 @@ class RackRequestObjectLogger
|
|
17
17
|
logger_object = @model.new
|
18
18
|
logger_object.application_server_request_start = start_time
|
19
19
|
logger_object.application_server_request_end = end_time
|
20
|
-
|
21
|
-
logger_object.data = request.env.select do |header, value|
|
20
|
+
logger_object.data = env.select do |header, value|
|
22
21
|
# don't bother with values other than a string
|
23
22
|
next if !value.is_a?(String)
|
24
23
|
# https://tools.ietf.org/html/rfc3875 CGI 1.1 spec
|
@@ -38,7 +37,7 @@ class RackRequestObjectLogger
|
|
38
37
|
].include?(header) || ['HTTP', 'HTTPS'].include?(header) || header =~ /\AHTTP_\w+\z/ ||
|
39
38
|
['REQUEST_URI', 'ORIGINAL_FULLPATH', 'ORIGINAL_SCRIPT_NAME'].include?(header)
|
40
39
|
end
|
41
|
-
logger_object.uid =
|
40
|
+
logger_object.uid = env['action_dispatch.request_id'] || SecureRandom.uuid
|
42
41
|
logger_object.status_code = app_result.first
|
43
42
|
logger_object.save
|
44
43
|
app_result
|
@@ -11,25 +11,31 @@ Gem::Specification.new do |spec|
|
|
11
11
|
spec.authors = ["Ivan Stana"]
|
12
12
|
spec.email = ["ronon@myrtana.sk"]
|
13
13
|
|
14
|
-
spec.summary = %q{
|
15
|
-
spec.description = %q{
|
16
|
-
spec.homepage = "https://github.com/
|
14
|
+
spec.summary = %q{The project is a Rack middleware to automatically log a HTTP request to a custom object.}
|
15
|
+
spec.description = %q{The project is a Rack middleware to automatically log a HTTP request to a custom object.}
|
16
|
+
spec.homepage = "https://github.com/istana/rack-request-object-logger"
|
17
17
|
spec.license = "Apache-2.0"
|
18
18
|
|
19
19
|
spec.files = `git ls-files -z`.split("\x0").reject do |f|
|
20
|
-
f.match(%r{^(test|spec|features)/})
|
20
|
+
f.match(%r{^(test|spec|features|performance)/})
|
21
21
|
end
|
22
|
-
spec.bindir = "exe"
|
23
|
-
spec.executables = spec.files.grep(%r{^exe/}) { |f| File.basename(f) }
|
24
22
|
spec.require_paths = ["lib"]
|
25
23
|
|
26
|
-
spec.
|
27
|
-
|
28
|
-
|
29
|
-
|
24
|
+
spec.metadata = {
|
25
|
+
"bug_tracker_uri" => "https://github.com/istana/rack-request-object-logger/issues",
|
26
|
+
"homepage_uri" => "https://github.com/istana/rack-request-object-logger",
|
27
|
+
"source_code_uri" => "https://github.com/istana/rack-request-object-logger",
|
28
|
+
}
|
29
|
+
|
30
|
+
spec.add_dependency "rack", "> 0", "< 4.0"
|
31
|
+
spec.add_development_dependency "bundler", "~> 2.0"
|
32
|
+
spec.add_development_dependency "rake", "~> 13"
|
33
|
+
spec.add_development_dependency "rspec", "~> 3.13"
|
30
34
|
spec.add_development_dependency "rspec-benchmark", "~> 0"
|
31
35
|
spec.add_development_dependency "pry", "~> 0"
|
32
|
-
spec.add_development_dependency "activerecord", '>=
|
33
|
-
spec.add_development_dependency "sqlite3", "
|
34
|
-
spec.add_development_dependency "activerecord-jdbcsqlite3-adapter", "~> 1.3" if RUBY_PLATFORM == 'java'
|
36
|
+
spec.add_development_dependency "activerecord", '>= 6.0', "< 8.0"
|
37
|
+
spec.add_development_dependency "sqlite3", "<= 2.1" unless RUBY_PLATFORM == "java"
|
35
38
|
end
|
39
|
+
|
40
|
+
|
41
|
+
|
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: 4.0.0
|
5
5
|
platform: ruby
|
6
6
|
authors:
|
7
7
|
- Ivan Stana
|
8
|
-
autorequire:
|
9
|
-
bindir:
|
8
|
+
autorequire:
|
9
|
+
bindir: bin
|
10
10
|
cert_chain: []
|
11
|
-
date:
|
11
|
+
date: 2024-09-18 00:00:00.000000000 Z
|
12
12
|
dependencies:
|
13
13
|
- !ruby/object:Gem::Dependency
|
14
14
|
name: rack
|
@@ -19,7 +19,7 @@ dependencies:
|
|
19
19
|
version: '0'
|
20
20
|
- - "<"
|
21
21
|
- !ruby/object:Gem::Version
|
22
|
-
version: '
|
22
|
+
version: '4.0'
|
23
23
|
type: :runtime
|
24
24
|
prerelease: false
|
25
25
|
version_requirements: !ruby/object:Gem::Requirement
|
@@ -29,49 +29,49 @@ dependencies:
|
|
29
29
|
version: '0'
|
30
30
|
- - "<"
|
31
31
|
- !ruby/object:Gem::Version
|
32
|
-
version: '
|
32
|
+
version: '4.0'
|
33
33
|
- !ruby/object:Gem::Dependency
|
34
34
|
name: bundler
|
35
35
|
requirement: !ruby/object:Gem::Requirement
|
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: '
|
53
|
+
version: '13'
|
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: '
|
60
|
+
version: '13'
|
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.13'
|
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.13'
|
75
75
|
- !ruby/object:Gem::Dependency
|
76
76
|
name: rspec-benchmark
|
77
77
|
requirement: !ruby/object:Gem::Requirement
|
@@ -106,45 +106,45 @@ 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: '8.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: '8.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: '2.1'
|
130
130
|
type: :development
|
131
131
|
prerelease: false
|
132
132
|
version_requirements: !ruby/object:Gem::Requirement
|
133
133
|
requirements:
|
134
|
-
- - "
|
134
|
+
- - "<="
|
135
135
|
- !ruby/object:Gem::Version
|
136
|
-
version: '1
|
137
|
-
description:
|
138
|
-
|
136
|
+
version: '2.1'
|
137
|
+
description: The project is a Rack middleware to automatically log a HTTP request
|
138
|
+
to a custom object.
|
139
139
|
email:
|
140
140
|
- ronon@myrtana.sk
|
141
141
|
executables: []
|
142
142
|
extensions: []
|
143
143
|
extra_rdoc_files: []
|
144
144
|
files:
|
145
|
+
- ".github/workflows/ruby.yml"
|
145
146
|
- ".gitignore"
|
146
147
|
- ".rspec"
|
147
|
-
- ".travis.yml"
|
148
148
|
- CODE_OF_CONDUCT.md
|
149
149
|
- Gemfile
|
150
150
|
- LICENSE
|
@@ -152,17 +152,20 @@ files:
|
|
152
152
|
- Rakefile
|
153
153
|
- bin/console
|
154
154
|
- bin/setup
|
155
|
+
- examples/rails7/config/initializers/log_http_request.rb
|
156
|
+
- examples/rails7/db/migrate/20240917151639_create_analytics_requests.rb
|
157
|
+
- examples/rails7/models/analytics_request.rb
|
155
158
|
- lib/rack-request-object-logger.rb
|
156
159
|
- lib/rack-request-object-logger/version.rb
|
157
|
-
- performance/active_record_model_spec.rb
|
158
|
-
- performance/in_memory_model_spec.rb
|
159
|
-
- performance/performance_helper.rb
|
160
160
|
- rack-request-object-logger.gemspec
|
161
|
-
homepage: https://github.com/
|
161
|
+
homepage: https://github.com/istana/rack-request-object-logger
|
162
162
|
licenses:
|
163
163
|
- Apache-2.0
|
164
|
-
metadata:
|
165
|
-
|
164
|
+
metadata:
|
165
|
+
bug_tracker_uri: https://github.com/istana/rack-request-object-logger/issues
|
166
|
+
homepage_uri: https://github.com/istana/rack-request-object-logger
|
167
|
+
source_code_uri: https://github.com/istana/rack-request-object-logger
|
168
|
+
post_install_message:
|
166
169
|
rdoc_options: []
|
167
170
|
require_paths:
|
168
171
|
- lib
|
@@ -177,9 +180,9 @@ required_rubygems_version: !ruby/object:Gem::Requirement
|
|
177
180
|
- !ruby/object:Gem::Version
|
178
181
|
version: '0'
|
179
182
|
requirements: []
|
180
|
-
|
181
|
-
|
182
|
-
signing_key:
|
183
|
+
rubygems_version: 3.5.16
|
184
|
+
signing_key:
|
183
185
|
specification_version: 4
|
184
|
-
summary:
|
186
|
+
summary: The project is a Rack middleware to automatically log a HTTP request to a
|
187
|
+
custom object.
|
185
188
|
test_files: []
|
data/.travis.yml
DELETED
@@ -1,15 +0,0 @@
|
|
1
|
-
sudo: false
|
2
|
-
language: ruby
|
3
|
-
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
|
9
|
-
cache: bundler
|
10
|
-
matrix:
|
11
|
-
include:
|
12
|
-
- rvm: ruby-head
|
13
|
-
allow_failures:
|
14
|
-
- rvm: ruby-head
|
15
|
-
fast_finish: true
|
@@ -1,41 +0,0 @@
|
|
1
|
-
# frozen_string_literal: true
|
2
|
-
require_relative 'performance_helper'
|
3
|
-
require_relative '../spec/spec_data'
|
4
|
-
require 'active_record'
|
5
|
-
|
6
|
-
RSpec.describe "Performance testing with an ActiveRecord class and SQLite3 database", performance: true do
|
7
|
-
include RSpec::Benchmark::Matchers
|
8
|
-
include_context 'spec_data'
|
9
|
-
|
10
|
-
class RequestActiveRecordLog < ActiveRecord::Base
|
11
|
-
serialize :headers, JSON
|
12
|
-
end
|
13
|
-
|
14
|
-
class CreateRequestActiveRecordLog < ActiveRecord::Migration[4.2]
|
15
|
-
def change
|
16
|
-
create_table :request_active_record_logs do |t|
|
17
|
-
t.integer :uid
|
18
|
-
t.text :data
|
19
|
-
t.time :application_server_request_start
|
20
|
-
t.time :application_server_request_end
|
21
|
-
end
|
22
|
-
end
|
23
|
-
end
|
24
|
-
|
25
|
-
let(:app) { proc{ [200, {}, ['Hello, world.']] } }
|
26
|
-
let(:stack) { RackRequestObjectLogger.new(app, RequestActiveRecordLog) }
|
27
|
-
let(:request) { Rack::MockRequest.new(stack) }
|
28
|
-
|
29
|
-
after { File.unlink 'active_record_performance.sqlite3' }
|
30
|
-
|
31
|
-
it 'much fast. wow' do
|
32
|
-
set_headers(rails5_puma_headers)
|
33
|
-
|
34
|
-
ActiveRecord::Base.establish_connection(
|
35
|
-
adapter: 'sqlite3',
|
36
|
-
database: 'active_record_performance.sqlite3'
|
37
|
-
)
|
38
|
-
CreateRequestActiveRecordLog.migrate(:up)
|
39
|
-
expect { request.get('http://localhost:4000/doge') }.to perform_at_least(500).ips
|
40
|
-
end
|
41
|
-
end
|
@@ -1,20 +0,0 @@
|
|
1
|
-
# frozen_string_literal: true
|
2
|
-
require_relative 'performance_helper'
|
3
|
-
require_relative '../spec/spec_data'
|
4
|
-
|
5
|
-
RSpec.describe "Performance testing with a dummy class", performance: true do
|
6
|
-
include RSpec::Benchmark::Matchers
|
7
|
-
include_context 'spec_data'
|
8
|
-
|
9
|
-
let(:app) { proc{ [200, {}, ['Hello, world.']] } }
|
10
|
-
let(:stack) { RackRequestObjectLogger.new(app, RequestDummyLog) }
|
11
|
-
let(:request) { Rack::MockRequest.new(stack) }
|
12
|
-
|
13
|
-
let(:logger_object) { RequestDummyLog.new }
|
14
|
-
before { allow(RequestDummyLog).to receive(:new).and_return(logger_object) }
|
15
|
-
|
16
|
-
it 'much fast. wow' do
|
17
|
-
set_headers(rails5_puma_headers)
|
18
|
-
expect { request.get('http://localhost:4000/doge') }.to perform_at_least(5000).ips
|
19
|
-
end
|
20
|
-
end
|