Ruby: Реальный Rails

Теория: FSM

Программа урока

  • Конфигурация AASM в проекте
  • AASM + ActiveRecord
  • Условия смены состояния
  • Транзакции и состояние гонки (race condition)
  • Тесты и AASM
  • AASM вне Rails

Пример класса с AASM.

class Job
  include AASM

  aasm do
    # Начальное состояние
    state :sleeping, initial: true
    state :running, :cleaning

    # Событие и переходы
    event :run do
      transitions from: :sleeping, to: :running
    end

    event :clean do
      transitions from: :running, to: :cleaning
    end

    event :sleep do
      # Одинаковое событие для перехода из нескольких состояний
      transitions from: [:running, :cleaning], to: :sleeping
    end
  end

end