class StrongStruct

Public Class Methods

new(allowed:, defaults: {}) click to toggle source
Calls superclass method SafeStruct::new
# File lib/r_kit/struct/strong_struct.rb, line 3
def self.new allowed:, defaults: {}
  super.tap do |klass|

    klass.send :define_method, :instance_variable_set, ->(name, value) do
      if __class__.allowed.include? name
        super(name, value)
      else
        raise NameError.new("unsafe key `#{ name }' for #{ __class__ }")
      end
    end

  end
end