module Workflow

See also README.markdown for documentation

Constants

VERSION

Public Class Methods

included(klass) click to toggle source
# File lib/workflow.rb, line 250
def self.included(klass)
  klass.send :include, InstanceMethods

  # backup the parent workflow spec, making accessible through #inherited_workflow_spec
  if klass.superclass.respond_to?(:workflow_spec, true)
    klass.module_eval do
      # see http://stackoverflow.com/a/2495650/111995 for implementation explanation
      pro = Proc.new { klass.superclass.workflow_spec }
      singleton_class = class << self; self; end
      singleton_class.send(:define_method, :inherited_workflow_spec) do
        pro.call
      end
    end
  end

  klass.extend ClassMethods

  # Look for a hook; otherwise detect based on ancestor class.
  if klass.respond_to?(:workflow_adapter)
    klass.send :include, klass.workflow_adapter
  end
end