title: class methods syntax in ruby
body: <p>the ruby book I'm reading has confused me a bit. If I do the following, I understand completely why the code throws an error;</p>
  
  <pre><code>class Person
    def show_name
      puts @name
    end
  end
  
  person = Person.new
  person.show_name
  Person.show_name   #(note the capital P) this line falls over
  </code></pre>
  
  <p>It throws an error stating that the Person class does not have a method called show_name, because it is an instance method. I understand this completely. The book then throws in this example;</p>
  
  <pre><code>class Class
    def add_accessor(accessor_name)
      self.class_eval %Q{attr_accessor :#{accessor_name}}
    end
  end
  
  class Person
  end
  
  person = Person.new
  Person.add_accessor :name    #note the capital P
  Person.add_accessor :age     #capital P here too
  
  person.name = "Mikey"
  person.age = 30
  
  puts person.name
  </code></pre>
  
  <p>and goes on to state how cool it is that you can add methods to classes dynamically. What I don't understand is why I am suddenly allowed to call the "add_accessor" method as a class method (with a capital P) when the method itself isn't defined as such? I thought all class methods had to be declared like this?</p>
  
  <pre><code>class Math
    def self.PI
      3.141
    end
  end
  
  puts Math.PI
  </code></pre>
  
  <p>Is anyone able to enlighten me?</p>