rails-response-dumper 6.2.0 → 7.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 +4 -4
- data/lib/rails_response_dumper/option_parser.rb +4 -0
- data/lib/rails_response_dumper/runner.rb +34 -15
- metadata +7 -7
checksums.yaml
CHANGED
@@ -1,7 +1,7 @@
|
|
1
1
|
---
|
2
2
|
SHA256:
|
3
|
-
metadata.gz:
|
4
|
-
data.tar.gz:
|
3
|
+
metadata.gz: b8c34317cf334351116255b3598e642eae81b92ff4495a0d4bbaa0c1fe93e6df
|
4
|
+
data.tar.gz: 9a4c62261212c2d78aa2fe9d4ccc8512712b78b3331c6e14566a395ac787162a
|
5
5
|
SHA512:
|
6
|
-
metadata.gz:
|
7
|
-
data.tar.gz:
|
6
|
+
metadata.gz: f9fcdde55d4e5d59a6949a9530c03db0b41df112bdc8e5b01ca1b55b665d077605910bb0ea23fa41da48c8aa185e6ff78d3f561233ed5cbb064b59af7c51d668
|
7
|
+
data.tar.gz: 3359004f505f4c2f5ba83d993a94f707ff7ac482e35b7ef65d97e0e6d85a491ef9b37908cbc5356e5273aff14a4e40bb5f7f58c5f03d85eb390a9d4d7ce252cc
|
@@ -29,6 +29,10 @@ module RailsResponseDumper
|
|
29
29
|
options[:verbose] = v
|
30
30
|
end
|
31
31
|
|
32
|
+
opts.on('--profile', 'Enable profiling of dumps and list the slowest.') do |v|
|
33
|
+
options[:profile] = v
|
34
|
+
end
|
35
|
+
|
32
36
|
opts.on('--order TYPE', 'Run dumps by the specified order type.') do |v|
|
33
37
|
options[:order] = v
|
34
38
|
end
|
@@ -17,7 +17,7 @@ module RailsResponseDumper
|
|
17
17
|
if options[:filenames].present?
|
18
18
|
globs = options[:filenames]
|
19
19
|
else
|
20
|
-
globs = ['dumpers
|
20
|
+
globs = ['dumpers/**/*_dumper.rb']
|
21
21
|
FileUtils.rm_rf dumps_dir
|
22
22
|
end
|
23
23
|
|
@@ -53,6 +53,8 @@ module RailsResponseDumper
|
|
53
53
|
dumper_blocks.shuffle!(random: random)
|
54
54
|
end
|
55
55
|
|
56
|
+
profile = {}
|
57
|
+
|
56
58
|
catch :fail_fast do
|
57
59
|
dumper_blocks.each do |(defined, dump_block)|
|
58
60
|
name = "#{defined.name}.#{dump_block.name}"
|
@@ -64,12 +66,14 @@ module RailsResponseDumper
|
|
64
66
|
dumper.mock_setup
|
65
67
|
begin
|
66
68
|
rollback_after do
|
69
|
+
t0 = Time.now
|
67
70
|
dumper.instance_eval(&defined.before_block) if defined.before_block
|
68
71
|
begin
|
69
72
|
dumper.instance_eval(&dump_block.block)
|
70
73
|
ensure
|
71
74
|
dumper.instance_eval(&defined.after_block) if defined.after_block
|
72
75
|
end
|
76
|
+
profile[name] = Time.now - t0
|
73
77
|
end
|
74
78
|
ensure
|
75
79
|
dumper.mock_teardown
|
@@ -99,14 +103,12 @@ module RailsResponseDumper
|
|
99
103
|
dump = {
|
100
104
|
request: {
|
101
105
|
method: request.method,
|
102
|
-
url: request.url
|
103
|
-
body: request.body.string
|
106
|
+
url: request.url
|
104
107
|
},
|
105
108
|
response: {
|
106
109
|
status: response.status,
|
107
110
|
statusText: response.status_message,
|
108
|
-
headers: response.headers
|
109
|
-
body: response.body
|
111
|
+
headers: response.headers
|
110
112
|
}
|
111
113
|
}
|
112
114
|
|
@@ -115,6 +117,8 @@ module RailsResponseDumper
|
|
115
117
|
dump[:timestamp] = timestamp.iso8601 unless options[:exclude_timestamp]
|
116
118
|
|
117
119
|
File.write("#{dumper_dir}/#{index}.json", JSON.pretty_generate(dump))
|
120
|
+
File.write("#{dumper_dir}/#{index}.request_body", request.body.string, mode: 'wb')
|
121
|
+
File.write("#{dumper_dir}/#{index}.response_body", response.body, mode: 'wb')
|
118
122
|
end
|
119
123
|
|
120
124
|
RailsResponseDumper.print_color('.', :green)
|
@@ -134,21 +138,36 @@ module RailsResponseDumper
|
|
134
138
|
end
|
135
139
|
|
136
140
|
puts
|
137
|
-
return if errors.blank?
|
138
141
|
|
139
|
-
|
140
|
-
|
141
|
-
|
142
|
-
|
143
|
-
|
144
|
-
|
145
|
-
|
146
|
-
|
142
|
+
unless errors.blank?
|
143
|
+
puts
|
144
|
+
|
145
|
+
errors.each do |error|
|
146
|
+
RailsResponseDumper.print_color(
|
147
|
+
"#{error[:dumper_location]} #{error[:name]} received #{error[:exception]}\n",
|
148
|
+
:red
|
149
|
+
)
|
150
|
+
error[:exception].full_message(highlight: RailsResponseDumper::COLORIZE).lines do |line|
|
151
|
+
RailsResponseDumper.print_color(line, :cyan)
|
152
|
+
end
|
153
|
+
puts
|
147
154
|
end
|
155
|
+
end
|
156
|
+
|
157
|
+
if options.include?(:profile)
|
158
|
+
puts
|
159
|
+
|
160
|
+
# Sort in descending order to obtain the 10 slowest dumps.
|
161
|
+
timings = profile.to_a.sort_by { |(_key, value)| -value }
|
162
|
+
timings.first(10).each do |(dump, time)|
|
163
|
+
formatted_time = format('%.2f', time)
|
164
|
+
puts "#{dump} #{formatted_time} s"
|
165
|
+
end
|
166
|
+
|
148
167
|
puts
|
149
168
|
end
|
150
169
|
|
151
|
-
exit(
|
170
|
+
exit(errors.blank?)
|
152
171
|
end
|
153
172
|
|
154
173
|
private
|
metadata
CHANGED
@@ -1,14 +1,14 @@
|
|
1
1
|
--- !ruby/object:Gem::Specification
|
2
2
|
name: rails-response-dumper
|
3
3
|
version: !ruby/object:Gem::Version
|
4
|
-
version:
|
4
|
+
version: 7.0.0
|
5
5
|
platform: ruby
|
6
6
|
authors:
|
7
7
|
- Pioneer Valley Books
|
8
|
-
autorequire:
|
8
|
+
autorequire:
|
9
9
|
bindir: bin
|
10
10
|
cert_chain: []
|
11
|
-
date:
|
11
|
+
date: 2024-02-29 00:00:00.000000000 Z
|
12
12
|
dependencies:
|
13
13
|
- !ruby/object:Gem::Dependency
|
14
14
|
name: rails
|
@@ -48,7 +48,7 @@ description: |
|
|
48
48
|
Rails Response Dumper is a library and command line tool to dump HTTP
|
49
49
|
responses from a Rails application to the file system. These responses can
|
50
50
|
then be consumed by other tools for testing and verification purposes.
|
51
|
-
email:
|
51
|
+
email:
|
52
52
|
executables:
|
53
53
|
- rails-response-dumper
|
54
54
|
extensions: []
|
@@ -67,7 +67,7 @@ licenses:
|
|
67
67
|
- MIT
|
68
68
|
metadata:
|
69
69
|
rubygems_mfa_required: 'true'
|
70
|
-
post_install_message:
|
70
|
+
post_install_message:
|
71
71
|
rdoc_options: []
|
72
72
|
require_paths:
|
73
73
|
- lib
|
@@ -82,8 +82,8 @@ required_rubygems_version: !ruby/object:Gem::Requirement
|
|
82
82
|
- !ruby/object:Gem::Version
|
83
83
|
version: '0'
|
84
84
|
requirements: []
|
85
|
-
rubygems_version: 3.3
|
86
|
-
signing_key:
|
85
|
+
rubygems_version: 3.5.3
|
86
|
+
signing_key:
|
87
87
|
specification_version: 4
|
88
88
|
summary: Dump HTTP responses from a Rails application to the file system
|
89
89
|
test_files: []
|