rails-response-dumper 5.0.0 → 5.2.0

Sign up to get free protection for your applications and to get access to all the features.
checksums.yaml CHANGED
@@ -1,7 +1,7 @@
1
1
  ---
2
2
  SHA256:
3
- metadata.gz: bfe1595c9662696463fa4e649f35a69a186c905a76938b25fea441626b83aa71
4
- data.tar.gz: 77318d3db4e2be51449859b86b13b384b9215307a51e5d70b672c42fe887c4b8
3
+ metadata.gz: 06cd448e735f58a98621946c8469f104ed6d732a12d7434e5e35a702b95f30f0
4
+ data.tar.gz: e77dcfbeca89d6f0379a4e52e31fea8bd6229eb83546dabff2af014810c7be34
5
5
  SHA512:
6
- metadata.gz: f8c59e64e7a1d88e6475f3b8705eed1e667cbf1297ac110c7cf706f590b67aecc9cd2e18ad214eed484a70fe6ee13fdfd906445e76d667ed44de4916f5a00948
7
- data.tar.gz: 5e5bb5ea43bbecdc5eca986b087fdf87e36efd3208b679df4bfec35cc02a85b963a510dc142043b27c0167c7a348f071c9aab1357441291d1a2328ef03ea74eb
6
+ metadata.gz: fb2761d033cb2ddf080f79417139b6515e5586e41511e0c030dd346577f7df41bb80281cfc837683f9cdf2c5f24ac4c4fa30b818ce3d5e83dc9fae2ae057d350
7
+ data.tar.gz: 3534eb64a93627900862d6bd9d58b878b865b7d384b42b56f140301840aa72134d120c66a84c6a7d355a5d831bc9471a3c99eabea086681a4bee49e176f3ffff
@@ -8,5 +8,5 @@ require 'rails_response_dumper'
8
8
  abort 'The Rails environment is running in production mode!' if Rails.env.production?
9
9
  ActiveRecord::Migration.maintain_test_schema! if defined?(ActiveRecord::Base)
10
10
 
11
- runner = RailsResponseDumper::Runner.new
11
+ runner = RailsResponseDumper::Runner.new(RailsResponseDumper.parse_options!)
12
12
  runner.run_dumps
@@ -0,0 +1,23 @@
1
+ # frozen_string_literal: true
2
+
3
+ module RailsResponseDumper
4
+ COLORS = {
5
+ cyan: 36,
6
+ green: 32,
7
+ red: 31
8
+ }.freeze
9
+
10
+ COLORIZE = $stdout.tty?
11
+
12
+ def self.print_color(text, color)
13
+ if COLORIZE
14
+ print colorize(text, color)
15
+ else
16
+ print text
17
+ end
18
+ end
19
+
20
+ def self.colorize(text, color)
21
+ "\e[#{COLORS[color]}m#{text}\e[0m"
22
+ end
23
+ end
@@ -0,0 +1,17 @@
1
+ # frozen_string_literal: true
2
+
3
+ require 'optparse'
4
+
5
+ module RailsResponseDumper
6
+ def self.parse_options!
7
+ options = {}
8
+
9
+ OptionParser.new do |opts|
10
+ opts.on('--fail-fast', 'Abort the run after first failure.') do |v|
11
+ options[:fail_fast] = v
12
+ end
13
+ end.parse!
14
+
15
+ options.freeze
16
+ end
17
+ end
@@ -1,9 +1,16 @@
1
1
  # frozen_string_literal: true
2
2
 
3
3
  require_relative 'defined'
4
+ require_relative 'colorize'
4
5
 
5
6
  module RailsResponseDumper
6
7
  class Runner
8
+ attr_reader :options
9
+
10
+ def initialize(options)
11
+ @options = options
12
+ end
13
+
7
14
  def run_dumps
8
15
  dumps_dir = Rails.root.join('dumps')
9
16
  FileUtils.rm_rf dumps_dir
@@ -54,10 +61,12 @@ module RailsResponseDumper
54
61
  dump = {
55
62
  request: {
56
63
  method: request.method,
57
- url: request.url
64
+ url: request.url,
65
+ body: request.body.string
58
66
  },
59
67
  response: {
60
68
  status: response.status,
69
+ status_text: response.status_message,
61
70
  headers: response.headers,
62
71
  body: response.body
63
72
  }
@@ -65,25 +74,33 @@ module RailsResponseDumper
65
74
  File.write("#{dumper_dir}/#{index}.json", JSON.pretty_generate(dump))
66
75
  end
67
76
 
68
- print '.'
77
+ RailsResponseDumper.print_color('.', :green)
69
78
  rescue StandardError => e
70
79
  errors << {
71
80
  dumper_location: dump_block.block.source_location.join(':'),
72
81
  name: "#{defined.name}.#{dump_block.name}",
73
- message: e.exception.message,
74
- backtrace: e.cause&.backtrace || e.exception.backtrace
82
+ exception: e
75
83
  }
76
84
 
77
- print 'F'
85
+ RailsResponseDumper.print_color('F', :red)
86
+
87
+ break if options[:fail_fast]
78
88
  end
79
89
  end
80
90
 
81
91
  puts
82
92
  return if errors.blank?
83
93
 
94
+ puts
84
95
  errors.each do |error|
85
- $stderr.print "#{error[:dumper_location]} #{error[:name]} received #{error[:message]}\n"
86
- $stderr.print "#{error[:backtrace][0]}\n\n"
96
+ RailsResponseDumper.print_color(
97
+ "#{error[:dumper_location]} #{error[:name]} received #{error[:exception]}\n",
98
+ :red
99
+ )
100
+ error[:exception].full_message(highlight: RailsResponseDumper::COLORIZE).lines do |line|
101
+ RailsResponseDumper.print_color(line, :cyan)
102
+ end
103
+ puts
87
104
  end
88
105
 
89
106
  exit(false)
@@ -1,4 +1,5 @@
1
1
  # frozen_string_literal: true
2
2
 
3
+ require_relative 'rails_response_dumper/option_parser'
3
4
  require_relative 'rails_response_dumper/runner'
4
5
  require_relative 'response_dumper'
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: 5.0.0
4
+ version: 5.2.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: 2022-12-05 00:00:00.000000000 Z
11
+ date: 2023-01-24 00:00:00.000000000 Z
12
12
  dependencies:
13
13
  - !ruby/object:Gem::Dependency
14
14
  name: rails
@@ -56,8 +56,10 @@ extra_rdoc_files: []
56
56
  files:
57
57
  - bin/rails-response-dumper
58
58
  - lib/rails_response_dumper.rb
59
+ - lib/rails_response_dumper/colorize.rb
59
60
  - lib/rails_response_dumper/defined.rb
60
61
  - lib/rails_response_dumper/dump_block.rb
62
+ - lib/rails_response_dumper/option_parser.rb
61
63
  - lib/rails_response_dumper/runner.rb
62
64
  - lib/response_dumper.rb
63
65
  homepage: https://github.com/Pioneer-Valley-Books/rails-response-dumper