Sha256: 2689bed60d9be72631a15d298a439273dcac3647db4ec95abafeb36e00ec84f7
Contents?: true
Size: 1.42 KB
Versions: 1
Compression:
Stored size: 1.42 KB
Contents
module SimpleService class Organizer include ServiceBase::InstanceMethods extend ServiceBase::ClassMethods attr_accessor :context def initialize(context={}) @context = context symbolize_context_keys setup_call_chain define_getters_and_setters end def self.commands(*args) @commands = args end def commands self.class.instance_variable_get('@commands') end def call with_validation do |_commands| _commands.each do |command| @context.merge!(command.new(context).call) end end end # allow execution of the service from the class level for those # that prefer that style def self.call(context) self.new(context).call end private def with_validation add_validation_keys_to_context unless skip_validation _commands = skip_validation ? commands : [EnsureOrganizerIsValid] + commands yield(_commands) remove_validation_keys_from_context unless skip_validation end def add_validation_keys_to_context context.merge!(validation_hash) end def remove_validation_keys_from_context validation_hash.keys.each do |key| context.delete(key) end end def validation_hash @validation_hash ||= { provided_keys: context.keys, expected_keys: expects, provided_commands: commands } end end end
Version data entries
1 entries across 1 versions & 1 rubygems
Version | Path |
---|---|
simple_service-1.2.6 | lib/simple_service/organizer.rb |