class RestMyCase::Base
Attributes
context[R]
INSTANCE METHODS BELLOW ###########################
options[R]
INSTANCE METHODS BELLOW ###########################
Public Class Methods
context_accessor(*methods)
click to toggle source
# File lib/rest_my_case/base.rb, line 42 def self.context_accessor(*methods) context_writer(*methods) context_reader(*methods) end
context_reader(*methods)
click to toggle source
# File lib/rest_my_case/base.rb, line 53 def self.context_reader(*methods) methods.each { |method| define_method(method) { context.send(method) } } end
context_writer(*methods)
click to toggle source
# File lib/rest_my_case/base.rb, line 47 def self.context_writer(*methods) methods.each do |method| define_method("#{method}=") { |value| context.send "#{method}=", value } end end
dependencies()
click to toggle source
# File lib/rest_my_case/base.rb, line 28 def self.dependencies @dependencies ||= [] end
depends(*use_case_classes)
click to toggle source
# File lib/rest_my_case/base.rb, line 24 def self.depends(*use_case_classes) dependencies.concat(use_case_classes) end
new(context, dependent_use_case = nil)
click to toggle source
# File lib/rest_my_case/base.rb, line 61 def initialize(context, dependent_use_case = nil) @context = context @options = { dependent_use_case: dependent_use_case } return unless dependent_use_case @options[:silent_abort] = RestMyCase.get_config \ :silence_dependencies_abort, dependent_use_case.class end
perform(attributes = nil)
click to toggle source
# File lib/rest_my_case/base.rb, line 32 def self.perform(attributes = nil) attributes ||= {} unless attributes.respond_to?(:to_hash) raise ArgumentError, 'Must respond_to method #to_hash' end trial_court.execute([self], attributes.to_hash).context end
required_context(*schema)
click to toggle source
# File lib/rest_my_case/base.rb, line 10 def self.required_context(*schema) @required_context_schema = schema if schema.length == 1 && (schema[0].is_a?(Hash) || schema[0].is_a?(Array)) @required_context_schema = schema[0] end @required_context_schema.each { |context_key| context_reader context_key } end
required_context_schema()
click to toggle source
# File lib/rest_my_case/base.rb, line 20 def self.required_context_schema @required_context_schema ||= {} end
trial_court()
click to toggle source
# File lib/rest_my_case/base.rb, line 5 def self.trial_court @trial_court ||= Trial::Court.new \ Judge::Base, DefenseAttorney::Base, RestMyCase::Base, Context::Base end
Public Instance Methods
abort()
click to toggle source
# File lib/rest_my_case/base.rb, line 91 def abort if options[:silent_abort] options[:dependent_use_case].abort else options[:should_abort] = true end end
abort!()
click to toggle source
# File lib/rest_my_case/base.rb, line 99 def abort! abort && raise(Errors::Abort) end
error(error_message = '')
click to toggle source
# File lib/rest_my_case/base.rb, line 103 def error(error_message = '') error_data = \ error_message.is_a?(Hash) ? error_message : { message: error_message } error_data[:class_name] = self.class.name abort && context.errors.add(error_data) end
error!(error_data = '')
click to toggle source
# File lib/rest_my_case/base.rb, line 112 def error!(error_data = '') error(error_data) && raise(Errors::Abort) end
final()
click to toggle source
# File lib/rest_my_case/base.rb, line 77 def final; end
invoke(*use_case_classes)
click to toggle source
# File lib/rest_my_case/base.rb, line 79 def invoke(*use_case_classes) self.class.trial_court.execute(use_case_classes, context.to_hash).context end
invoke!(*use_case_classes)
click to toggle source
# File lib/rest_my_case/base.rb, line 83 def invoke!(*use_case_classes) trial_case = self.class.trial_court.execute(use_case_classes, context) abort! if trial_case.aborted trial_case.context end
perform()
click to toggle source
# File lib/rest_my_case/base.rb, line 73 def perform; end
rollback()
click to toggle source
# File lib/rest_my_case/base.rb, line 75 def rollback; end
setup()
click to toggle source
# File lib/rest_my_case/base.rb, line 71 def setup; end
skip()
click to toggle source
# File lib/rest_my_case/base.rb, line 116 def skip options[:should_skip] = true end
skip!()
click to toggle source
# File lib/rest_my_case/base.rb, line 120 def skip! skip && raise(Errors::Skip) end
validate_context(schema = self.class.required_context_schema)
click to toggle source
# File lib/rest_my_case/base.rb, line 124 def validate_context(schema = self.class.required_context_schema) errors = context.validate_schema(schema) error(context_errors: errors, message: 'invalid context') if errors Helpers.blank? errors end
validate_context!(schema = self.class.required_context)
click to toggle source
# File lib/rest_my_case/base.rb, line 132 def validate_context!(schema = self.class.required_context) validate_context(schema) && raise(Errors::Abort) end