class Pushr::Message

Attributes

app[RW]
external_id[RW]
type[RW]

Public Class Methods

create(attributes = {}) click to toggle source
# File lib/pushr/message.rb, line 23
def self.create(attributes = {})
  m = new(attributes)
  m.save
  m
end
create!(attributes = {}) click to toggle source
# File lib/pushr/message.rb, line 29
def self.create!(attributes = {})
  m = new(attributes)
  unless m.save
    raise Pushr::Error::RecordInvalid
  end
  m
end
instantiate(message) click to toggle source
# File lib/pushr/message.rb, line 48
def self.instantiate(message)
  return nil unless message
  hsh = ::MultiJson.load(message)
  klass = hsh['type'].split('::').reduce(Object) { |a, e| a.const_get e }
  klass.new(hsh)
end
new(attributes = {}) click to toggle source
# File lib/pushr/message.rb, line 8
def initialize(attributes = {})
  attributes.each do |name, value|
    send("#{name}=", value) if respond_to?("#{name}=")
  end
end
next(queue_name, timeout = 3) click to toggle source
# File lib/pushr/message.rb, line 41
def self.next(queue_name, timeout = 3)
  Pushr::Core.redis do |conn|
    message = conn.blpop(queue_name, timeout: timeout)
    return instantiate(message[1]) if message
  end
end

Public Instance Methods

save() click to toggle source
# File lib/pushr/message.rb, line 14
def save
  if valid?
    Pushr::Core.redis { |conn| conn.rpush("pushr:#{app}:#{self.class::POSTFIX}", to_json) }
    return true
  else
    return false
  end
end
to_json() click to toggle source
# File lib/pushr/message.rb, line 37
def to_json
  MultiJson.dump(to_hash)
end