class Chaos::ModifierFactory
Public Class Methods
new(random_numbers_generator: Kernel, logger:)
click to toggle source
# File lib/chaos/modifier_factory.rb, line 2 def initialize(random_numbers_generator: Kernel, logger:) @random_numbers_generator = random_numbers_generator @logger = logger end
Public Instance Methods
build_module(injection)
click to toggle source
Calls superclass method
# File lib/chaos/modifier_factory.rb, line 7 def build_module(injection) instability_type = injection.instability_type instability = injection.instability target = injection.target method_name = injection.method_name probability = injection.probability execute_if = injection.execute_if random_numbers_generator = @random_numbers_generator logger = @logger Module.new do define_method method_name do |*args, &block| if probability >= random_numbers_generator.rand && execute_if.call(self) instability.call(injection.instability_arguments) logger.info "[Chaos] Triggered :#{instability_type} for :#{method_name} on #{target} with probability: #{probability}" end super(*args, &block) end end end