Module: ActiveSaga::DSL::Options

Included in:
Workflow
Defined in:
lib/active_saga/dsl/options.rb

Overview

Configuration helpers shared by workflows.

Class Method Summary collapse

Instance Method Summary collapse

Class Method Details

.extended(base) ⇒ Object



7
8
9
10
11
# File 'lib/active_saga/dsl/options.rb', line 7

def self.extended(base)
  base.class_attribute :_as_defaults, instance_writer: false, default: {}
  base.class_attribute :_as_timeout, instance_writer: false, default: nil
  base.class_attribute :_as_idempotency_block, instance_writer: false, default: nil
end

Instance Method Details

#defaults(opts = nil) ⇒ Object



13
14
15
16
17
18
19
# File 'lib/active_saga/dsl/options.rb', line 13

def defaults(opts = nil)
  if opts
    self._as_defaults = (_as_defaults.deep_dup || {}).deep_merge(opts.deep_symbolize_keys)
  else
    _as_defaults.deep_dup || {}
  end
end

#idempotency_key(&block) ⇒ Object



25
26
27
# File 'lib/active_saga/dsl/options.rb', line 25

def idempotency_key(&block)
  block ? self._as_idempotency_block = block : _as_idempotency_block
end

#resolve_defaults(step_options) ⇒ Object



29
30
31
# File 'lib/active_saga/dsl/options.rb', line 29

def resolve_defaults(step_options)
  defaults.deep_merge(step_options.deep_symbolize_keys)
end

#timeout(value = nil) ⇒ Object



21
22
23
# File 'lib/active_saga/dsl/options.rb', line 21

def timeout(value = nil)
  value ? self._as_timeout = value : _as_timeout
end