class Reflekt::Control
Public Instance Methods
reflect(*args)
click to toggle source
Reflect on a method.
Create a shadow action. @param *args [Dynamic] The method's arguments.
# File lib/control.rb, line 33 def reflect(*args) # Get trained rule sets. input_rule_sets = @aggregator.get_input_rule_sets(@klass, @method) output_rule_set = @aggregator.get_output_rule_set(@klass, @method) # Fail when no trained rule sets. if input_rule_sets.nil? @status = :fail 🔥"> No trained rule sets", :fail, :reflect end # When arguments exist. unless args.size == 0 # Validate arguments against trained rule sets. unless input_rule_sets.nil? unless @aggregator.test_inputs(args, input_rule_sets) @status = :fail 🔥"> Invalid inputs", @status, :reflect end end 🔥"> Create meta for #{@method}(): #{args}", :info, :meta, @klass # TODO: Create metadata for other inputs such as instance variables. @inputs = MetaBuilder.create_many(args) end # Action method with real arguments. begin # Run reflection. output = @clone.send(@method, *args) @output = MetaBuilder.create(output) # Validate output with aggregated control rule sets. unless @aggregator.test_output(output, output_rule_set) @status = :fail 🔥"> Invalid output", @status, :reflect end # When a system error occurs. rescue StandardError => message @status = :error @message = message # TODO: Write log entry to /reflections/errors.txt 🔥"#{@method}() not reflected", :error, :control, @klass.class end end