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