Module: Promiscuous::Publisher::Model::ClassMethods

Defined in:
lib/promiscuous/publisher/model.rb

Instance Method Summary collapse

Instance Method Details

#setup_class_bindingObject



18
19
20
21
22
23
24
25
26
27
28
29
30
31
32
33
34
35
36
37
38
# File 'lib/promiscuous/publisher/model.rb', line 18

def setup_class_binding
  super
  klass.class_eval do
    cattr_accessor :publisher_operation_hooked
    return if self.publisher_operation_hooked
    self.publisher_operation_hooked = true

    [:create, :update, :destroy].each do |operation|
      __send__("after_#{operation}", "promiscuous_publish_#{operation}".to_sym)
      define_method "promiscuous_publish_#{operation}" do
        self.class.promiscuous_publisher.new(:instance => self, :operation => operation).publish
      end
    end

    def promiscuous_sync(options={})
      options = options.merge({ :instance => self, :operation => :update, :defer => false })
      self.class.promiscuous_publisher.new(options).publish
      true
    end
  end if klass
end