Class: RubyReactor::Dsl::InterruptBuilder
- Inherits:
-
StepBuilder
- Object
- StepBuilder
- RubyReactor::Dsl::InterruptBuilder
- Defined in:
- lib/ruby_reactor/dsl/interrupt_builder.rb
Constant Summary
Constants included from StepSignals
Instance Attribute Summary
Attributes inherited from StepBuilder
#args_validator, #arguments, #compensate_block, #conditions, #dependencies, #guards, #impl, #name, #output_validator, #retry_config, #run_block, #undo_block
Instance Method Summary collapse
- #build ⇒ Object
- #correlation_id(&block) ⇒ Object
-
#initialize(name, reactor = nil, resume: :inline) ⇒ InterruptBuilder
constructor
A new instance of InterruptBuilder.
- #max_attempts(count) ⇒ Object
- #timeout(seconds, strategy: :lazy) ⇒ Object
-
#validate(schema = nil, &block) ⇒ Object
Deprecated alias for #validate_payload.
-
#validate_payload(schema = nil, &block) ⇒ Object
Validate the resume payload.
Methods inherited from StepBuilder
#argument, #async, #compensate, #guard, #retries, #run, #undo, #validate_args, #validate_output, #wait_for, #where
Methods included from ValidationHelpers
#build_args_validator, #build_inline_validator, #build_macro_validator, #build_scalar_validator, #build_validation_schema, #create_input_validator
Methods included from TemplateHelpers
#Failure, #Halt, #Skipped, #Success, #element, #input, #result, #value
Methods included from StepSignals
#fail!, #halt!, #skip!, #success!
Constructor Details
#initialize(name, reactor = nil, resume: :inline) ⇒ InterruptBuilder
Returns a new instance of InterruptBuilder.
6 7 8 9 10 11 12 13 |
# File 'lib/ruby_reactor/dsl/interrupt_builder.rb', line 6 def initialize(name, reactor = nil, resume: :inline) super(name, nil, reactor) @correlation_id_block = nil @timeout_config = nil @validation_schema = nil @max_attempts = 1 @resume_mode = resume end |
Instance Method Details
#build ⇒ Object
48 49 50 51 52 53 54 55 56 57 58 59 60 61 62 |
# File 'lib/ruby_reactor/dsl/interrupt_builder.rb', line 48 def build step_config = { name: @name, correlation_id_block: @correlation_id_block, timeout_config: @timeout_config, validation_schema: @validation_schema, max_attempts: @max_attempts, resume_mode: @resume_mode, dependencies: @dependencies, conditions: @conditions, guards: @guards } RubyReactor::Dsl::InterruptStepConfig.new(step_config) end |
#correlation_id(&block) ⇒ Object
19 20 21 |
# File 'lib/ruby_reactor/dsl/interrupt_builder.rb', line 19 def correlation_id(&block) @correlation_id_block = block end |
#max_attempts(count) ⇒ Object
15 16 17 |
# File 'lib/ruby_reactor/dsl/interrupt_builder.rb', line 15 def max_attempts(count) @max_attempts = count end |
#timeout(seconds, strategy: :lazy) ⇒ Object
23 24 25 |
# File 'lib/ruby_reactor/dsl/interrupt_builder.rb', line 23 def timeout(seconds, strategy: :lazy) @timeout_config = { duration: seconds, strategy: strategy } end |
#validate(schema = nil, &block) ⇒ Object
Deprecated alias for #validate_payload.
40 41 42 43 44 45 46 |
# File 'lib/ruby_reactor/dsl/interrupt_builder.rb', line 40 def validate(schema = nil, &block) unless @warned_validate @warned_validate = true warn "[RubyReactor] DEPRECATION: interrupt `validate` is deprecated; use `validate_payload` instead." end validate_payload(schema, &block) end |
#validate_payload(schema = nil, &block) ⇒ Object
Validate the resume payload. Accepts a block (schema DSL) or a pre-built dry-schema. Payloads are multi-field hashes, so the block stays primary.
29 30 31 32 33 34 35 36 37 |
# File 'lib/ruby_reactor/dsl/interrupt_builder.rb', line 29 def validate_payload(schema = nil, &block) check_dry_validation_available! @validation_schema = if block build_validation_schema(&block) elsif schema RubyReactor::Validation::SchemaBuilder.schema_for(schema) end end |