module ChaosDetector::Utils::CoreUtil::ChaosAttr

Public Instance Methods

chaos_attr(attribute_name, default_val=nil, &block) click to toggle source
# File lib/chaos_detector/utils/core_util.rb, line 103
def chaos_attr(attribute_name, default_val=nil, &block)
  # raise 'Default value or block required' unless !default_val.nil? || block
  sym = attribute_name&.to_sym
  raise ArgumentError, 'attribute_name is required and convertible to symbol.' if sym.nil?

  define_method(sym) do
    instance_variable_get("@#{sym}") || (block.nil? ? default_val : block.call)
  end

  define_method("#{sym}=") { |val| instance_variable_set("@#{sym}", val) }
end