© 2021 WebHive

Обзор конечных автоматов для Ruby

В одном из проектов количество состояний и вариантов поведения одной из моделей стало расти неприличными темпами — задумался о приведении этого хозяйства в порядок. Когда-то уже использовал библиотечки для конечных автоматов, но время не стоит на месте поэтому решил поискать что у нас есть на данный момент.

state_machine

state_machine

  • Хорошая документация
  • Поддержка ORM-ов — ActiveRecord, Mongodb, DataMapper, Sequel

FiniteMachine

FiniteMachine

Не интегрируется в ORM-ы — нужно использовать как отдельный объект

  • Активно развивается

AASM

AASM

  • Добавляет функционал к существующим классам
  • Поддержка ActiveRecord, Sequel, Mongoid
  • Активно развивается

Функционал очень близок к state_machine

Выводы

AASM на данный момент наиболее удобный и функциональные варианты

Есть ещё довольно много вариантов тут Ruby state machines

Источники

Комментарии