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