| CARVIEW |
Every repository with this icon (
Every repository with this icon (
Run the following if you haven't already:
gem sources -a https://gems.github.com
Install the gem(s):
sudo gem install rubyist-aasm
| Description: | AASM - State machines for Ruby classes edit |
| Homepage: | https://rubyi.st/aasm edit |
| Public Clone URL: |
git://github.com/rubyist/aasm.git
Give this clone URL to anyone.
git clone git://github.com/rubyist/aasm.git
|
| Your Clone URL: |
Use this clone URL yourself.
git clone git@github.com:rubyist/aasm.git
|
| name | age | message | |
|---|---|---|---|
| |
.gitignore | Thu Feb 26 11:53:43 -0800 2009 | Added vim swapfiles to .gitignore [Scott Petersen] |
| |
CHANGELOG | Mon Jun 23 06:02:21 -0700 2008 | update changelog [Scott Barron] |
| |
MIT-LICENSE | Thu Feb 21 09:54:42 -0800 2008 | Add .aasm_states method to get a list of all st... [Scott Barron] |
| |
README.rdoc | Sun Jun 07 00:49:39 -0700 2009 | make documentation reflect reality [Travis Tilley] |
| |
Rakefile | Sat Aug 08 13:53:47 -0700 2009 | reorganize to match rubyist/aasm [ttilley] |
| |
TODO | Sat May 31 15:08:12 -0700 2008 | Support enter and exit actions on states [Scott Barron] |
| |
aasm.gemspec | Sat Aug 08 14:01:56 -0700 2009 | Merge branch 'master' of git://github.com/rubyi... [ttilley] |
| |
doc/ | Thu Feb 21 08:41:56 -0800 2008 | Prepare rakefile and rake tasks for gem packagi... [Scott Barron] |
| |
lib/ | Sat Aug 08 13:53:47 -0700 2009 | reorganize to match rubyist/aasm [ttilley] |
| |
spec/ | Sat Aug 08 13:53:47 -0700 2009 | reorganize to match rubyist/aasm [ttilley] |
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
New Callbacks
The callback chain & order on a successful event looks like:
oldstate:exit* event:before __find transition, if possible__ transition:on_transition* oldstate:before_exit newstate:before_enter newstate:enter* __update state__ event:success* oldstate:after_exit oldstate:after_enter event:after obj:aasm_event_fired* (*) marks old callbacks
Download
The latest AASM can currently be pulled from the git repository on github.
Installation
From GitHub hosted gems
% sudo gem sources -a https://gems.github.com # (you only need to do this once) % sudo gem install ttilley-aasm
Building your own gems
% rake gem % sudo gem install pkg/aasm-2.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
A Slightly More Complex Example
This example uses a few of the more complex features available.
class Relationship
include AASM
aasm_initial_state Proc.new { |relationship| relationship.strictly_for_fun? ? :intimate : :dating }
aasm_state :dating, :enter => :make_happy, :exit => :make_depressed
aasm_state :intimate, :enter => :make_very_happy, :exit => :never_speak_again
aasm_state :married, :enter => :give_up_intimacy, :exit => :buy_exotic_car_and_wear_a_combover
aasm_event :get_intimate do
transitions :to => :intimate, :from => [:dating], :guard => :drunk?
end
aasm_event :get_married do
transitions :to => :married, :from => [:dating, :intimate], :guard => :willing_to_give_up_manhood?
end
def strictly_for_fun?; end
def drunk?; end
def willing_to_give_up_manhood?; end
def make_happy; end
def make_depressed; end
def make_very_happy; end
def never_speak_again; end
def give_up_intimacy; end
def buy_exotic_car_and_wear_a_combover; end
end
Other Stuff
| Author: | Scott Barron <scott at elitists dot net> |
| License: | Original code Copyright 2006, 2007, 2008 by Scott Barron. Released under an MIT-style license. See the LICENSE file included in the distribution. |
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.












