beekeeper 0.1.7 → 0.1.12

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: ec711a53303d9fb0e5f4ee680e81e058ffc46e1652a91ca4bee3dcb05f7b81cc
4
- data.tar.gz: 4efc54f12c5499769992c5d3e05f644d0b9fe8ff09369d31f2e9f82d8d1bf98b
3
+ metadata.gz: 5600dd4c02baeb97f8d977529b03c3354d8a0b9924bdfe0b60b9693521311e75
4
+ data.tar.gz: b7179bf9048ca148d096b520c11d41c5518394b8d307ef42d57f1aa99f693a48
5
5
  SHA512:
6
- metadata.gz: ad035c428b70925a0d27bd6aa4ed1373133009c1f806df0a1b93021e4f541146460d2deeace4cbdde664ab904e46844352f61a5976545dc0b34a0827715f390f
7
- data.tar.gz: b62a386d0d7acb6270e247cb7c885211d00ca1fdf34c3498b8674e584b8b14097dc9a9e6d843118d62eb54adc15807b0926259ea8d702e81d28f3018d66a4725
6
+ metadata.gz: 2f4d7cef134b4beb2377d8bd43e95227145ca99d84515d78d365f63ab568aaaecba2ec753338ec9d375e9c9243a1bd7667357a9046a3a496980ad7999f19eaa4
7
+ data.tar.gz: 8049b92aaddc3bf3dfb682b548b7b4813e17cc5da7d3c3c5c3afbc06af38cca0b21e8be1b78b4a2b0e4e41b5effcacf4ee8e1c0e386b96048b97d4ca10a88b92
data/README.md CHANGED
@@ -30,16 +30,54 @@ $ gem install beekeeper
30
30
 
31
31
  * Include `Beekeeper::Rescuer` in your application controller so that known errors are logged and response is returned in a standard JSON format.
32
32
  * These are the `known errors` it rescues:
33
- * `CustomErrors`
34
- * `BaseError`
33
+ * `Beekeeper::Error`
35
34
  * `ActiveRecord::RecordInvalid` (Validation errors)
36
35
  * `ActiveRecord::RecordNotFound`
37
36
 
37
+ * In order to define and raise known errors in your application, it is recommended that you subclass Beekeeper::Error
38
+
39
+ For example:
40
+ ```ruby
41
+ class CustomError < Beekeeper::Error
42
+ end
43
+
44
+ class CustomErrors::BadRequest < CustomError
45
+ def initialize(message = "Request params are invalid")
46
+ super(error: :bad_request, status: 400, message: message)
47
+ end
48
+ end
49
+
50
+
51
+ class UsersController
52
+ def edit
53
+ raise CustomErrors::BadRequest, message: "User not found" if params[:id].blank?
54
+ end
55
+ end
56
+
57
+
58
+ ```
59
+
38
60
  * This library also inserts a `TrapApiExceptions` middleware in your Rails application stack which traps errors from an API route (`/api`) and returns a standard JSON error response by default. (Without this middleware, an HTML response is returned)
39
61
 
40
- ## Usage
62
+ * This gem also provides standard logging for an exception message. For eg. sometimes, you would like to rescue the exception and just log the exception in the application code itself.
63
+
64
+ ```ruby
65
+
66
+ class BackgroundTaskWorker < Worker
67
+
68
+ def perform
69
+ begin
70
+ #Code Body
71
+ rescue e => StandardError
72
+ Beekeeper::Logger.fatal(e)
73
+ end
74
+ end
75
+
76
+ end
77
+
78
+ ```
41
79
 
42
- * Define `CustomErrors` in this gem and let other Rails apps inherit or use this in their apps.
80
+ Above Beekeeper::Logger will print the error message, error class along with a trimmed version of the backtrace.
43
81
 
44
82
  ## Contributing
45
83
  Contribution directions go here.
@@ -1,21 +1,21 @@
1
1
  module Beekeeper
2
2
  class Logger
3
- def self.fatal(error)
3
+ def self.fatal(error, logger: nil)
4
4
  message = if error.respond_to? :backtrace
5
5
  message_with_backtrace(error)
6
6
  else
7
7
  error
8
8
  end
9
- Rails.logger.fatal message
9
+ internal_logger(logger).fatal message
10
10
  end
11
11
 
12
- def self.error(error)
12
+ def self.error(error, logger: nil)
13
13
  message = if error.respond_to? :backtrace
14
14
  message_with_backtrace(error)
15
15
  else
16
16
  error
17
17
  end
18
- Rails.logger.error message
18
+ internal_logger(logger).error message
19
19
  end
20
20
 
21
21
  private
@@ -32,6 +32,10 @@ module Beekeeper
32
32
  bc.clean(backtrace).map! { |t| " #{t}\n" }
33
33
  end
34
34
 
35
+ def internal_logger(logger)
36
+ logger || Rails.logger
37
+ end
38
+
35
39
  end
36
40
  end
37
41
 
@@ -7,7 +7,10 @@ module Beekeeper
7
7
  RESCUABLE_ERRORS = [
8
8
  ::Beekeeper::Error,
9
9
  ::Apipie::Error,
10
- ::ActiveRecord::RecordInvalid
10
+ ::ActiveRecord::RecordInvalid,
11
+ ::ActiveRecord::RecordNotUnique,
12
+ ::ActiveRecord::RecordNotFound,
13
+ ::ActiveRecord::ActiveRecordError,
11
14
  ]
12
15
 
13
16
  rescue_from(*RESCUABLE_ERRORS, with: :handle_error)
@@ -16,11 +16,11 @@ module Beekeeper
16
16
  request = ActionDispatch::Request.new env
17
17
  @app.call(env)
18
18
  rescue StandardError => e
19
- if request.path_info.include? '/api'
19
+ # if request.path_info.include? '/api'
20
20
  render_json_error(request, e)
21
- else
22
- raise e
23
- end
21
+ # else
22
+ # raise e
23
+ # end
24
24
  end
25
25
 
26
26
  private
@@ -1,3 +1,3 @@
1
1
  module Beekeeper
2
- VERSION = '0.1.7'
2
+ VERSION = '0.1.12'
3
3
  end
metadata CHANGED
@@ -1,14 +1,14 @@
1
1
  --- !ruby/object:Gem::Specification
2
2
  name: beekeeper
3
3
  version: !ruby/object:Gem::Version
4
- version: 0.1.7
4
+ version: 0.1.12
5
5
  platform: ruby
6
6
  authors:
7
7
  - Omkar Joshi
8
- autorequire:
8
+ autorequire:
9
9
  bindir: bin
10
10
  cert_chain: []
11
- date: 2020-08-26 00:00:00.000000000 Z
11
+ date: 2020-09-21 00:00:00.000000000 Z
12
12
  dependencies:
13
13
  - !ruby/object:Gem::Dependency
14
14
  name: rails
@@ -28,34 +28,62 @@ dependencies:
28
28
  name: blueprinter
29
29
  requirement: !ruby/object:Gem::Requirement
30
30
  requirements:
31
- - - "~>"
31
+ - - ">="
32
32
  - !ruby/object:Gem::Version
33
- version: 0.23.4
34
- type: :development
33
+ version: '0'
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: 0.23.4
40
+ version: '0'
41
41
  - !ruby/object:Gem::Dependency
42
42
  name: oj
43
43
  requirement: !ruby/object:Gem::Requirement
44
44
  requirements:
45
- - - "~>"
45
+ - - ">="
46
+ - !ruby/object:Gem::Version
47
+ version: '0'
48
+ type: :runtime
49
+ prerelease: false
50
+ version_requirements: !ruby/object:Gem::Requirement
51
+ requirements:
52
+ - - ">="
53
+ - !ruby/object:Gem::Version
54
+ version: '0'
55
+ - !ruby/object:Gem::Dependency
56
+ name: apipie-rails
57
+ requirement: !ruby/object:Gem::Requirement
58
+ requirements:
59
+ - - ">="
60
+ - !ruby/object:Gem::Version
61
+ version: '0'
62
+ type: :runtime
63
+ prerelease: false
64
+ version_requirements: !ruby/object:Gem::Requirement
65
+ requirements:
66
+ - - ">="
67
+ - !ruby/object:Gem::Version
68
+ version: '0'
69
+ - !ruby/object:Gem::Dependency
70
+ name: sqlite3
71
+ requirement: !ruby/object:Gem::Requirement
72
+ requirements:
73
+ - - ">="
46
74
  - !ruby/object:Gem::Version
47
- version: 3.10.6
75
+ version: '0'
48
76
  type: :development
49
77
  prerelease: false
50
78
  version_requirements: !ruby/object:Gem::Requirement
51
79
  requirements:
52
- - - "~>"
80
+ - - ">="
53
81
  - !ruby/object:Gem::Version
54
- version: 3.10.6
82
+ version: '0'
55
83
  description: 'Beekeepeer: This gem is responsible for error logging, processing and
56
84
  rendering of errors in a standard JSON format..'
57
85
  email:
58
- - omkar.joshi@anarock.com
86
+ - onjoshi@ncsu.edu
59
87
  executables: []
60
88
  extensions: []
61
89
  extra_rdoc_files: []
@@ -72,12 +100,12 @@ files:
72
100
  - lib/beekeeper/trap_api_exceptions.rb
73
101
  - lib/beekeeper/version.rb
74
102
  - lib/tasks/beekeeper_tasks.rake
75
- homepage: https://github.com/saas-bn/beekeeper
103
+ homepage: https://github.com/joshio1/beekeeper
76
104
  licenses:
77
105
  - MIT
78
106
  metadata:
79
107
  allowed_push_host: https://rubygems.org
80
- post_install_message:
108
+ post_install_message:
81
109
  rdoc_options: []
82
110
  require_paths:
83
111
  - lib
@@ -93,7 +121,7 @@ required_rubygems_version: !ruby/object:Gem::Requirement
93
121
  version: '0'
94
122
  requirements: []
95
123
  rubygems_version: 3.0.3
96
- signing_key:
124
+ signing_key:
97
125
  specification_version: 4
98
- summary: 'Beekeeper: Error logging, processing and rendering.'
126
+ summary: 'Beekeeper: Error logging, processing and rendering via Rack middleware.'
99
127
  test_files: []