Module: Granite::Action::Performing

Extended by:
ActiveSupport::Concern
Includes:
ExceptionsHandling, Transaction
Included in:
Granite::Action
Defined in:
lib/granite/action/performing.rb

Overview

Performing module used for defining perform procedure and error handling. Perform procedure is defined as block, which is executed in action instance context so all attributes are available there. Actions by default are performed in silent way (no validation exception raised), to raise exceptions, call bang method #perform!

Defined exceptions handlers are also executed in action instance context, but additionally get raised exception as parameter.

Defined Under Namespace

Modules: ClassMethods

Instance Method Summary collapse

Methods included from Transaction

#run_callbacks

Instance Method Details

#perform(context: nil, **options) ⇒ Object

Check preconditions and validations for action and associated objects, then in case of valid action run defined procedure. Procedure is wrapped with database transaction. Returns the result of execute_perform! method execution or true if method execution returned false or nil

Parameters:

  • context (Symbol) (defaults to: nil)

    can be optionally provided to define which validations to test against (the context is defined on validations using ‘:on`)

Returns:

  • (Object)

    result of execute_perform! method execution or false in case of errors



43
44
45
46
47
# File 'lib/granite/action/performing.rb', line 43

def perform(context: nil, **options)
  transaction do
    valid?(context) && perform_action(options)
  end
end

#perform!(context: nil, **options) ⇒ Object

Check precondition and validations for action and associated objects, then raise exception in case of validation errors. In other case run defined procedure. Procedure is wraped with database transaction. After procedure execution check for errors, and raise exception if any. Returns the result of execute_perform! method execution or true if block execution returned false or nil

Parameters:

  • context (Symbol) (defaults to: nil)

    can be optionally provided to define which validations to test against (the context is defined on validations using ‘:on`)

Returns:

  • (Object)

    result of execute_perform! method execution

Raises:



61
62
63
64
65
66
# File 'lib/granite/action/performing.rb', line 61

def perform!(context: nil, **options)
  transaction do
    validate!(context)
    perform_action!(**options)
  end
end

#performed?Boolean

Checks if action was successfully performed or not

Returns:

  • (Boolean)

    whether action was successfully performed or not



88
89
90
# File 'lib/granite/action/performing.rb', line 88

def performed?
  @_action_performed.present?
end

#try_perform!(context: nil, **options) ⇒ Object

Performs action if preconditions are satisfied.

Parameters:

  • context (Symbol) (defaults to: nil)

    can be optionally provided to define which validations to test against (the context is defined on validations using ‘:on`)

Returns:

  • (Object)

    result of execute_perform! method execution

Raises:



76
77
78
79
80
81
82
83
# File 'lib/granite/action/performing.rb', line 76

def try_perform!(context: nil, **options)
  return unless satisfy_preconditions?

  transaction do
    validate!(context)
    perform_action!(**options)
  end
end