1
0
Fork 0
mirror of https://github.com/aasm/aasm synced 2023-03-27 23:22:41 -04:00
AASM - State machines for Ruby classes (plain Ruby, ActiveRecord, Mongoid, NoBrainer, Dynamoid)
Find a file
Tim Pope d59dbbf6b0 Allow duplicate state names in subclasses
When an AASM including class is subclassed, a shallow copy is made of
the StateMachine object.  This means that all subclasses share the same
states hash and thus the same set of states, which prevents (among other
things) different subclasses from using the same state names.

Give StateMachine a smart #clone method that copies the states hash and
invoke that rather than #dup upon subclassing.
2008-11-05 11:06:36 -05:00
doc Prepare rakefile and rake tasks for gem packaging and rdocing 2008-02-21 11:41:56 -05:00
lib Allow duplicate state names in subclasses 2008-11-05 11:06:36 -05:00
spec Allow duplicate state names in subclasses 2008-11-05 11:06:36 -05:00
.gitignore Fixing version number in README.rdoc. 2008-07-09 16:42:04 -07:00
aasm.gemspec Sync up version numbers - bumping minor rev so the github gem rebuilds 2008-07-22 08:12:11 -04:00
aasm.rb Import into git 2008-01-07 14:11:38 -05:00
CHANGELOG update changelog 2008-06-23 09:02:21 -04:00
MIT-LICENSE Add .aasm_states method to get a list of all states for a class 2008-02-21 12:54:42 -05:00
Rakefile Version module is causing conflicts with other packages 2008-10-07 10:01:15 -04:00
README.rdoc Fixing version number in README.rdoc. 2008-07-09 16:42:04 -07:00
TODO Support enter and exit actions on states 2008-05-31 15:08:12 -07:00

= AASM - Ruby state machines

This package contains AASM, a library for adding finite state machines to Ruby classes.

AASM started as the acts_as_state_machine plugin but has evolved into a more generic library that no longer targets only ActiveRecord models.

AASM has the following features:

* States
* Machines
* Events
* Transitions

== Download

The latest AASM can currently be pulled from the git repository on github.

* http://github.com/rubyist/aasm/tree/master

A release and a gem are forthcoming.



== Installation

=== From GitHub hosted gems

  % sudo gem sources -a http://gems.github.com # (you only need to do this once)
  % sudo gem install rubyist-aasm

=== Building your own gems

  % rake gem
  % sudo gem install pkg/aasm-2.0.1.gem


== Simple Example

Here's a quick example highlighting some of the features.

  class Conversation
    include AASM

    aasm_initial_state :new

    aasm_state :new
    aasm_state :read
    aasm_state :closed


    aasm_event :view do
      transitions :to => :read, :from => [:new]
    end

    aasm_event :close do
      transitions :to => :closed, :from => [:read, :new]
    end
  end

= Other Stuff

Author::  Scott Barron <scott at elitists dot net>
License:: Copyright 2006, 2007, 2008 by Scott Barron.
          Released under an MIT-style license.  See the LICENSE  file
          included in the distribution.
Bugs::    http://rubyist.lighthouseapp.com/projects/13207-aasm/
GitHub::  http://github.com/rubyist/aasm/tree/master

== Warranty

This software is provided "as is" and without any express or
implied warranties, including, without limitation, the implied
warranties of merchantibility and fitness for a particular
purpose.