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 CHANGED
@@ -1,7 +1,7 @@
1
1
  ---
2
2
  SHA256:
3
- metadata.gz: 73dcaa40fd7df83e967942ad22721fc066a08f624b694363edfffbd191765bbc
4
- data.tar.gz: dc938ffbf89617b146af39061fcebe5a85d0d428f24947b1d652ded64e99fbcb
3
+ metadata.gz: b8c34317cf334351116255b3598e642eae81b92ff4495a0d4bbaa0c1fe93e6df
4
+ data.tar.gz: 9a4c62261212c2d78aa2fe9d4ccc8512712b78b3331c6e14566a395ac787162a
5
5
  SHA512:
6
- metadata.gz: c78f1ae041fc130039eee769bb00f1e936fc257458fc156ecbeca7b2ec4db8e2e7c25effbbd3c8476486f913be722087005b7ea6b959355041caefe9e4a482c7
7
- data.tar.gz: 6ba7ea3b302bea3a5d8bca08e0d1d2b62f065b73a238a7f21f4044dbcb1ce40ba2b92fcc1cc8fd06f8cb5e5fa2a503cd242d050227668927827c215d85b109ef
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/**/*.rb']
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
- puts
140
- errors.each do |error|
141
- RailsResponseDumper.print_color(
142
- "#{error[:dumper_location]} #{error[:name]} received #{error[:exception]}\n",
143
- :red
144
- )
145
- error[:exception].full_message(highlight: RailsResponseDumper::COLORIZE).lines do |line|
146
- RailsResponseDumper.print_color(line, :cyan)
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(false)
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: 6.2.0
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: 2023-05-31 00:00:00.000000000 Z
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.7
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: []