Why is StateFu different to the other twenty state machines for Ruby?
State machines are potentially a powerful way to simplify and structure a lot of problems. They can be used to: • succinctly define the grammar of a networking protocol or a configuration DSL • clearly and compactly describe complex logic, which might otherwise be difficult to understand by playing “follow the rabbit” through methods thick with implementation details • serialize and process multiple revisions of changing business rules • provide an abstract representation of program or domain behaviour which can be introspected, edited, queried and executed on the fly, in a high-level and human-readable format • provide a straightforward and easy way to record and validate “status” information, especially when there are rules governing when and how it can be updated • reduce proliferation of classes and modules, or easily define and control functionally related groups of objects, by defining behaviours on interacting components of a state machine • elegantly implement simple building b