This is excerpted from the Practical Object-Oriented Design in Ruby book by Sandi Metz

attr_reader -
http://www-rohan.sdsu.edu/doc/ruby/chp_04/classes.html
http://stackoverflow.com/questions/5046831/why-use-rubys-attr-accessor-attr-reader-and-attr-writer

wrapper method -
http://yehudakatz.com/2009/01/18/other-ways-to-wrap-a-method/

instance variable -

## Writing Code that Embraces Change

### Depend on Behavior, Not Data

**Hide instance Variables ** Don't directly refer to variables

def ratio
  @chainring / @cog to_f
end

### Enforce Single Responsibility Everywhere