sidekiq-haron 0.2.0 → 0.2.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
  SHA256:
3
- metadata.gz: a903c22b5c1696535db961a28828fa539cebb6695154b4082fb10fd3041f2c53
4
- data.tar.gz: 9e405c2c5a4e5266d2cd735b13f6dc10c918d35bebda275e690e21b79b491e63
3
+ metadata.gz: '0148c001b7a4205ea94c032b93d3e0cbab26649b577697acf70234090bb940e5'
4
+ data.tar.gz: 279fdf3e1b0190c0f36d17894604aee602528816e75de8920d36dcbdaed54854
5
5
  SHA512:
6
- metadata.gz: f3259615f6d5ad26bd53dd1a1f9a934d2f4b1c0ba4099be5062b58dbd103731fff12f0951cac8bc64564d1016b33d721b096980e8419c7f02ab65ab84383dd4a
7
- data.tar.gz: 5a86580af78520badd3c3a75a9ac4ebb464a7b408b49f497188f82841aa54a41a5a0ce4e1d33b17776954de6e2fdd7d2b38d056d7836c819c1bf04ecf7d5a7c5
6
+ metadata.gz: ee05561b2f488778fd91ae59446b403db97babae7f569cc43502dd5f93e3a7110e1daea05113d1fb8df2676296060f9043b0bc50ef9e85c5687b5f527b2781ef
7
+ data.tar.gz: d190c12325c125ded418ef2662fb6907a31907f32179345a1af8a734afc6cc13e6c741a674b1e11044c0f98b39fb29e21597d9c60f9f11365a41d215eb9fc860
@@ -0,0 +1,26 @@
1
+ module MonkeyPatching
2
+ module ActiveSupport
3
+ module BroadcastLoggerPatcher
4
+ private
5
+
6
+ def method_missing(name, ...)
7
+ loggers = if name == :tagged
8
+ # only this way reimplemented
9
+ @broadcasts.select { |logger| !logger.is_a? ::Sidekiq::Logger }
10
+ else
11
+ @broadcasts.select { |logger| logger.respond_to?(name) }
12
+ end
13
+
14
+ if loggers.none?
15
+ super
16
+ elsif loggers.one?
17
+ loggers.first.send(name, ...)
18
+ else
19
+ loggers.map { |logger| logger.send(name, ...) }
20
+ end
21
+ end
22
+ end
23
+ end
24
+ end
25
+
26
+ ActiveSupport::BroadcastLogger.prepend MonkeyPatching::ActiveSupport::BroadcastLoggerPatcher
@@ -0,0 +1,42 @@
1
+ module Sidekiq
2
+ module Haron
3
+ module Storage
4
+ module RedisConverts
5
+ # Введена интерпретация значений nil, true, false в связи с возникающими ошибками:
6
+ # nil - 'NilClass'
7
+ # true - 'TrueClass'
8
+ # false - 'FalseClass'
9
+
10
+ CLASSES_TO_CONVERT = { NilClass => {redis_value: 'NilClass', orig_value: nil},
11
+ TrueClass => {redis_value: 'TrueClass', orig_value: true},
12
+ FalseClass => {redis_value: 'FalseClass', orig_value: false} }.freeze
13
+
14
+ def encode_values_from array
15
+ return array unless array.is_a?(Array)
16
+
17
+ array.map do |value|
18
+ CLASSES_TO_CONVERT.keys.include?(value.class) ? CLASSES_TO_CONVERT[value.class][:redis_value] : value
19
+ end
20
+ end
21
+
22
+ def decode_values_from hash
23
+ return hash unless hash.is_a?(Hash)
24
+
25
+ hash.transform_values do |value|
26
+ key = key_by_redis_value(value)
27
+ value = key.nil? ? value : CLASSES_TO_CONVERT[key][:orig_value]
28
+ end
29
+ end
30
+
31
+ private
32
+
33
+ def key_by_redis_value redis_value
34
+ CLASSES_TO_CONVERT.each do |k, v|
35
+ return k if v[:redis_value] == redis_value
36
+ end
37
+ end
38
+
39
+ end
40
+ end
41
+ end
42
+ end
@@ -2,6 +2,8 @@ module Sidekiq
2
2
  module Haron
3
3
  module Storage
4
4
 
5
+ include RedisConverts
6
+
5
7
  DEFAULT_EXPIRY = 7 * 24 * 60 * 60 # 7 days
6
8
 
7
9
  protected
@@ -17,13 +19,8 @@ module Sidekiq
17
19
  # ~/.rvm/gems/ruby-3.3.5/gems/irb-1.14.1/lib/irb.rb:1260:in `full_message': Unsupported command argument type: NilClass (TypeError)
18
20
  # raise TypeError, "Unsupported command argument type: #{element.class}"
19
21
  # ^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^
20
- # Потому введена интерпретация значений:
21
- # nil - ''
22
- # true - 1
23
- # false - 0
24
- values = data.to_a.flatten(1).map{ |each| each.nil? ? '' : each }.map{ |each| each == true ? 1 : (each == false ? 0 : each) }
25
22
  # уход от deprecated-предупреждений внутри sidekiq - нативный вызов hmset для клиента redis
26
- pipeline.call('hmset', key(id), *(values))
23
+ pipeline.call('hmset', key(id), *(encode_values_from data.to_a.flatten(1)))
27
24
  pipeline.expire key(id), DEFAULT_EXPIRY
28
25
  end[0]
29
26
  end
@@ -31,7 +28,7 @@ module Sidekiq
31
28
 
32
29
  def read_for_id(id)
33
30
  Sidekiq.redis do |conn|
34
- conn.hgetall(key(id))
31
+ decode_values_from conn.hgetall(key(id))
35
32
  end
36
33
  end
37
34
 
@@ -23,12 +23,15 @@ module Sidekiq
23
23
  end
24
24
 
25
25
  def tagged
26
- ::Rails.logger.tagged(tags) do
27
- Sidekiq.logger.tagged(tags) do
28
- yield
26
+ if ::Rails.logger.respond_to?(:tagged) && Sidekiq.logger.respond_to?(:tagged)
27
+ ::Rails.logger.tagged(tags) do
28
+ Sidekiq.logger.tagged(tags) do
29
+ yield
30
+ end
29
31
  end
32
+ else
33
+ yield
30
34
  end
31
-
32
35
  end
33
36
 
34
37
  def tags
@@ -1,5 +1,5 @@
1
1
  module Sidekiq
2
2
  module Haron
3
- VERSION = "0.2.0"
3
+ VERSION = "0.2.2".freeze
4
4
  end
5
5
  end
data/lib/sidekiq/haron.rb CHANGED
@@ -1,5 +1,6 @@
1
1
  require 'sidekiq'
2
2
  require 'sidekiq/haron/formatter'
3
+ require 'sidekiq/haron/redis_converts'
3
4
  require 'sidekiq/haron/storage'
4
5
  require 'sidekiq/haron/transmitter'
5
6
  require 'sidekiq/haron/job_logger'
@@ -7,6 +8,7 @@ require 'sidekiq/haron/exception_logger'
7
8
  require 'sidekiq/haron/client_middleware'
8
9
  require 'sidekiq/haron/server_middleware'
9
10
  require 'sidekiq/haron/version'
11
+ require 'monkey_patching/active_support/broadcast_logger_patcher'
10
12
 
11
13
  module Sidekiq
12
14
  module Haron
metadata CHANGED
@@ -1,14 +1,14 @@
1
1
  --- !ruby/object:Gem::Specification
2
2
  name: sidekiq-haron
3
3
  version: !ruby/object:Gem::Version
4
- version: 0.2.0
4
+ version: 0.2.2
5
5
  platform: ruby
6
6
  authors:
7
7
  - Serg F
8
8
  autorequire:
9
9
  bindir: exe
10
10
  cert_chain: []
11
- date: 2024-11-25 00:00:00.000000000 Z
11
+ date: 2025-02-06 00:00:00.000000000 Z
12
12
  dependencies:
13
13
  - !ruby/object:Gem::Dependency
14
14
  name: sidekiq
@@ -110,11 +110,13 @@ files:
110
110
  - Rakefile
111
111
  - bin/console
112
112
  - bin/setup
113
+ - lib/monkey_patching/active_support/broadcast_logger_patcher.rb
113
114
  - lib/sidekiq/haron.rb
114
115
  - lib/sidekiq/haron/client_middleware.rb
115
116
  - lib/sidekiq/haron/exception_logger.rb
116
117
  - lib/sidekiq/haron/formatter.rb
117
118
  - lib/sidekiq/haron/job_logger.rb
119
+ - lib/sidekiq/haron/redis_converts.rb
118
120
  - lib/sidekiq/haron/server_middleware.rb
119
121
  - lib/sidekiq/haron/storage.rb
120
122
  - lib/sidekiq/haron/transmitter.rb