coaster 1.0.5 → 1.0.6

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
  SHA256:
3
- metadata.gz: 71910814edd2fcc1011e2f7bbc0d5003d3ffacca49d8a60f4869859d7c911afd
4
- data.tar.gz: 5898b403bcb2263ff96c70721f724b5f91d9e52dff474f90a9ea854effba5676
3
+ metadata.gz: cb23e4c7362906cc9877bde117d7f1027adc08726b718526dd16bfe967355553
4
+ data.tar.gz: f23ecb00881002158f99bc56daa261317f54b0620de3c6766b4fab93dc0d1e31
5
5
  SHA512:
6
- metadata.gz: dd1a8ee8e2f472633ef7ea34588cde48d77cb053ad186aac02702c806afbb4dd8829ece4892e456413ca6c840afa77d637f9fa2e068922319b4a4bd850ded75e
7
- data.tar.gz: 8996da8e600df0d704353b89daba9f2c97b4261e4b77c7be32aa32644cb8c8018ef8b4f323de6186f5e6deeabe44f304ca0979a4c1b96abf714300487e0d11db
6
+ metadata.gz: b95bdef229ab03c481d31bf5f768ab9e1dec2a7d4d638d3bf1418da33e0665759030de2ef621fad94860b697373b8988dbe61b7955c479e7c9c1e3288c4ac656
7
+ data.tar.gz: 57982252eddf851fe0245a8b141aeaab2e3213219ef49688ef59004cf9478054a1849e016f80289b5f3e93e2ec84f8b022fb3e8991bfc602aa1401709eebf481
@@ -14,6 +14,24 @@ class StandardError
14
14
  t = _translate('.title')
15
15
  t.instance_variable_defined?(:@missing) ? nil : t
16
16
  end
17
+
18
+ def before_logging(name, &block)
19
+ @before_logging_blocks ||= {}
20
+ @before_logging_blocks[name] = block
21
+ end
22
+ def before_logging_blocks
23
+ @before_logging_blocks ||= {}
24
+ superclass <= StandardError ? superclass.after_logging_blocks.merge(@before_logging_blocks) : @before_logging_blocks
25
+ end
26
+
27
+ def after_logging(name, &block)
28
+ @after_logging_blocks ||= {}
29
+ @after_logging_blocks[name] = block
30
+ end
31
+ def after_logging_blocks
32
+ @after_logging_blocks ||= {}
33
+ superclass <= StandardError ? superclass.after_logging_blocks.merge(@after_logging_blocks) : @after_logging_blocks
34
+ end
17
35
  end
18
36
 
19
37
  attr_accessor :tags, :level, :tkey, :fingerprint
@@ -65,6 +83,8 @@ class StandardError
65
83
 
66
84
  def safe_message; message || '' end
67
85
  def status; self.class.status end
86
+ def before_logging_blocks; self.class.before_logging_blocks end
87
+ def after_logging_blocks; self.class.after_logging_blocks end
68
88
  def root_cause; cause.respond_to?(:root_cause) ? cause.root_cause : self end
69
89
 
70
90
  def attributes
@@ -172,6 +192,8 @@ class StandardError
172
192
  end
173
193
 
174
194
  def logging(options = {})
195
+ before_logging_blocks.values.each { |blk| instance_exec &blk }
196
+
175
197
  return unless report?
176
198
  logger = nil
177
199
  if defined?(Rails)
@@ -196,5 +218,7 @@ class StandardError
196
218
  else
197
219
  logger.error(msg)
198
220
  end
221
+
222
+ after_logging_blocks.values.each { |blk| instance_exec &blk }
199
223
  end
200
224
  end
@@ -1,3 +1,3 @@
1
1
  module Coaster
2
- VERSION = '1.0.5'
2
+ VERSION = '1.0.6'
3
3
  end
@@ -6,3 +6,8 @@ require 'pry'
6
6
  require 'rubygems'
7
7
  require 'bundler/setup'
8
8
  require 'coaster'
9
+
10
+ class Raven
11
+ def self.capture_exception(*args)
12
+ end
13
+ end
@@ -155,5 +155,15 @@ LOG
155
155
  e.descriptions.merge!(a: 1)
156
156
  assert_equal e.descriptions['a'], 1
157
157
  end
158
+
159
+ class SampleErrorSub < SampleError; end
160
+ class SampleErrorSubSub < SampleErrorSub; end
161
+ SampleError.after_logging(:blah) { @blah = 101 }
162
+ def test_before_logging
163
+ e = SampleErrorSubSub.new(m: 'foo')
164
+ assert !e.after_logging_blocks[:blah].nil?
165
+ e.logging
166
+ assert_equal e.instance_variable_get(:@blah), 101
167
+ end
158
168
  end
159
169
  end
metadata CHANGED
@@ -1,14 +1,14 @@
1
1
  --- !ruby/object:Gem::Specification
2
2
  name: coaster
3
3
  version: !ruby/object:Gem::Version
4
- version: 1.0.5
4
+ version: 1.0.6
5
5
  platform: ruby
6
6
  authors:
7
7
  - buzz jung
8
8
  autorequire:
9
9
  bindir: bin
10
10
  cert_chain: []
11
- date: 2020-07-08 00:00:00.000000000 Z
11
+ date: 2020-09-18 00:00:00.000000000 Z
12
12
  dependencies:
13
13
  - !ruby/object:Gem::Dependency
14
14
  name: i18n
@@ -226,7 +226,7 @@ signing_key:
226
226
  specification_version: 4
227
227
  summary: A little convenient feature for standard library
228
228
  test_files:
229
- - test/test_helper.rb
230
- - test/test_standard_error.rb
231
229
  - test/locales/en.yml
230
+ - test/test_standard_error.rb
231
+ - test/test_helper.rb
232
232
  - test/test_object_translation.rb