See http://ruby.railstutorial.org for details