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:
Or install it yourself as:
$ gem install state_machines-graphviz
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
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.
- Fork it ( https://github.com/seuros/state_machines-graphviz/fork )
- Create your feature branch (
git checkout -b my-new-feature)
- Commit your changes (
git commit -am 'Add some feature')
- Push to the branch (
git push origin my-new-feature)
- Create a new Pull Request