oop/attr/protected_attr.rb

tests/_examples/oop/attr/protected_attr.rb in the metorex repository.

c = Class.new do
  protected
  attr_accessor :foo
end

obj = c.new
begin
  obj.foo
  puts "BUG: foo getter should have raised"
rescue NoMethodError => e
  puts "OK reader raised: #{e.message.sub(/0x\h+/, "0xADDRESS")}"
end

begin
  obj.foo = 1
  puts "BUG: foo setter should have raised"
rescue NoMethodError => e
  puts "OK writer raised: #{e.message.sub(/0x\h+/, "0xADDRESS")}"
end

Output:

OK reader raised: protected method 'foo' called for an instance of #<Class:0xADDRESS>
OK writer raised: protected method 'foo=' called for an instance of #<Class:0xADDRESS>