escalate 0.1.0.pre.1 → 0.1.0.pre.2

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
  SHA1:
3
- metadata.gz: bb743da8ea57e11a7bfa80d653548239e0b760ab
4
- data.tar.gz: 36555a0ba6f8bca3f821c5b0044739e26762cc23
3
+ metadata.gz: a3e33eb654953f4c511b2207a89df47f6db4865c
4
+ data.tar.gz: 4b245b1e402c24a933eae6ba6ac6eb9be362e5f1
5
5
  SHA512:
6
- metadata.gz: 7c735aa3214359068d14e0fd981c64c62e14896d73965d467d5b28ebaa3d2bf300ae9037164d3a4a7e5a6b4a77439a8a5137dd5d3b7b51eda27cef0ec7a57a60
7
- data.tar.gz: a3899dc985f47f6e87d609b5fdf85443b9278ca100b40e5e41e4be641c8aa6116850dc80a4426f779c34e741b5b0893c9032e3c2b59974a9b802da0bcc8629bd
6
+ metadata.gz: 28a1ecb9c22129c0b68c62ac6c5bd00eb5b41580bae1763dfdc9e0d9e732dfd22b7acc37ec84f353d4a3f7f35c18334ae92a78a5677c5e9e6453c4ccfb074767
7
+ data.tar.gz: dc2271ab38903b2c8f874adc0b21f26c3851a759f5ed1db34482d447573d3d8f13d8b8d1b5565b9106b73bde766dee65260aeb6c645d402b9326371536d3dce0
data/Gemfile CHANGED
@@ -5,6 +5,8 @@ source "https://rubygems.org"
5
5
  # Specify your gem's dependencies in escalate.gemspec
6
6
  gemspec
7
7
 
8
+ gem "contextual_logger"
9
+
8
10
  gem "pry"
9
11
  gem "pry-byebug"
10
12
 
data/Gemfile.lock CHANGED
@@ -1,9 +1,8 @@
1
1
  PATH
2
2
  remote: .
3
3
  specs:
4
- escalate (0.1.0.pre.1)
4
+ escalate (0.1.0.pre.2)
5
5
  activesupport
6
- contextual_logger
7
6
 
8
7
  GEM
9
8
  remote: https://rubygems.org/
@@ -53,6 +52,7 @@ PLATFORMS
53
52
  x86_64-darwin-19
54
53
 
55
54
  DEPENDENCIES
55
+ contextual_logger
56
56
  escalate!
57
57
  pry
58
58
  pry-byebug
data/README.md CHANGED
@@ -1,6 +1,10 @@
1
1
  # Escalate
2
2
 
3
- A simple and lightweight gem to help with escalating errors
3
+ A simple and lightweight gem to escalate rescued exceptions. This implementation
4
+ is an abstract interface that can be used on it's own, or attached to more concrete
5
+ implementations like Honeybadger, Airbrake, or Sentry in order to not just log
6
+ exceptions in an easy to parse way, but also escalate the appropriate information
7
+ to third party systems.
4
8
 
5
9
  ## Installation
6
10
 
@@ -30,7 +34,7 @@ module SomeGem
30
34
  end
31
35
  ```
32
36
 
33
- This will expose the `Escalate#ex_escalate` method within your gem to be used instead
37
+ This will expose the `Escalate#escalate` method within your gem to be used instead
34
38
  of using `logger.error`.
35
39
 
36
40
  ```ruby
data/escalate.gemspec CHANGED
@@ -8,8 +8,8 @@ Gem::Specification.new do |spec|
8
8
  spec.authors = ["Invoca Development", "Octothorp"]
9
9
  spec.email = ["development@invoca.com", "octothorp@invoca.com"]
10
10
 
11
- spec.summary = "Simple gem for abstracting log escalations"
12
- spec.description = "Simple gem for abstracting log escalations"
11
+ spec.summary = "A simple and lightweight gem to escalate rescued exceptions."
12
+ spec.description = "A simple and lightweight gem to escalate rescued exceptions."
13
13
  spec.homepage = "https://github.com/invoca/escalate"
14
14
  spec.required_ruby_version = Gem::Requirement.new(">= 2.4.0")
15
15
 
@@ -28,5 +28,4 @@ Gem::Specification.new do |spec|
28
28
  spec.require_paths = ["lib"]
29
29
 
30
30
  spec.add_dependency "activesupport"
31
- spec.add_dependency "contextual_logger"
32
31
  end
data/lib/escalate.rb CHANGED
@@ -2,7 +2,6 @@
2
2
 
3
3
  require "active_support"
4
4
  require "active_support/core_ext"
5
- require "contextual_logger"
6
5
 
7
6
  require_relative "escalate/version"
8
7
  require_relative "escalate/mixin"
@@ -25,28 +24,29 @@ module Escalate
25
24
  # @param [Hash] context
26
25
  # Any additional context to be tied to the escalation
27
26
  def escalate(exception, message, logger, **context)
28
- error_message = <<~EOS
29
- [Escalate] #{message} (#{context.inspect})
30
- #{exception.class.name}: #{exception.message}
31
- #{exception.backtrace.join("\n")}
32
- EOS
27
+ ensure_failsafe("Exception rescued while escalating #{exception.inspect}") do
28
+ error_message = <<~EOS
29
+ [Escalate] #{message} (#{context.inspect})
30
+ #{exception.class.name}: #{exception.message}
31
+ #{exception.backtrace.join("\n")}
32
+ EOS
33
33
 
34
- if logger.is_a?(ContextualLogger::LoggerMixin)
35
- logger.error(error_message, **context)
36
- else
37
- logger.error(error_message)
38
- end
34
+ if logger_allows_added_context?(logger)
35
+ logger.error(error_message, **context)
36
+ else
37
+ logger.error(error_message)
38
+ end
39
39
 
40
- on_escalate_blocks.each do |block|
41
- block.call(exception, message, **context)
40
+ on_escalate_blocks.each do |block|
41
+ ensure_failsafe("Exception rescued while escalating #{exception.inspect} to #{block.inspect}") do
42
+ block.call(exception, message, **context)
43
+ end
44
+ end
42
45
  end
43
- rescue Exception => ex
44
- STDERR.puts("[ExEscalator] Exception rescued while escalating #{exception.inspect}:" \
45
- "#{ex.class.name}: #{ex.message}")
46
46
  end
47
47
 
48
48
  # Returns a module to be mixed into a class or module exposing
49
- # the ex_escalate method to be used for escalating and logging
49
+ # the escalate method to be used for escalating and logging
50
50
  # exceptions.
51
51
  #
52
52
  # @param [Proc] logger_block
@@ -63,7 +63,7 @@ module Escalate
63
63
  end
64
64
  end
65
65
 
66
- # Registers an escalation callback to be executed when `ex_escalate`
66
+ # Registers an escalation callback to be executed when `escalate`
67
67
  # is invoked.
68
68
  def on_escalate(&block)
69
69
  on_escalate_blocks.add(block)
@@ -71,6 +71,17 @@ module Escalate
71
71
 
72
72
  private
73
73
 
74
+ def ensure_failsafe(message)
75
+ yield
76
+ rescue Exception => ex
77
+ STDERR.puts("[Escalator] #{message}: #{ex.class.name}: #{ex.message}")
78
+ end
79
+
80
+ def logger_allows_added_context?(logger)
81
+ defined?(ContextualLogger::LoggerMixin) &&
82
+ logger.is_a?(ContextualLogger::LoggerMixin)
83
+ end
84
+
74
85
  def on_escalate_blocks
75
86
  @on_escalate_blocks ||= Set.new
76
87
  end
@@ -4,13 +4,13 @@ module Escalate
4
4
  module Mixin
5
5
  class << self
6
6
  def included(base)
7
- raise 'instead of `include ExEscalator::Mixin`, you should `include ExEscalator.mixin`'
7
+ raise 'instead of `include Escalator::Mixin`, you should `include Escalator.mixin`'
8
8
  end
9
9
  end
10
10
 
11
11
  attr_accessor :escalate_logger_block
12
12
 
13
- def ex_escalate(exception, message, **context)
13
+ def escalate(exception, message, **context)
14
14
  Escalate.escalate(exception, message, escalate_logger, **context)
15
15
  end
16
16
 
@@ -1,5 +1,5 @@
1
1
  # frozen_string_literal: true
2
2
 
3
3
  module Escalate
4
- VERSION = "0.1.0.pre.1"
4
+ VERSION = "0.1.0.pre.2"
5
5
  end
metadata CHANGED
@@ -1,7 +1,7 @@
1
1
  --- !ruby/object:Gem::Specification
2
2
  name: escalate
3
3
  version: !ruby/object:Gem::Version
4
- version: 0.1.0.pre.1
4
+ version: 0.1.0.pre.2
5
5
  platform: ruby
6
6
  authors:
7
7
  - Invoca Development
@@ -9,7 +9,7 @@ authors:
9
9
  autorequire:
10
10
  bindir: bin
11
11
  cert_chain: []
12
- date: 2021-02-01 00:00:00.000000000 Z
12
+ date: 2021-02-02 00:00:00.000000000 Z
13
13
  dependencies:
14
14
  - !ruby/object:Gem::Dependency
15
15
  name: activesupport
@@ -25,21 +25,7 @@ dependencies:
25
25
  - - ">="
26
26
  - !ruby/object:Gem::Version
27
27
  version: '0'
28
- - !ruby/object:Gem::Dependency
29
- name: contextual_logger
30
- requirement: !ruby/object:Gem::Requirement
31
- requirements:
32
- - - ">="
33
- - !ruby/object:Gem::Version
34
- version: '0'
35
- type: :runtime
36
- prerelease: false
37
- version_requirements: !ruby/object:Gem::Requirement
38
- requirements:
39
- - - ">="
40
- - !ruby/object:Gem::Version
41
- version: '0'
42
- description: Simple gem for abstracting log escalations
28
+ description: A simple and lightweight gem to escalate rescued exceptions.
43
29
  email:
44
30
  - development@invoca.com
45
31
  - octothorp@invoca.com
@@ -89,5 +75,5 @@ rubyforge_project:
89
75
  rubygems_version: 2.6.13
90
76
  signing_key:
91
77
  specification_version: 4
92
- summary: Simple gem for abstracting log escalations
78
+ summary: A simple and lightweight gem to escalate rescued exceptions.
93
79
  test_files: []