# File lib/cabin/channel.rb, line 160 def publish(data, &block) event = {} self.class.filters.each do |filter| filter.call(event) end if data.is_a?(String) event[:message] = data else event.merge!(data) end event.merge!(@data) # Merge any logger context @subscriber_lock.synchronize do @subscribers.each do |id, output| append = block_given? ? block.call(output, event) : true output << event if append end end end