Sha256: 1544606d7b8d8eecae58f03daa6eeb95fa7ae4638bc8ae6b6959d09a28eb31a4
Contents?: true
Size: 1.01 KB
Versions: 2
Compression:
Stored size: 1.01 KB
Contents
class Reactor::Subscriber < ActiveRecord::Base attr_accessor :message def event=(event) write_attribute :event, event.to_s end def fire(data) self.message = Reactor::Event.new(data) instance_exec &self.class.on_fire self end class << self def on_fire(&block) if block @fire_block = block end @fire_block end def fire(subscriber_id, data) Reactor::Subscriber.find(subscriber_id).fire data end def subscribes_to(name = nil, data = {}) #subscribers << name #TODO: REMEMBER SUBSCRIBERS so we can define them in code as well as with a row in the DB # until then, here's a helper to make it easy to create with random data in postgres # total crap I know but whatever define_singleton_method :exists! do chain = where(event: name) data.each do |key, value| chain = chain.where("subscribers.data @> ?", "#{key}=>#{value}") end chain.first_or_create!(data) end end end end
Version data entries
2 entries across 2 versions & 1 rubygems
Version | Path |
---|---|
reactor-0.6.2 | lib/reactor/models/subscriber.rb |
reactor-0.6.1 | lib/reactor/models/subscriber.rb |