module Sinapse::Publishable

Public Class Methods

included(klass) click to toggle source
# File lib/sinapse/publishable.rb, line 6
def self.included(klass)
  klass.__send__ :alias_method, :publish, :sinapse_publish unless klass.respond_to?(:publish)
end

Private Class Methods

pack(message, options) click to toggle source
# File lib/sinapse/publishable.rb, line 21
def self.pack(message, options)
  data = options.is_a?(Hash) && options[:event] ? [options[:event].to_s, message.to_s] : message.to_s
  MessagePack.pack(data)
end

Public Instance Methods

sinapse_channel() click to toggle source
# File lib/sinapse/publishable.rb, line 15
def sinapse_channel
  [self.class.name.underscore.singularize, self.to_param].join(':')
end
sinapse_publish(message, options = nil) click to toggle source
# File lib/sinapse/publishable.rb, line 10
def sinapse_publish(message, options = nil)
  data = Publishable.pack(message, options)
  Sinapse.redis { |redis| redis.publish(sinapse_channel, data) }
end