module RealtimeChange::Model::ClassMethods

Private Instance Methods

notifiable_in_realtime() click to toggle source
# File lib/realtime_change/model/class_methods.rb, line 5
def notifiable_in_realtime
  after_create :notify_create if respond_to?(:after_create)
  after_update :notify_update if respond_to?(:after_update)
  after_destroy :notify_destroy if respond_to?(:after_destroy)

  # Define an anonymous module for all of the instance methods.
  instance_methods = Module.new do
    def resource_content
      self.attributes
    end

    def recipient_uids
      []
    end

    def notify_create
      message = {
        type: 'change',
        action: 'create',
        resource: self.class.name,
        resource_content: resource_content,
        recipient_uids: recipient_uids
      }

      notify message
    end

    def notify_update
      message = {
        type: 'change',
        action: 'update',
        resource: self.class.name,
        resource_content: resource_content,
        recipient_uids: recipient_uids
      }

      notify message
    end

    def notify_destroy
      message = {
        type: 'change',
        action: 'destroy',
        resource: self.class.name,
        resource_content: resource_content,
        recipient_uids: recipient_uids
      }

      notify message
    end

    def notify(message)
      RealtimeChange.redis_pub.publish 'server-message', message.to_json
    end
  end

  include instance_methods
end
notify(message) click to toggle source
# File lib/realtime_change/model/class_methods.rb, line 56
def notify(message)
  RealtimeChange.redis_pub.publish 'server-message', message.to_json
end
notify_create() click to toggle source
# File lib/realtime_change/model/class_methods.rb, line 20
def notify_create
  message = {
    type: 'change',
    action: 'create',
    resource: self.class.name,
    resource_content: resource_content,
    recipient_uids: recipient_uids
  }

  notify message
end
notify_destroy() click to toggle source
# File lib/realtime_change/model/class_methods.rb, line 44
def notify_destroy
  message = {
    type: 'change',
    action: 'destroy',
    resource: self.class.name,
    resource_content: resource_content,
    recipient_uids: recipient_uids
  }

  notify message
end
notify_update() click to toggle source
# File lib/realtime_change/model/class_methods.rb, line 32
def notify_update
  message = {
    type: 'change',
    action: 'update',
    resource: self.class.name,
    resource_content: resource_content,
    recipient_uids: recipient_uids
  }

  notify message
end
recipient_uids() click to toggle source
# File lib/realtime_change/model/class_methods.rb, line 16
def recipient_uids
  []
end
resource_content() click to toggle source
# File lib/realtime_change/model/class_methods.rb, line 12
def resource_content
  self.attributes
end