Luis Lavena wrote: > Maybe is because you're setting private for all the following methods, > including the ones that attr_accessor defines moving forward after the > "extending"? That's probably true in some sense (some state is getting set and affecting the methods defined by attr_accessor), but it's not setting other methods private: $ cat t.rb module M private def attr_accessor(*args); super; end end class C extend M def m; puts "m"; end attr_accessor :x end C.new.m C.new.x = 1 $ ruby19 t.rb m t.rb:13:in `<main>': private method `x=' called for #<C:0x00000002442148> (NoMethodError)