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)