class Triggerable::Actions::LambdaAction

Public Class Methods

new(block) click to toggle source
# File lib/triggerable/actions/lambda_action.rb, line 4
def initialize(block)
  @block = block
end

Public Instance Methods

run_for!(object, trigger_name) click to toggle source
# 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)
    paper_trail = (defined?(PaperTrail::Request) ? PaperTrail.request : PaperTrail) if change_whodunnit
    old_whodunnit = nil

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

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