module Deferrable

Constants

VERSION

Public Class Methods

included(klass) click to toggle source
# File lib/deferrable.rb, line 10
def self.included(klass)
  klass.extend(ClassMethods)
end

Public Instance Methods

_deferred_stack(method_name) click to toggle source
# File lib/deferrable.rb, line 20
def _deferred_stack(method_name)
  if instance_variable_get("@_deferred_stack_#{method_name}").is_a?(Stack)
    instance_variable_get("@_deferred_stack_#{method_name}")
  else
    instance_variable_set("@_deferred_stack_#{method_name}", Stack.new(context: self))
  end
end
_execute_deferred_stack(method_name) click to toggle source
# File lib/deferrable.rb, line 32
def _execute_deferred_stack(method_name)
  _deferred_stack(method_name).execute
end
_reset_deferred_stack(method_name) click to toggle source
# File lib/deferrable.rb, line 28
def _reset_deferred_stack(method_name)
  instance_variable_set("@_deferred_stack_#{method_name}", nil)
end
defer(&block) click to toggle source
# File lib/deferrable.rb, line 14
def defer(&block)
  deferred_in_method = caller_locations(1, 1).first.label.to_sym

  _deferred_stack(deferred_in_method).add(&block)
end