api_error_handler 0.2.0 → 0.2.1

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: 3630f225962137c7df9417b7a6e9654f60ee38ebb8afff7480f74e9daf02a4bc
4
- data.tar.gz: 2d644936de3e3d714fe974bb313c8eb14b51c44b2da818f12f8f0f85cd1f0ff7
3
+ metadata.gz: 18b6ef31f241b4845ddbf59be8721e55a218a84fb4d39fad730b2c6941e616fe
4
+ data.tar.gz: 9881362b337b651e73c2472996f6e4c959660bec85fe9856d7a8c54f2b4206e8
5
5
  SHA512:
6
- metadata.gz: c41e88553d9cba1cb1679cf1da2205cd8ec3148c5e706a29faf0e9405f6b59666e25da1968a959f52d81bf6982ce90157746e1475b2ee73a10abf86de897cd32
7
- data.tar.gz: eb089aed46d76d994fe642c2efebdc9f2598228d877772044069421d5fb2da992b69ce858565f22f1daf68015d1ad5dab9c329115e84584a650d52a17010324a
6
+ metadata.gz: e4c5ed604f7295e4b1e54738aafd43d3288ce98a8f93b5e18897077f4691b713b08db3db1d1cb06c988ec62aae5f51f02aa8d4bfed3ed795e89de9cf360ed2fd
7
+ data.tar.gz: 8cc44416b4ecadc12b17ab728f1ce30e067d53582fae1b2891e6a5b7a6acacab2ed12be1e33ed93250f2bdd7110e5becc76069f36698b74f8ee1571fef53c06c
data/.rubocop.yml CHANGED
@@ -1,7 +1,7 @@
1
1
  inherit_from: .rubocop_todo.yml
2
2
 
3
3
  AllCops:
4
- TargetRubyVersion: 2.3
4
+ TargetRubyVersion: 2.5
5
5
  Exclude:
6
6
  - 'vendor/**/*'
7
7
  - 'rails_*/**/*'
data/.travis.yml CHANGED
@@ -1,27 +1,36 @@
1
1
  ---
2
- sudo: false
3
2
  language: ruby
4
3
  before_install:
5
4
  - gem update --system
6
5
  - gem install bundler
6
+ install: bundle install --jobs=3 --retry=3
7
7
  cache: bundler
8
8
  branches:
9
9
  only:
10
10
  - master
11
- matrix:
11
+ jobs:
12
12
  include:
13
- - rvm: 2.3.8
14
- gemfile: ./rails_4_test_app/Gemfile
15
- script: cd rails_4_test_app && bundle exec rspec
16
- - rvm: 2.3.8
13
+ - rvm: 2.5.1
17
14
  gemfile: ./rails_5_test_app/Gemfile
18
15
  script: cd rails_5_test_app && bundle exec rspec
19
16
  - rvm: 2.5.1
20
17
  gemfile: ./rails_6_test_app/Gemfile
21
18
  script: cd rails_6_test_app && bundle exec rspec
22
- - rvm: 2.3.8
19
+ - rvm: 2.7.2
20
+ gemfile: ./rails_6_test_app/Gemfile
21
+ script: cd rails_6_test_app && bundle exec rspec
22
+ - rvm: 3.0.0
23
+ gemfile: ./rails_6_test_app/Gemfile
24
+ script: cd rails_6_test_app && bundle exec rspec
25
+ - rvm: 2.7.2
26
+ gemfile: Gemfile
27
+ script: bundle exec rubocop
28
+ - rvm: 2.7.2
29
+ gemfile: Gemfile
30
+ script: bundle exec rspec
31
+ - rvm: 3.0.0
23
32
  gemfile: Gemfile
24
33
  script: bundle exec rubocop
25
- - rvm: 2.3.8
34
+ - rvm: 3.0.0
26
35
  gemfile: Gemfile
27
36
  script: bundle exec rspec
data/README.md CHANGED
@@ -208,7 +208,7 @@ you're using Rails with ActiveRecord, by default this includes:
208
208
  "ActionController::BadRequest" => :bad_request,
209
209
  "ActionController::ParameterMissing" => :bad_request,
210
210
  "Rack::QueryParser::ParameterTypeError" => :bad_request,
211
- "Rack::QueryParser::InvalidParameterError" => :bad_request
211
+ "Rack::QueryParser::InvalidParameterError" => :bad_request,
212
212
  "ActiveRecord::RecordNotFound" => :not_found,
213
213
  "ActiveRecord::StaleObjectError" => :conflict,
214
214
  "ActiveRecord::RecordInvalid" => :unprocessable_entity,
@@ -9,7 +9,7 @@ Gem::Specification.new do |spec|
9
9
  spec.version = ApiErrorHandler::VERSION
10
10
  spec.authors = ["James Stonehill"]
11
11
  spec.email = ["james.stonehill@gmail.com"]
12
- spec.required_ruby_version = "~> 2.3"
12
+ spec.required_ruby_version = ">= 2.5"
13
13
 
14
14
  spec.summary = <<~SUMMARY
15
15
  A gem that helps you easily handle exceptions in your Rails API and return
@@ -35,12 +35,13 @@ Gem::Specification.new do |spec|
35
35
  spec.executables = spec.files.grep(%r{^exe/}) { |f| File.basename(f) }
36
36
  spec.require_paths = ["lib"]
37
37
 
38
- spec.add_dependency "activesupport", ">= 4.0"
39
- spec.add_dependency "actionpack", ">= 4.0"
38
+ spec.add_dependency "activesupport", ">= 5.0"
39
+ spec.add_dependency "actionpack", ">= 5.0"
40
40
  spec.add_dependency "rack", ">= 1.0"
41
41
 
42
42
  spec.add_development_dependency "bundler", "~> 2.0"
43
- spec.add_development_dependency "rake", "~> 10.0"
44
- spec.add_development_dependency "rspec-rails", "~> 3.0"
45
- spec.add_development_dependency "rubocop", "~> 0.74.0"
43
+ spec.add_development_dependency "rake", "~> 13.0"
44
+ spec.add_development_dependency "rspec-rails", "~> 3.9"
45
+ spec.add_development_dependency "rubocop", "~> 0.80.0"
46
+ spec.add_development_dependency "pry-byebug"
46
47
  end
@@ -4,6 +4,6 @@ require "active_support/lazy_load_hooks"
4
4
  require "action_controller"
5
5
 
6
6
  ActiveSupport.on_load :action_controller do
7
- ::ActionController::Base.send :extend, ApiErrorHandler
8
- ::ActionController::API.send :extend, ApiErrorHandler
7
+ ::ActionController::Base.extend ApiErrorHandler
8
+ ::ActionController::API.extend ApiErrorHandler
9
9
  end
@@ -19,11 +19,16 @@ module ApiErrorHandler
19
19
 
20
20
  context = error_id ? { error_id: error_id } : {}
21
21
  Honeybadger.notify(error, context: context)
22
- elsif @strategy == :raven || @strategy == :sentry
22
+ elsif @strategy == :raven
23
23
  raise_dependency_error(missing_constant: "Raven") unless defined?(Raven)
24
24
 
25
25
  extra = error_id ? { error_id: error_id } : {}
26
26
  Raven.capture_exception(error, extra: extra)
27
+ elsif @strategy == :sentry
28
+ raise_dependency_error(missing_constant: "Sentry") unless defined?(Sentry)
29
+
30
+ extra = error_id ? { error_id: error_id } : {}
31
+ Sentry.capture_exception(error, extra: extra)
27
32
  else
28
33
  raise(
29
34
  InvalidOptionError,
@@ -1,5 +1,5 @@
1
1
  # frozen_string_literal: true
2
2
 
3
3
  module ApiErrorHandler
4
- VERSION = "0.2.0"
4
+ VERSION = "0.2.1"
5
5
  end
@@ -4,7 +4,7 @@ require_relative "./api_error_handler/version"
4
4
  require_relative "./api_error_handler/action_controller"
5
5
  require_relative "./api_error_handler/error_id_generator"
6
6
  require_relative "./api_error_handler/error_reporter"
7
- Dir[File.join(__dir__, "api_error_handler", "serializers", "*.rb")].each do |file|
7
+ Dir[File.join(__dir__, "api_error_handler", "serializers", "*.rb")].sort.each do |file|
8
8
  require file
9
9
  end
10
10
 
@@ -33,25 +33,23 @@ module ApiErrorHandler
33
33
  serializer_class = options[:serializer] || SERIALIZERS_BY_FORMAT.fetch(format)
34
34
  content_type = options[:content_type] || CONTENT_TYPE_BY_FORMAT[format]
35
35
  rescue_from StandardError do |error|
36
- begin
37
- status = ActionDispatch::ExceptionWrapper.rescue_responses[error.class.to_s]
38
-
39
- error_id = ErrorIdGenerator.run(options[:error_id])
40
- error_reporter.report(error, error_id: error_id)
41
-
42
- serializer = serializer_class.new(error, status)
43
- response_body = serializer.serialize(
44
- serializer_options.merge(error_id: error_id)
45
- )
46
-
47
- render(
48
- serializer.render_format => response_body,
49
- content_type: content_type,
50
- status: status
51
- )
52
- rescue
53
- raise error
54
- end
36
+ status = ActionDispatch::ExceptionWrapper.rescue_responses[error.class.to_s]
37
+
38
+ error_id = ErrorIdGenerator.run(options[:error_id])
39
+ error_reporter.report(error, error_id: error_id)
40
+
41
+ serializer = serializer_class.new(error, status)
42
+ response_body = serializer.serialize(
43
+ serializer_options.merge(error_id: error_id)
44
+ )
45
+
46
+ render(
47
+ serializer.render_format => response_body,
48
+ content_type: content_type,
49
+ status: status
50
+ )
51
+ rescue
52
+ raise error
55
53
  end
56
54
  end
57
55
  end
metadata CHANGED
@@ -1,14 +1,14 @@
1
1
  --- !ruby/object:Gem::Specification
2
2
  name: api_error_handler
3
3
  version: !ruby/object:Gem::Version
4
- version: 0.2.0
4
+ version: 0.2.1
5
5
  platform: ruby
6
6
  authors:
7
7
  - James Stonehill
8
8
  autorequire:
9
9
  bindir: exe
10
10
  cert_chain: []
11
- date: 2019-08-26 00:00:00.000000000 Z
11
+ date: 2022-04-12 00:00:00.000000000 Z
12
12
  dependencies:
13
13
  - !ruby/object:Gem::Dependency
14
14
  name: activesupport
@@ -16,28 +16,28 @@ dependencies:
16
16
  requirements:
17
17
  - - ">="
18
18
  - !ruby/object:Gem::Version
19
- version: '4.0'
19
+ version: '5.0'
20
20
  type: :runtime
21
21
  prerelease: false
22
22
  version_requirements: !ruby/object:Gem::Requirement
23
23
  requirements:
24
24
  - - ">="
25
25
  - !ruby/object:Gem::Version
26
- version: '4.0'
26
+ version: '5.0'
27
27
  - !ruby/object:Gem::Dependency
28
28
  name: actionpack
29
29
  requirement: !ruby/object:Gem::Requirement
30
30
  requirements:
31
31
  - - ">="
32
32
  - !ruby/object:Gem::Version
33
- version: '4.0'
33
+ version: '5.0'
34
34
  type: :runtime
35
35
  prerelease: false
36
36
  version_requirements: !ruby/object:Gem::Requirement
37
37
  requirements:
38
38
  - - ">="
39
39
  - !ruby/object:Gem::Version
40
- version: '4.0'
40
+ version: '5.0'
41
41
  - !ruby/object:Gem::Dependency
42
42
  name: rack
43
43
  requirement: !ruby/object:Gem::Requirement
@@ -72,42 +72,56 @@ dependencies:
72
72
  requirements:
73
73
  - - "~>"
74
74
  - !ruby/object:Gem::Version
75
- version: '10.0'
75
+ version: '13.0'
76
76
  type: :development
77
77
  prerelease: false
78
78
  version_requirements: !ruby/object:Gem::Requirement
79
79
  requirements:
80
80
  - - "~>"
81
81
  - !ruby/object:Gem::Version
82
- version: '10.0'
82
+ version: '13.0'
83
83
  - !ruby/object:Gem::Dependency
84
84
  name: rspec-rails
85
85
  requirement: !ruby/object:Gem::Requirement
86
86
  requirements:
87
87
  - - "~>"
88
88
  - !ruby/object:Gem::Version
89
- version: '3.0'
89
+ version: '3.9'
90
90
  type: :development
91
91
  prerelease: false
92
92
  version_requirements: !ruby/object:Gem::Requirement
93
93
  requirements:
94
94
  - - "~>"
95
95
  - !ruby/object:Gem::Version
96
- version: '3.0'
96
+ version: '3.9'
97
97
  - !ruby/object:Gem::Dependency
98
98
  name: rubocop
99
99
  requirement: !ruby/object:Gem::Requirement
100
100
  requirements:
101
101
  - - "~>"
102
102
  - !ruby/object:Gem::Version
103
- version: 0.74.0
103
+ version: 0.80.0
104
104
  type: :development
105
105
  prerelease: false
106
106
  version_requirements: !ruby/object:Gem::Requirement
107
107
  requirements:
108
108
  - - "~>"
109
109
  - !ruby/object:Gem::Version
110
- version: 0.74.0
110
+ version: 0.80.0
111
+ - !ruby/object:Gem::Dependency
112
+ name: pry-byebug
113
+ requirement: !ruby/object:Gem::Requirement
114
+ requirements:
115
+ - - ">="
116
+ - !ruby/object:Gem::Version
117
+ version: '0'
118
+ type: :development
119
+ prerelease: false
120
+ version_requirements: !ruby/object:Gem::Requirement
121
+ requirements:
122
+ - - ">="
123
+ - !ruby/object:Gem::Version
124
+ version: '0'
111
125
  description: |
112
126
  A gem that helps you easily handle exceptions in your Ruby on Rails API and
113
127
  return informative responses to the client by serializing exceptions into JSON
@@ -152,16 +166,16 @@ require_paths:
152
166
  - lib
153
167
  required_ruby_version: !ruby/object:Gem::Requirement
154
168
  requirements:
155
- - - "~>"
169
+ - - ">="
156
170
  - !ruby/object:Gem::Version
157
- version: '2.3'
171
+ version: '2.5'
158
172
  required_rubygems_version: !ruby/object:Gem::Requirement
159
173
  requirements:
160
174
  - - ">="
161
175
  - !ruby/object:Gem::Version
162
176
  version: '0'
163
177
  requirements: []
164
- rubygems_version: 3.0.6
178
+ rubygems_version: 3.0.3.1
165
179
  signing_key:
166
180
  specification_version: 4
167
181
  summary: A gem that helps you easily handle exceptions in your Rails API and return