Module: AfterCommit

Defined in:
lib/after_commit.rb

Defined Under Namespace

Modules: ActiveRecord, ConnectionAdapters

Class Method Summary collapse

Class Method Details

.clearObject



7
8
9
# File 'lib/after_commit.rb', line 7

def self.clear
  Thread.current[:after_commit] = nil
end

.touched_records(type) ⇒ Object



2
3
4
5
# File 'lib/after_commit.rb', line 2

def self.touched_records(type)
  h = (Thread.current[:after_commit] ||= {})
  h[type] ||= []
end

.triggerObject



11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
# File 'lib/after_commit.rb', line 11

def self.trigger
  begin
    [:create, :update, :destroy].each do |type|
      callback_name = "after_commit_on_#{type}"
      touched_records(type).each do |record|
        begin
          record.send(callback_name) if record.respond_to?(callback_name)
        rescue => e
          puts e
        end
      end
    end
  ensure
    self.clear
  end
end