module SSM::Event::ClassMethods

Public Instance Methods

guard(resource) { || ... } click to toggle source
# File lib/ssm/event.rb, line 12
def guard(resource, &block)
  success = @guards&.reduce(true) do |memo, guard|
    resource.send(guard) && memo
  end
  return(yield) if success || @guards.blank?
  resource.reload
  false
end
guards(*guards) click to toggle source
# File lib/ssm/event.rb, line 8
def guards(*guards)
  @guards = guards
end
transition!(resource, to:) { || ... } click to toggle source
# File lib/ssm/event.rb, line 21
def transition!(resource, to:, &block)
  @from = resource.state
  ActiveRecord::Base.transaction do
    resource.state = to
    resource.save!
    yield if block_given?
  end
rescue ActiveRecord::RecordInvalid
  resource.state = @from
  raise SSM::InvalidTransition
end