module Sequel::Plugins::Statesman

Constants

DEFAULTS
OPTS

Public Class Methods

configure(model, opts=OPTS) click to toggle source
# File lib/sequel/plugins/statesman.rb, line 20
def self.configure(model, opts=OPTS)
  opts = DEFAULTS.merge(opts)

  model.instance_eval do
    if opts[:state_machine_class].respond_to? :to_proc
      @state_machine_class = opts[:state_machine_class].call(self)
    else
      @state_machine_class = opts[:state_machine_class]
    end

    if opts[:transition_class].respond_to? :to_proc
      @transition_class = opts[:transition_class].call(self)
    else
      @transition_class = opts[:transition_class]
    end

    if opts[:define_state_methods]
      @state_machine_class.states.each do |state|
        define_method(:"#{state}!") do |metadata = {}|
          state_machine.transition_to!(state, metadata)
        end

        define_method(:"#{state}?") do
          current_state == state
        end
      end
    end

    if opts[:include_queries]
      include ::Statesman::Adapters::SequelQueries
    end

    if opts[:destroy_transitions]
      plugin :association_dependencies
      add_association_dependencies transition_name => :destroy
    end
  end
end
configure!(opts=OPTS) click to toggle source
# File lib/sequel/plugins/statesman.rb, line 16
def self.configure!(opts=OPTS)
  DEFAULTS.merge!(opts)
end