class Interactor::Schema::Context
Attributes
table[R]
Public Class Methods
build(context = {}, schema = [])
click to toggle source
# File lib/interactor/schema/context.rb, line 4 def self.build(context = {}, schema = []) self === context ? context : new(schema).tap do |instance| instance.assign(context) end end
new(schema = [])
click to toggle source
# File lib/interactor/schema/context.rb, line 10 def initialize(schema = []) @schema = schema @table = {} define_schema_methods(schema) end
Public Instance Methods
[](key)
click to toggle source
# File lib/interactor/schema/context.rb, line 16 def [](key) @table[key] end
_called()
click to toggle source
# File lib/interactor/schema/context.rb, line 49 def _called @called ||= [] end
_schema()
click to toggle source
# File lib/interactor/schema/context.rb, line 53 def _schema @schema end
assign(context)
click to toggle source
# File lib/interactor/schema/context.rb, line 20 def assign(context) filtered_context = context.to_h.select { |k, _| _schema.include?(k) } @table.merge!(filtered_context) end
called!(interactor)
click to toggle source
# File lib/interactor/schema/context.rb, line 39 def called!(interactor) _called << interactor end
fail!(context = {})
click to toggle source
# File lib/interactor/schema/context.rb, line 33 def fail!(context = {}) @table.merge!(context) @failure = true raise Interactor::Failure, self end
failure?()
click to toggle source
# File lib/interactor/schema/context.rb, line 29 def failure? @failure || false end
rollback!()
click to toggle source
# File lib/interactor/schema/context.rb, line 43 def rollback! return false if @rolled_back _called.reverse_each(&:rollback) @rolled_back = true end
success?()
click to toggle source
# File lib/interactor/schema/context.rb, line 25 def success? !failure? end
to_h()
click to toggle source
# File lib/interactor/schema/context.rb, line 57 def to_h @table end
Private Instance Methods
define_schema_methods(schema)
click to toggle source
# File lib/interactor/schema/context.rb, line 65 def define_schema_methods(schema) singleton_class.class_exec(schema) do |names| names.each do |name| define_method(name) do @table[name] end define_method("#{name}=") do |value| @table[name] = value end end end end