Week 1 Barebones Social Networking App Build a barebones social networking app from scratch user profiles registration/authentication friendships groups Assignment: install rails run: ./script/generate model User name:string password:string .. ./script/generate scaffold User read through autogenerated scaffold think of a class project Week 2 Walkthrough of scaffolding code Using the same commands as the hw assignment, generate a basic CRUD app Opinionated Software Convention over configuration DRY (Don't Repeat Yourself) Explanation of generated model code migration test/fixtures model basic ORM naming convention Explanation of generated scaffold code controller view/helpers functional tests Assignemnt: ./script/generate scaffold_resource User name:string ... read through code watch David Hansson's REST talk online work on project Week 3 Walkthrough of RESTful scaffolding Using the same commands as the hw assignment, generate a basic basic CRUD app Talk about: What is REST? Why should we use it? Explanation of RESTful routes in rails Install restful_authentication Brief introduction to plugins, authentication How to model relationships between classes in rails Basics one-to-one, one-to-many, and many-to-many Talk about rich domains (name the relationship between entities) Build the friendships feature (many-to-many relationship) Assignment: Read through restful_auth code work on project Week 4 Sessions HTTP is stateless, so how do you do sessions cookies, sessions, and how rails handles them walk through of restul_authentication Introduction to AJAX add some ajax effects using rjs discuss how ajax works and its integration with rails Assignemnt: get an irc account on freenode ask a question answer a question get action mailer set up for sending mail (due in two weeks) work on project Week 5 Views and ActiveSupport Rendering views: partials (collections) layout content_for helpers Walk through of some rails extensions to ruby (ActiveSupport) show case some of the extensions read through some of the code Assignment: _why's article on metaprogramming read through Jamis Buck's three article serires on ActiveRecord.find work on project Week 6 Metaprogramming Metaprogramming in ruby object/class model open classes runtime dynamic code generation *_eval Review of _why's article on metaprogramming Review of Buck's articles on ActiveRecord.find Assignment: extract some code from your class project into a gem or rails plugin Week 7 ActionMailer Build a facebook-like-wall feature Build a notifications feature using ActionMailer views can't use helpers multiple attachments notify people when they have a message posted to their wall Assignment: go through simple capistrano tutorial work on project Week 8 Deployment Show how to use capistrano to deploy a rails application Walk through some of the code Assignment: read some articles on performance and scaling DHH has some James Duncan Davidson has some poocs.net Week 9 Performance and Scaling Talk about how to improve performance tools for analysis common performance problems writing better queries caching rails memcached Discuss some scaling issues and possible solutions Assignment: work on project Week 10 Presentations Assignment: course feedback