public
Rubygem
Description: AASM - State machines for Ruby classes
Homepage: http://rubyi.st/aasm
Clone URL: git://github.com/rubyist/aasm.git
Click here to lend your support to: aasm and make a donation at www.pledgie.com !
js (author)
Fri Feb 06 06:49:24 -0800 2009
rubyist (committer)
Fri Feb 06 07:34:41 -0800 2009
aasm /
name age message
file .gitignore Wed Jul 09 16:42:04 -0700 2008 Fixing version number in README.rdoc. [Eric Lindvall]
file CHANGELOG Mon Jun 23 06:02:21 -0700 2008 update changelog [rubyist]
file MIT-LICENSE Thu Feb 21 09:54:42 -0800 2008 Add .aasm_states method to get a list of all st... [rubyist]
file README.rdoc Mon Dec 29 07:05:07 -0800 2008 Fix misleading example which uses a 'new' state... [rubyist]
file Rakefile Fri Dec 12 07:05:09 -0800 2008 exclude rcov.rb from rcov report [rubyist]
file TODO Sat May 31 15:08:12 -0700 2008 Support enter and exit actions on states [rubyist]
file aasm.gemspec Tue Dec 30 06:59:07 -0800 2008 bump revision [rubyist]
file aasm.rb Mon Jan 07 11:11:38 -0800 2008 Import into git [rubyist]
directory doc/ Thu Feb 21 08:41:56 -0800 2008 Prepare rakefile and rake tasks for gem packagi... [rubyist]
directory lib/ Fri Feb 06 07:34:41 -0800 2009 Ruby 1.9 compat Signed-off-by: Scott Barron <s... [js]
directory spec/ Tue Dec 30 06:54:12 -0800 2008 Don't add named_scope if the ActiveRecord objec... [joshknowles]

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.

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 :unread

    aasm_state :unread
    aasm_state :read
    aasm_state :closed

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

    aasm_event :close do
      transitions :to => :closed, :from => [:read, :unread]
    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:rubyist.lighthouseapp.com/projects/13207-aasm/
GitHub: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.