module ActiveRecord::Publishable

Constants

VERSION

Attributes

redis[W]

Public Class Methods

disable!() click to toggle source
# File lib/active_record/publishable.rb, line 13
def disable!
  @disabled = true
end
disabled?() click to toggle source
# File lib/active_record/publishable.rb, line 21
def disabled?
  !!@disabled
end
enable!() click to toggle source
# File lib/active_record/publishable.rb, line 17
def enable!
  @disabled = nil
end
included(base) click to toggle source
# File lib/active_record/publishable.rb, line 9
def included(base)
  base.extend ClassMethods
end
publish(channel, message) click to toggle source
# File lib/active_record/publishable.rb, line 29
def publish(channel, message)
  redis.publish(channel, message) unless disabled?
end
redis() click to toggle source
# File lib/active_record/publishable.rb, line 25
def redis
  @redis ||= Redis.new
end

Public Instance Methods

channel_for_publishing(action) click to toggle source
# File lib/active_record/publishable.rb, line 64
def channel_for_publishing(action)
  "#{self.class.model_name.collection}:#{action}"
end
publish_action(action, options = {}) click to toggle source
# File lib/active_record/publishable.rb, line 46
def publish_action(action, options = {})
  channel = options[:channel] || channel_for_publishing(action)
  data = serialize_for_publishing(options.fetch(:serialize, {}))

  ActiveRecord::Publishable.publish(channel, data.to_json)
end
serialize_for_publishing(options = {}) click to toggle source
# File lib/active_record/publishable.rb, line 53
def serialize_for_publishing(options = {})
  opts = options.reverse_merge(root: false).except(:with)

  serializer = options.fetch :with do
    next unless defined? ActiveModel::Serializer
    ActiveModel::Serializer.serializer_for self
  end

  serializer ? serializer.new(self, opts) : as_json(opts)
end