rails-response-dumper 5.2.0 → 6.0.0
Sign up to get free protection for your applications and to get access to all the features.
- checksums.yaml +4 -4
- data/lib/rails_response_dumper/option_parser.rb +29 -1
- data/lib/rails_response_dumper/runner.rb +51 -8
- metadata +2 -2
checksums.yaml
CHANGED
@@ -1,7 +1,7 @@
|
|
1
1
|
---
|
2
2
|
SHA256:
|
3
|
-
metadata.gz:
|
4
|
-
data.tar.gz:
|
3
|
+
metadata.gz: 788b942da1a65cd0b19a82d33f23bba37cb4a260319f37f17c558f71d33e44b8
|
4
|
+
data.tar.gz: af367f3c8103532b4ab7f9ccfb9942b458a0b48c8a31d5cec3ce79c4a6515c5a
|
5
5
|
SHA512:
|
6
|
-
metadata.gz:
|
7
|
-
data.tar.gz:
|
6
|
+
metadata.gz: 3558c86a4f92d736449a14b5a24074759c686eb98b0ef57386412d45a081c4a184470b2dec61f527e2cb5fa34e9163fb6a0cbc72e2b043b4f05c19d0b328de06
|
7
|
+
data.tar.gz: 5998a7c43305baa14faaa4e6591aa3cc1b6fea49c4f567ad3551694011d9c6592b2a35457915790f38a5bb245a78e61f44808a38d832dcb6378986856ef38db3
|
@@ -4,14 +4,42 @@ require 'optparse'
|
|
4
4
|
|
5
5
|
module RailsResponseDumper
|
6
6
|
def self.parse_options!
|
7
|
-
options = {}
|
7
|
+
options = { 'dumps-dir' => Rails.root.join('dumps') }
|
8
8
|
|
9
9
|
OptionParser.new do |opts|
|
10
|
+
opts.banner += ' [glob]'
|
11
|
+
|
12
|
+
opts.separator ''
|
13
|
+
opts.separator 'Filtering:'
|
14
|
+
opts.separator 'Run for specific files or globs:'
|
15
|
+
opts.separator ' rails-response-dumper path/to/a_dumper.rb'
|
16
|
+
|
17
|
+
opts.separator ''
|
18
|
+
opts.separator 'Options:'
|
19
|
+
|
20
|
+
opts.on('--dumps-dir PATH', 'Output dumps to this directory.') do |v|
|
21
|
+
options['dumps-dir'] = v
|
22
|
+
end
|
23
|
+
|
10
24
|
opts.on('--fail-fast', 'Abort the run after first failure.') do |v|
|
11
25
|
options[:fail_fast] = v
|
12
26
|
end
|
27
|
+
|
28
|
+
opts.on('--verbose', 'Output dumper and dump block names.') do |v|
|
29
|
+
options[:verbose] = v
|
30
|
+
end
|
31
|
+
|
32
|
+
opts.on('--order TYPE', 'Run dumps by the specified order type.') do |v|
|
33
|
+
options[:order] = v
|
34
|
+
end
|
35
|
+
|
36
|
+
opts.on('--exclude-response-headers', 'Do not output response headers.') do |v|
|
37
|
+
options[:exclude_response_headers] = v
|
38
|
+
end
|
13
39
|
end.parse!
|
14
40
|
|
41
|
+
options[:filenames] = ARGV
|
42
|
+
|
15
43
|
options.freeze
|
16
44
|
end
|
17
45
|
end
|
@@ -12,16 +12,53 @@ module RailsResponseDumper
|
|
12
12
|
end
|
13
13
|
|
14
14
|
def run_dumps
|
15
|
-
dumps_dir =
|
16
|
-
|
15
|
+
dumps_dir = options['dumps-dir']
|
16
|
+
|
17
|
+
if options[:filenames].present?
|
18
|
+
globs = options[:filenames]
|
19
|
+
else
|
20
|
+
globs = ['dumpers/**/*.rb']
|
21
|
+
FileUtils.rm_rf dumps_dir
|
22
|
+
end
|
23
|
+
|
17
24
|
FileUtils.mkdir_p dumps_dir
|
18
25
|
|
19
|
-
|
26
|
+
globs.each do |glob|
|
27
|
+
Dir[Rails.root.join(glob)].each { |f| require f }
|
28
|
+
end
|
20
29
|
|
21
30
|
errors = []
|
22
31
|
|
23
|
-
RailsResponseDumper::Defined.dumpers.
|
24
|
-
|
32
|
+
dumper_blocks = RailsResponseDumper::Defined.dumpers.flat_map do |defined|
|
33
|
+
if options[:filenames].present?
|
34
|
+
# clear previous dumps for that file in case removed from updated dump file
|
35
|
+
FileUtils.rm_rf "#{dumps_dir}/#{defined.name.underscore}/"
|
36
|
+
end
|
37
|
+
|
38
|
+
defined.blocks.map do |dump_block|
|
39
|
+
[defined, dump_block]
|
40
|
+
end
|
41
|
+
end
|
42
|
+
|
43
|
+
if options[:order].present?
|
44
|
+
seed = if options[:order] == 'random'
|
45
|
+
Random.new_seed
|
46
|
+
else
|
47
|
+
Integer(options[:order])
|
48
|
+
end
|
49
|
+
|
50
|
+
puts "Randomized with seed #{seed}"
|
51
|
+
|
52
|
+
random = Random.new(seed)
|
53
|
+
dumper_blocks.shuffle!(random: random)
|
54
|
+
end
|
55
|
+
|
56
|
+
catch :fail_fast do
|
57
|
+
dumper_blocks.each do |(defined, dump_block)|
|
58
|
+
name = "#{defined.name}.#{dump_block.name}"
|
59
|
+
|
60
|
+
print "#{name} " if options[:verbose]
|
61
|
+
|
25
62
|
defined.reset_models!
|
26
63
|
dumper = defined.klass.new
|
27
64
|
dumper.mock_setup
|
@@ -58,6 +95,7 @@ module RailsResponseDumper
|
|
58
95
|
end
|
59
96
|
|
60
97
|
request = response.request
|
98
|
+
|
61
99
|
dump = {
|
62
100
|
request: {
|
63
101
|
method: request.method,
|
@@ -66,25 +104,30 @@ module RailsResponseDumper
|
|
66
104
|
},
|
67
105
|
response: {
|
68
106
|
status: response.status,
|
69
|
-
|
107
|
+
statusText: response.status_message,
|
70
108
|
headers: response.headers,
|
71
109
|
body: response.body
|
72
110
|
}
|
73
111
|
}
|
112
|
+
|
113
|
+
dump[:response].delete(:headers) if options[:exclude_response_headers]
|
114
|
+
|
74
115
|
File.write("#{dumper_dir}/#{index}.json", JSON.pretty_generate(dump))
|
75
116
|
end
|
76
117
|
|
77
118
|
RailsResponseDumper.print_color('.', :green)
|
119
|
+
print("\n") if options[:verbose]
|
78
120
|
rescue StandardError => e
|
79
121
|
errors << {
|
80
122
|
dumper_location: dump_block.block.source_location.join(':'),
|
81
|
-
name:
|
123
|
+
name: name,
|
82
124
|
exception: e
|
83
125
|
}
|
84
126
|
|
85
127
|
RailsResponseDumper.print_color('F', :red)
|
128
|
+
print("\n") if options[:verbose]
|
86
129
|
|
87
|
-
|
130
|
+
throw :fail_fast if options[:fail_fast]
|
88
131
|
end
|
89
132
|
end
|
90
133
|
|
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: 6.0.0
|
5
5
|
platform: ruby
|
6
6
|
authors:
|
7
7
|
- Pioneer Valley Books
|
8
8
|
autorequire:
|
9
9
|
bindir: bin
|
10
10
|
cert_chain: []
|
11
|
-
date: 2023-
|
11
|
+
date: 2023-04-27 00:00:00.000000000 Z
|
12
12
|
dependencies:
|
13
13
|
- !ruby/object:Gem::Dependency
|
14
14
|
name: rails
|