Stateoscope
Visualize State Machines using GraphViz
External Dependencies
Stateoscope depends on GraphViz for generating the graphs. You need to make sure that GraphViz is properly installed on your system before you will be able to generate graphs. If you are on a Mac, you can install GraphViz via Homebrew
$ brew install graphviz
Installation
Add this line to your application's Gemfile:
gem 'stateoscope', '~> 0.1.3', group: :development
And then execute:
$ bundle
Using the rake task
To generate a state machine visualization for your Model
, run
rake 'stateoscope:visualize[Model]'
If you have multiple state machines defined on your model, you can pass the name of the state machine as second parameter
rake 'stateoscope:visualize[Model,specific_state_machine]'
If you want to highlight a specific state of your state machine, add the name as a third argument.
rake 'stateoscope:visualize[Order,order_state,delivered]'
In any case, a PDF file containing the graph visualization will be saved to the current directory.
Using Stateoscope directly
Stateoscope exposes a visualize
method that allows for a more fine-grained and dynamic usage.
Example:
filename = Stateoscope.visualize(
Order,
state_machine_name: "order_state",
current_state: "delivered",
dir: Rails.root.join("public"), # default current directory
format: "png" # default "pdf", possible are all formats that GraphViz supports
)
# filename will be for example RAILS_ROOT/public/order_state-20191201145422.png
Adapters
Stateoscope ships with adapters for the following state machine gems:
Development
After checking out the repo, run bin/setup
to install dependencies. Then, run rake spec
to run the tests. You can also run bin/console
for an interactive prompt that will allow you to experiment.
To install this gem onto your local machine, run bundle exec rake install
.
Release
To release a new version, perform the following steps:
- update changelog
- update version in
version.rb
- update version in the installation instructions in
README.rb
- run
bundle exec rake release
, which will create a git tag for the version, push git commits and tags, and push the.gem
file to rubygems.org - create a release for the new version on github.com
Contributing
Bug reports and pull requests are welcome on GitHub at https://github.com/padde/stateoscope.