Graphviz module for state machines
Switch branches/tags
Nothing to show
Clone or download
Fetching latest commit…
Cannot retrieve the latest commit at this time.
Permalink
Failed to load latest commit information.
lib
test
.gitignore
.rspec
.travis.yml
Gemfile
LICENSE.txt
README.md
Rakefile
state_machines-graphviz.gemspec

README.md

StateMachines::Graphviz

This adds support for generating di-graphs based on the events, states, and transitions defined for a state machine using GraphViz.

Installation

Add this line to your application's Gemfile:

gem 'state_machines-graphviz' , group: :development

And then execute:

$ bundle

Or install it yourself as:

$ gem install state_machines-graphviz

Usage

The default output folder for the images is doc/state_machines.

Examples

To generate a graph for a specific file / class:

rake state_machines:draw FILE=vehicle.rb CLASS=Vehicle

From a Rails app directory:

rake state_machines:draw CLASS=Vehicle

To save files to a specific path:

rake state_machines:draw FILE=vehicle.rb CLASS=Vehicle TARGET=files

To customize the image format / orientation:

rake state_machines:draw FILE=vehicle.rb CLASS=Vehicle FORMAT=jpg ORIENTATION=landscape

See http://rdoc.info/github/glejeune/Ruby-Graphviz/GraphViz/Constants for the list of supported image formats. If resolution is an issue, the svg format may offer better results.

To generate multiple state machine graphs:

rake state_machines:draw FILE=vehicle.rb,car.rb CLASS=Vehicle,Car

To use human state / event names:

rake state_machines:draw FILE=vehicle.rb CLASS=Vehicle HUMAN_NAMES=true

Note that this will generate a different file for every state machine defined in the class. The generated files will use an output filename of the format #{class_name}_#{machine_name}.#{format}.

For examples of actual images generated using this task, see those under the examples folder.

Interactive graphs

Jean Bovet's Visual Automata Simulator is a great tool for "simulating, visualizing and transforming finite state automata and Turing Machines". It can help in the creation of states and events for your models. It is cross-platform, written in Java.

Contributing

  1. Fork it ( https://github.com/state-machines/state_machines-graphviz/fork )
  2. Create your feature branch (git checkout -b my-new-feature)
  3. Commit your changes (git commit -am 'Add some feature')
  4. Push to the branch (git push origin my-new-feature)
  5. Create a new Pull Request