technologic 0.25.0 → 0.25.5

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: e333d0af1583653fced513daedb31e19418713c0caa7b4e43a901caa33424480
4
- data.tar.gz: 8b65c9e69d6262921b46d54b98efedb8f5893e45574f5765f6226aa1a9685578
3
+ metadata.gz: 7cd57de02d8a86f3c7a1911a8236379b92fe9609cbf84e09b1b69714f312b220
4
+ data.tar.gz: e2af80cc1e626c02fe427871beb6732a87f79b342588ce172ce1ad6cbd3dbbff
5
5
  SHA512:
6
- metadata.gz: c72e054a970b09029029ddbad1d0d20cc4f099b7e2cfd8e57d11a0724ef0455bdf918ba84c8515374d6ad2775ee47aa5716d3923c7e5b7f3b61d014c0ae1f68d
7
- data.tar.gz: 90df5f8d297bb54d863121b19f1dec7d6dceff5a00ef64d5c30318364c11a3b5e4274763b1f74a01ad30af8fc5be699bd9fe379f459422ec2793c872416a0308
6
+ metadata.gz: 29b2e092e4819112e8b7befd3a18ee971fedad28d7e17c118e72092dd0f540e6a6f264802e66d2110021cdcfe16ab79c562a9be288eac42feba7efa680e7e5dd
7
+ data.tar.gz: 111932ca84f04d71bbf12e9b6fb8ac196d8c685808d0832f8b8a1317181872a275f44f4e499e6304539bfdcd36cecebb7bbbaf80e2e999f08969cba80d8f18c4
data/lib/technologic.rb CHANGED
@@ -29,9 +29,11 @@ module Technologic
29
29
  SEVERITIES = %i[debug info warn error fatal].freeze
30
30
  EXCEPTION_SEVERITIES = %i[error fatal].freeze
31
31
 
32
+ ACTIVEJOB_WORKAROUND_FIRST_VERSION = Gem::Version.new("6.1.0")
33
+
32
34
  included do
33
- delegate :instrument, :surveil, to: :class
34
- protected :instrument, :surveil
35
+ delegate :_tl_instrument, :surveil, to: :class
36
+ protected :_tl_instrument, :surveil
35
37
 
36
38
  SEVERITIES.each do |severity|
37
39
  delegate severity, to: :class
@@ -46,31 +48,45 @@ module Technologic
46
48
  end
47
49
  end
48
50
 
49
- class_methods do
50
- def instrument(severity, event, **data, &block)
51
- ActiveSupport::Notifications.instrument("#{event}.#{name}.#{severity}", data, &block).tap do
52
- # If a block was defined, :instrument will return the value of the block.
53
- # Otherwise, :instrument will return nil, since it didn't do anything.
54
- # Returning true here allows us to do fun things like `info :subscription_created and return subscription`
55
- return true unless block_given?
56
- end
51
+ protected
52
+
53
+ # DEP-2021-01-14
54
+ # Remove this method
55
+ def instrument(*args, **opts, &block)
56
+ # Targeted workaround for ActiveJob#instrument in Rails 6.1+
57
+ return super if defined?(ActiveJob) && self.class <= ActiveJob::Base && ActiveJob.version >= ACTIVEJOB_WORKAROUND_FIRST_VERSION
58
+
59
+ ActiveSupport::Deprecation.warn("Technologic#instrument is deprecated. Instead, use the corresponding severity-level convenience method (#info, #error etc)")
60
+
61
+ _tl_instrument(*args, **opts, &block)
62
+ end
63
+
64
+ module ClassMethods
65
+ # DEP-2021-01-14
66
+ # Remove this method
67
+ def instrument(*args, **opts, &block)
68
+ ActiveSupport::Deprecation.warn("Technologic.instrument is deprecated. Instead, use the corresponding severity-level convenience method (#info, #error etc)")
69
+
70
+ _tl_instrument(*args, **opts, &block)
57
71
  end
58
72
 
59
73
  def surveil(event, severity: :info, **data, &block)
60
74
  raise LocalJumpError unless block_given?
61
75
 
62
- instrument(severity, "#{event}_started", **data)
63
- instrument(severity, "#{event}_finished", &block)
76
+ raise ArgumentError, "Invalid severity: #{severity}" unless severity.to_sym.in?(SEVERITIES)
77
+
78
+ __send__(severity, "#{event}_started", **data)
79
+ __send__(severity, "#{event}_finished", &block)
64
80
  end
65
81
 
66
82
  SEVERITIES.each do |severity|
67
- define_method(severity) { |event, **data, &block| instrument(severity, event, **data, &block) }
83
+ define_method(severity) { |event, **data, &block| _tl_instrument(severity, event, **data, &block) }
68
84
  end
69
85
 
70
86
  EXCEPTION_SEVERITIES.each do |severity|
71
87
  define_method("#{severity}!") do |exception = StandardError, message = nil, **data, &block|
72
88
  if exception.is_a?(Exception)
73
- instrument(
89
+ _tl_instrument(
74
90
  severity,
75
91
  exception.class.name.demodulize,
76
92
  **{
@@ -88,6 +104,17 @@ module Technologic
88
104
  end
89
105
  end
90
106
  end
107
+
108
+ protected
109
+
110
+ def _tl_instrument(severity, event, **data, &block)
111
+ ActiveSupport::Notifications.instrument("#{event}.#{name}.#{severity}", data, &block).tap do
112
+ # If a block was defined, :instrument will return the value of the block.
113
+ # Otherwise, :instrument will return nil, since it didn't do anything.
114
+ # Returning true here allows us to do fun things like `info :subscription_created and return subscription`
115
+ return true unless block_given?
116
+ end
117
+ end
91
118
  end
92
119
  end
93
120
 
@@ -2,5 +2,5 @@
2
2
 
3
3
  module Technologic
4
4
  # This constant is managed by spicerack
5
- VERSION = "0.25.0"
5
+ VERSION = "0.25.5"
6
6
  end
metadata CHANGED
@@ -1,14 +1,14 @@
1
1
  --- !ruby/object:Gem::Specification
2
2
  name: technologic
3
3
  version: !ruby/object:Gem::Version
4
- version: 0.25.0
4
+ version: 0.25.5
5
5
  platform: ruby
6
6
  authors:
7
7
  - Eric Garside
8
8
  autorequire:
9
9
  bindir: bin
10
10
  cert_chain: []
11
- date: 2020-10-13 00:00:00.000000000 Z
11
+ date: 2021-02-24 00:00:00.000000000 Z
12
12
  dependencies:
13
13
  - !ruby/object:Gem::Dependency
14
14
  name: activesupport
@@ -30,14 +30,14 @@ dependencies:
30
30
  requirements:
31
31
  - - '='
32
32
  - !ruby/object:Gem::Version
33
- version: 0.25.0
33
+ version: 0.25.5
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: 0.25.0
40
+ version: 0.25.5
41
41
  description: A clean and terse way to produce standardized, highly actionable, and
42
42
  data-rich logs
43
43
  email:
@@ -87,7 +87,7 @@ metadata:
87
87
  homepage_uri: https://github.com/Freshly/spicerack/tree/master/technologic
88
88
  source_code_uri: https://github.com/Freshly/spicerack/tree/master/technologic
89
89
  changelog_uri: https://github.com/Freshly/spicerack/blob/master/technologic/CHANGELOG.md
90
- documentation_uri: https://www.rubydoc.info/gems/technologic/0.25.0
90
+ documentation_uri: https://www.rubydoc.info/gems/technologic/0.25.5
91
91
  post_install_message:
92
92
  rdoc_options: []
93
93
  require_paths: