Sha256: 88d8c1073f7745aaec65365a3cb09cf2713e39228b9c0a92a860ad446059f865
Contents?: true
Size: 1.1 KB
Versions: 1
Compression:
Stored size: 1.1 KB
Contents
require_relative "context" require_relative "failure" require_relative "validators/required_attributes" module Ucasy class Base < Ucasy::Callable class << self def call(context = {}) new(context).perform end def required_attributes(*attributes) @required_attributes = attributes end def _required_attributes @required_attributes || [] end end def initialize(context = {}) @context = Context.build(context) end def perform return if failure? validate_required_attributes! try(:before) if success? call if success? try(:after) if success? self rescue Failure self end private attr_reader :context def validate_required_attributes! Validators::RequiredAttributes.call(context, self.class._required_attributes, self.class) end def method_missing(method_name, *, &block) context.public_send(method_name) end def respond_to_missing?(method_name, include_private = false) context.respond_to?(method_name, include_private) end end end
Version data entries
1 entries across 1 versions & 1 rubygems
Version | Path |
---|---|
ucasy-0.0.7 | lib/ucasy/base.rb |