Class: Triggerable::Actions::LambdaAction

Inherits:
Action
  • Object
show all
Defined in:
lib/triggerable/actions/lambda_action.rb

Instance Method Summary collapse

Methods inherited from Action

build

Constructor Details

#initialize(block) ⇒ LambdaAction

Returns a new instance of LambdaAction.



4
5
6
# File 'lib/triggerable/actions/lambda_action.rb', line 4

def initialize block
  @block = block
end

Instance Method Details

#run_for!(object, trigger_name) ⇒ Object



8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
# File 'lib/triggerable/actions/lambda_action.rb', line 8

def run_for! object, trigger_name
  proc = @block
  object.instance_eval do
    change_whodunnit = trigger_name.present? && defined?(PaperTrail)
    old_whodunnit = nil

    if change_whodunnit
      old_whodunnit = PaperTrail.whodunnit
      PaperTrail.whodunnit = trigger_name
    end

    begin
      instance_exec(&proc)
    ensure
      PaperTrail.whodunnit = old_whodunnit if change_whodunnit
    end
  end
end