Sha256: ddccfbb2d432bc6f66385cd457a207e4679d1c65e89016c4dda5b2c849ed9fae
Contents?: true
Size: 1019 Bytes
Versions: 50
Compression:
Stored size: 1019 Bytes
Contents
require_relative 'abstract_command_handler' class CreateClassInstanceHandler < AbstractCommandHandler def initialize @required_parameters_count = 1 end def process(command) return create_class_instance(command) end def create_class_instance(command) begin if command.payload.length < @required_parameters_count raise ArgumentError.new "Class instance parameters mismatch" end if command.payload.length > 1 constructor_arguments = command.payload[1..] class_instance = command.payload[0].send('new', *constructor_arguments) else class_instance = command.payload[0].send('new') end return class_instance rescue NoMethodError methods = command.payload[0].methods message = "Method 'new' not found in class #{command.payload[0].name}. Available methods:\n" methods.each { |method_iter| message += "#{method_iter}\n" } raise Exception, message rescue Exception => e return e end end end
Version data entries
50 entries across 25 versions & 1 rubygems