Never asked yourself how it may be implemented? Just do it!
This is my take:module Kernel def attribute_reader(attribute) define_method(attribute) do instance_variable_get("@#{attribute}") end end end class MyClass attribute_reader :my_attribute end m = MyClass.new m.instance_variable_set("@my_attribute", 42) puts m.my_attribute # => 42What’s yours? Have fun!