В одном из проектов количество состояний и вариантов поведения одной из моделей стало расти неприличными темпами — задумался о приведении этого хозяйства в порядок. Когда-то уже использовал библиотечки для конечных автоматов, но время не стоит на месте поэтому решил поискать что у нас есть на данный момент.
state_machine
- Хорошая документация
- Поддержка ORM-ов — ActiveRecord, Mongodb, DataMapper, Sequel
- Давно не обновлялась — выглядит заброшенной https://github.com/pluginaweek/state_machine/issues/310
FiniteMachine
Не интегрируется в ORM-ы — нужно использовать как отдельный объект
- Активно развивается
AASM
- Добавляет функционал к существующим классам
- Поддержка ActiveRecord, Sequel, Mongoid
- Активно развивается
Функционал очень близок к state_machine
Выводы
AASM на данный момент наиболее удобный и функциональные варианты
Есть ещё довольно много вариантов тут Ruby state machines
Комментарии