# File lib/cabin/channel.rb, line 178 def publish(data, &block) event = {} self.class.actions.each do |action| action.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 |_, subscriber| append = block_given? ? block.call(subscriber, event) : true if append && self.class.allow_event?(event, subscriber) subscriber << event end end end end