Sha256: a6d3726be32beb27e73a5abb2cd9fab2db1b9a059c5c281198952c29745b2b64

Contents?: true

Size: 1.36 KB

Versions: 6

Compression:

Stored size: 1.36 KB

Contents

if defined? ActiveSupport::Callbacks
  
  module AfterCommit
    module ActiveSupportCallbacks
      def self.included(base)
        
        base::Callback.class_eval do
          def have_callback?
            true
          end
        end
        
        base::CallbackChain.class_eval do
          def have_callback?
            any? &:have_callback?
          end
        end
        
        base.class_eval do
          def have_callback?(*callbacks)
            self.class.observers.size > 0 or
            self.class.count_observers > 0 or
            callbacks.any? do |callback|
              self.class.send("#{callback}_callback_chain").have_callback?
            end
          end
        end
        
      end
    end
  end
  ActiveSupport::Callbacks.send(:include, AfterCommit::ActiveSupportCallbacks)
  
else
  
  class ActiveRecord::Base
    
    def self.define_callbacks(*names)
      names.each do |name|
        instance_eval <<-RUBY
          def #{name}(*callbacks, &block)
            callbacks << block if block_given?
            write_inheritable_array(:#{name}, callbacks)
          end
        RUBY
      end
    end
    
    def have_callback?(*names)
      self.class.observers.size > 0 or
      self.class.count_observers > 0 or
      names.any? do |name|
        !self.class.read_inheritable_attribute(name).blank?
      end
    end
    
  end
  
end

Version data entries

6 entries across 6 versions & 2 rubygems

Version Path
after_commit-1.0.11 lib/after_commit/active_support_callbacks.rb
after_commit-1.0.10 lib/after_commit/active_support_callbacks.rb
after_commit-1.0.9 lib/after_commit/active_support_callbacks.rb
after_commit-1.0.8 lib/after_commit/active_support_callbacks.rb
aleksi-after_commit-1.0.8 lib/after_commit/active_support_callbacks.rb
after_commit-1.0.7 lib/after_commit/active_support_callbacks.rb