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
12
# 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
  base.class_attribute :_as_queue, instance_writer: false, default: nil
end

Instance Method Details

#defaults(opts = nil) ⇒ Object



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

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



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

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

#queue(value = nil) ⇒ Object



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

def queue(value = nil)
  value ? self._as_queue = value : _as_queue
end

#resolve_defaults(step_options) ⇒ Object



34
35
36
37
38
# File 'lib/active_saga/dsl/options.rb', line 34

def resolve_defaults(step_options)
  base_defaults = defaults
  base_defaults[:queue] ||= _as_queue if _as_queue
  base_defaults.deep_merge(step_options.deep_symbolize_keys)
end

#timeout(value = nil) ⇒ Object



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

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