Module: TransactionalOutbox::Event::Contextable
- Included in:
- TransactionalOutbox::Event
- Defined in:
- lib/transactional_outbox/event/contextable.rb
Class Method Summary collapse
Instance Method Summary collapse
Class Method Details
.extended(klass) ⇒ Object
6 7 8 9 10 11 12 13 14 15 16 |
# File 'lib/transactional_outbox/event/contextable.rb', line 6 def self.extended(klass) klass.define_method(:validate_context!) do |params| ctx_schema = self.class.instance_variable_get(:@__context_schema__) return true unless ctx_schema result = ctx_schema.call(params) self.class.check_context_validation_result!(result) end end |
Instance Method Details
#check_context_validation_result!(result) ⇒ Object
18 19 20 21 22 23 24 25 26 |
# File 'lib/transactional_outbox/event/contextable.rb', line 18 def check_context_validation_result!(result) return true if result.success? errors = result...map do || "#{.path.join("->")} #{.text}" end.join(", ") raise TransactionalOutbox::InvalidContextError, "Invalid context error: #{errors}" end |
#context(&block) ⇒ Object
28 29 30 |
# File 'lib/transactional_outbox/event/contextable.rb', line 28 def context(&block) @__context_schema__ ||= Class.new(Dry::Validation::Contract).class_exec { params(&block) } if block end |