2. Ruby on Rails history Ruby on Rails was extracted from 37signals’ Basecamp by David Heinemeier Hansson (DHH) July 2004: first released as open source Feb 2005: first external commit rights Oct 2007: ships with Mac OS X v10.5 "Leopard”
3. Rails Philosophy Opinionated Convention over configuration DRY (Don't Repeat Yourself) less code means it's easier to maintain & modify Test Driven Development (TDD) Minimal code - maximal effect
4. What you will learn Ruby Language concepts Language syntax Common patterns Rails Framework: creating web applications Scaffold Model, View, Controllers, Routes SQL Queries, log files and debugging Associations
5. How you will learn Exploration: experiment, play Test-Driven Development (TDD) Initially as a learning methodology Later as a development methodology Ask questions Learn to find your own answers
9. Ruby Rails is a framework written in the Ruby language. Great Rails developers are great Ruby developers.
10. The Ruby Language Originally by Yukihiro "Matz" Matsumoto “Ruby is designed for programmer productivity and fun, following the principles of good user interface design. He stresses that systems design needs to emphasize human, rather than computer, needs.” http://en.wikipedia.org/wiki/Ruby_(programming_language)#History Ruby 1.0 was released in 1996.
12. Ruby Versions ruby -v 1.8.6 – most common 1.8.7 – some 1.9 features, very compatible 1.9.1 – latest version, many VMs, Rails 2.3 YARV (yet another Ruby VM) faster than MRI JRuby (Java) Rubinius (pure ruby) IronRuby (.NET) MacRuby, HotCocoa HotRuby/RubyJS (Flash/Javascript)
13. Ruby Gems A gem is a ruby library. gem –v 1.3.5 or higher gem list[sudo] gem install
14. Rails Rails is distributed as a Ruby gem. gem list rails 2.3.4 or higher [sudo] gem install rails
15. rake Rake is “make” for Ruby. Rails requires rake. Rake is distrubted as a gem. gem list rake0.8.7 or higher [sudo] gem install rake
16. Database SQLite for class with sqlite3-ruby gem Other databases: MySQL PostgreSQL Oracle SQL Server SyBase DB2
17. Tools Source Code Control with Git Terminal / git bash on windows Editor / IDE Test Frameworks Heroku for Easy Deployment
18. git Git is for source code control. which git (mac, unix) git bash on windows Why Git? Most Ruby and Rails developers use git Eco-system of tools Modern Source Code Control
37. MVC Model: ActiveRecord Represents what is in the database View: ActionView, erb Model rendered as HTML Controller: ActionController Receives HTTP actions (GET, POST, PUT, DELETE) Decides what to do, typically rendering a view
40. View Exercise 1. On the main people page a. Change “Listing people” to “My Class List” b. Remove the “Present” column 2. When you click “show,” the page should read “Joy McDonald was not present at class” or “Bob Smith was present at class”
41. ActiveRecord p = new Person p = new Person(:first => "May", :last => "Fong") p.save p.save! Person.create(:first => "May", :last => "Fong") Person.create!(:first => "May", :last => "Fong")
42. Safe from SQL injection class User < ActiveRecord::Base def self.authenticate_unsafely(user_name, password) find(:first, :conditions => "user_name = '#{user_name}' AND password = '#{password}'") end def self.authenticate_safely(user_name, password) find(:first, :conditions => [ "user_name = ? AND password = ?", user_name, password ]) end def self.authenticate_safely_simply(user_name, password) find(:first, :conditions => { :user_name => user_name, :password => password }) end end