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