Skip to content

Commit 62bca23

Browse files
author
dmitrii.buk
committed
Logger args are now deferred like in tainbox gem
1 parent cc31253 commit 62bca23

File tree

4 files changed

+34
-5
lines changed

4 files changed

+34
-5
lines changed

Gemfile.lock

Lines changed: 1 addition & 1 deletion
Original file line numberDiff line numberDiff line change
@@ -8,7 +8,7 @@ GIT
88
PATH
99
remote: .
1010
specs:
11-
rabbit_messaging (1.6.0)
11+
rabbit_messaging (1.6.1)
1212
bunny (~> 2.0)
1313
kicks
1414

lib/deferred_value.rb

Lines changed: 16 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -0,0 +1,16 @@
1+
# frozen_string_literal: true
2+
3+
class DeferredValue
4+
def initialize(&block)
5+
@block = block
6+
@evaluated = false
7+
end
8+
9+
def value
10+
return @value if @evaluated
11+
12+
@value = @block.call
13+
@evaluated = true
14+
@value
15+
end
16+
end

lib/rabbit.rb

Lines changed: 16 additions & 3 deletions
Original file line numberDiff line numberDiff line change
@@ -7,6 +7,8 @@
77

88
require "rabbit/extensions/bunny/channel"
99

10+
require_relative "deferred_value"
11+
1012
module Rabbit
1113
InvalidConfig = Class.new(StandardError)
1214
MessageNotDelivered = Class.new(StandardError)
@@ -34,6 +36,17 @@ class Config
3436
:publish_logger,
3537
:malformed_logger
3638

39+
def self.attr_deferred_reader(*names)
40+
names.each do |name|
41+
define_method(name) do
42+
val = instance_variable_get(:"@#{name}")
43+
val.is_a?(DeferredValue) ? val.value : val
44+
end
45+
end
46+
end
47+
48+
attr_deferred_reader :receive_logger, :publish_logger, :malformed_logger
49+
3750
def initialize( # rubocop:disable Metrics/MethodLength
3851
group_id: nil,
3952
project_id: nil,
@@ -76,9 +89,9 @@ def initialize( # rubocop:disable Metrics/MethodLength
7689
self.connection_reset_exceptions = connection_reset_exceptions
7790
self.logger_message_size_limit = logger_message_size_limit
7891

79-
self.receive_logger = receive_logger || default_receive_logger
80-
self.publish_logger = publish_logger || default_publish_logger
81-
self.malformed_logger = malformed_logger || default_malformed_logger
92+
self.receive_logger = receive_logger || DeferredValue.new { default_receive_logger }
93+
self.publish_logger = publish_logger || DeferredValue.new { default_publish_logger }
94+
self.malformed_logger = malformed_logger || DeferredValue.new { default_malformed_logger }
8295
end
8396

8497
def validate!

lib/rabbit/version.rb

Lines changed: 1 addition & 1 deletion
Original file line numberDiff line numberDiff line change
@@ -1,5 +1,5 @@
11
# frozen_string_literal: true
22

33
module Rabbit
4-
VERSION = "1.6.0"
4+
VERSION = "1.6.1"
55
end

0 commit comments

Comments
 (0)