public
Rubygem
Description: AASM - State machines for Ruby classes
Homepage: http://rubyi.st/aasm
Clone URL: git://github.com/rubyist/aasm.git
Search Repo:
Click here to lend your support to: aasm and make a donation at www.pledgie.com !
aasm /
name age message
folder .gitignore Wed Jul 09 16:42:04 -0700 2008 Fixing version number in README.rdoc. [eric]
folder CHANGELOG Mon Jun 23 06:02:21 -0700 2008 update changelog [rubyist]
folder MIT-LICENSE Thu Feb 21 09:54:42 -0800 2008 Add .aasm_states method to get a list of all st... [rubyist]
folder README.rdoc Wed Jul 09 16:42:04 -0700 2008 Fixing version number in README.rdoc. [eric]
folder Rakefile Thu May 29 13:27:44 -0700 2008 That doesn't work [rubyist]
folder TODO Sat May 31 15:08:12 -0700 2008 Support enter and exit actions on states [rubyist]
folder aasm.gemspec Tue Jul 22 05:12:11 -0700 2008 Sync up version numbers - bumping minor rev so ... [rubyist]
folder aasm.rb Mon Jan 07 11:11:38 -0800 2008 Import into git [rubyist]
folder doc/ Thu Feb 21 08:41:56 -0800 2008 Prepare rakefile and rake tasks for gem packagi... [rubyist]
folder lib/ Tue Jul 22 05:12:11 -0700 2008 Sync up version numbers - bumping minor rev so ... [rubyist]
folder spec/ Sun Jun 22 08:17:12 -0700 2008 Take state column for AR persistance out of cla... [rubyist]
README.rdoc

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
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.