module HasLifecycle::ClassMethods

ClassMethods

Public Instance Methods

_init_validation_hash() click to toggle source
# File lib/geoengineer/utils/has_lifecycle.rb, line 11
def _init_validation_hash
  {
    after: {},
    before: {}
  }
end
after(lifecycle_step, method_name_or_proc) click to toggle source

Currently only supporting after(:initialize)

# File lib/geoengineer/utils/has_lifecycle.rb, line 31
def after(lifecycle_step, method_name_or_proc)
  @_actions = _init_validation_hash unless @_actions
  @_actions[:after][lifecycle_step] = [] unless @_actions[:after][lifecycle_step]
  @_actions[:after][lifecycle_step] << method_name_or_proc
end
before(lifecycle_step, method_name_or_proc) click to toggle source
# File lib/geoengineer/utils/has_lifecycle.rb, line 37
def before(lifecycle_step, method_name_or_proc)
  @_actions = _init_validation_hash unless @_actions
  @_actions[:before][lifecycle_step] = [] unless @_actions[:before][lifecycle_step]
  @_actions[:before][lifecycle_step] << method_name_or_proc
end
lifecycle_actions(stage, step) click to toggle source
# File lib/geoengineer/utils/has_lifecycle.rb, line 18
def lifecycle_actions(stage, step)
  all = []
  # inherit lifecycle_actions
  sclazz = self.superclass
  all.concat(sclazz.lifecycle_actions(stage, step)) if sclazz.respond_to?(:lifecycle_actions)

  # Add this lifecycle actions
  la_exists = @_actions && @_actions[stage] && @_actions[stage][step]
  all.concat(@_actions[stage][step]) if la_exists
  all
end