lib/config_default/struct.rb in config_default-0.1.1 vs lib/config_default/struct.rb in config_default-0.1.2

- old
+ new

@@ -1,8 +1,10 @@ # frozen_string_literal: true class ConfigDefault::Struct + RESERVED_METHODS = %i[method_missing respond_to_missing? to_hash].freeze + def initialize(attributes = {}, recursive: false, allow_nil: false) @attributes = ActiveSupport::HashWithIndifferentAccess.new(attributes) @allow_nil = allow_nil @recursive = recursive @@ -11,18 +13,22 @@ next unless value.is_a?(Hash) @attributes[key] = self.class.new(value, recursive: @recursive, allow_nil: @allow_nil) end end + @attributes.each do |key, value| + next if RESERVED_METHODS.include?(key.to_sym) + define_singleton_method(key) { value } + end + @attributes.freeze end def [](key) @attributes[key] end def method_missing(method, *_args) - return @attributes[method] if @attributes.key?(method) raise StandardError.new("There is no option :#{method} in configuration.") unless @allow_nil end def respond_to_missing?(*_args) true