Graphviz module for state machines
This adds support for generating di-graphs based on the
events, states, and transitions defined for a state machine using GraphViz.
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
The default output folder for the images is doc/state_machines
.
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.
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.
git checkout -b my-new-feature
)git commit -am 'Add some feature'
)git push origin my-new-feature
)