Module: ActiveSupport::TaggedLogging::Broadcasting
- Defined in:
- lib/activesupport/tagged_logging/broadcasting.rb
Overview
This module is included in ActiveSupport::BroadcastLogger to enable broadcasting to tagged loggers with equivalent semantics.
Instance Method Summary collapse
Instance Method Details
#tagged(*tags, &block) ⇒ Object
7 8 9 10 11 12 13 14 15 16 17 18 19 20 21 22 23 24 25 |
# File 'lib/activesupport/tagged_logging/broadcasting.rb', line 7 def tagged(*, &block) return super unless broadcasts.any? { |logger| logger.respond_to?(:tagged) } if block_given? # `tagged(...) { |logger| ... }` yields itself to the block broadcasts.inject(block) do |block, logger| if logger.respond_to?(:tagged) proc { logger.tagged(*) { block.call(self) } } else block end end.call else # `tagged(...) returns a new logger with the tags pushed self.class.new(*broadcasts.map { |logger| logger.respond_to?(:tagged) ? logger.tagged(*) : logger }) end end |