module Pusherable::ClassMethods
Public Class Methods
activate_pusherable_triggers()
click to toggle source
# File lib/pusherable.rb, line 24 def activate_pusherable_triggers Thread.current.thread_variable_set "#{self.name.underscore}_pusherable_triggers_active", true end
deactivate_pusherable_triggers()
click to toggle source
# File lib/pusherable.rb, line 28 def deactivate_pusherable_triggers Thread.current.thread_variable_set "#{self.name.underscore}_pusherable_triggers_active", false end
pusherable?()
click to toggle source
# File lib/pusherable.rb, line 32 def pusherable? true end
pusherable_channel(obj=nil)
click to toggle source
# File lib/pusherable.rb, line 36 def pusherable_channel(obj=nil) if pusherable_channel_obj.respond_to? :call if pusherable_channel_obj.arity > 0 pusherable_channel_obj.call(obj) else pusherable_channel_obj.call end else pusherable_channel_obj end end
pusherable_triggers?()
click to toggle source
# File lib/pusherable.rb, line 20 def pusherable_triggers? Thread.current.thread_variable_get("#{self.name.underscore}_pusherable_triggers_active") != false end
Public Instance Methods
pusherable(channel="test_channel")
click to toggle source
# File lib/pusherable.rb, line 13 def pusherable(channel="test_channel") raise "Please `gem install pusher` and configure it to run in your app!" if Pusher.app_id.blank? || Pusher.key.blank? || Pusher.secret.blank? class_attribute :pusherable_channel_obj self.pusherable_channel_obj = channel class << self def pusherable_triggers? Thread.current.thread_variable_get("#{self.name.underscore}_pusherable_triggers_active") != false end def activate_pusherable_triggers Thread.current.thread_variable_set "#{self.name.underscore}_pusherable_triggers_active", true end def deactivate_pusherable_triggers Thread.current.thread_variable_set "#{self.name.underscore}_pusherable_triggers_active", false end def pusherable? true end def pusherable_channel(obj=nil) if pusherable_channel_obj.respond_to? :call if pusherable_channel_obj.arity > 0 pusherable_channel_obj.call(obj) else pusherable_channel_obj.call end else pusherable_channel_obj end end end class_eval do if defined?(Mongoid) && defined?(Mongoid::Document) && include?(Mongoid::Document) after_create :pusherable_trigger_create, if: :pusherable_triggers? after_update :pusherable_trigger_update, if: :pusherable_triggers? before_destroy :pusherable_trigger_destroy, if: :pusherable_triggers? else after_commit :pusherable_trigger_create, on: :create, if: :pusherable_triggers? if defined?(Paranoia) && include?(Paranoia) after_update :pusherable_trigger_update, if: :pusherable_triggers? before_destroy :pusherable_trigger_destroy, if: :pusherable_triggers? else after_commit :pusherable_trigger_update, on: :update, if: :pusherable_triggers? after_commit :pusherable_trigger_destroy, on: :destroy, if: :pusherable_triggers? end end def pusherable_channel self.class.pusherable_channel(self) end [:pusherable_triggers?, :activate_pusherable_triggers, :deactivate_pusherable_triggers].each do |method| define_method method do self.class.send method end end private def pusherable_class_name self.class.name.underscore end def pusherable_trigger_create Pusher.trigger_async(pusherable_channel, "#{pusherable_class_name}.create", to_json) end def pusherable_trigger_update Pusher.trigger_async(pusherable_channel, "#{pusherable_class_name}.update", to_json) end def pusherable_trigger_destroy Pusher.trigger_async(pusherable_channel, "#{pusherable_class_name}.destroy", to_json) end end end
pusherable?()
click to toggle source
# File lib/pusherable.rb, line 9 def pusherable? false end
pusherable_channel()
click to toggle source
# File lib/pusherable.rb, line 66 def pusherable_channel self.class.pusherable_channel(self) end
pusherable_class_name()
click to toggle source
# File lib/pusherable.rb, line 78 def pusherable_class_name self.class.name.underscore end
pusherable_trigger_create()
click to toggle source
# File lib/pusherable.rb, line 82 def pusherable_trigger_create Pusher.trigger_async(pusherable_channel, "#{pusherable_class_name}.create", to_json) end
pusherable_trigger_destroy()
click to toggle source
# File lib/pusherable.rb, line 90 def pusherable_trigger_destroy Pusher.trigger_async(pusherable_channel, "#{pusherable_class_name}.destroy", to_json) end
pusherable_trigger_update()
click to toggle source
# File lib/pusherable.rb, line 86 def pusherable_trigger_update Pusher.trigger_async(pusherable_channel, "#{pusherable_class_name}.update", to_json) end