Building Web Applications with Ruby on Rails
Steven Petryk
Rails vs WAMP
- Convention over configuration
- Database-agnostic
- Automatic SQL sanitation
- Integrated webapp security
- Incredibly active community
- Separation of concerns
Rails :)
WAMP :(
- Requires much configuration
- Depends on MySQL
- SQL is written by hand
- No inherent security features
- Uses PHP :'(
The MVC Paradigm
- Models
- Persisted in the database
- Responsible for abstracting database operations
- Views
- Display models
- Present ways to interact with models
- Controllers
- Tie together models and views
- Render views and perform actions on models based on user action
Models in Rails
- Powered by ActiveRecord
- ORM – tries to eliminate SQL by exposing Ruby methods on a Model object
- Automatically manages conversion from database columns to Ruby types
- Provides extremely intelligent ways to query, parse, and store data
- Allows you to easily validate models
- ... much more.
ActiveRecord in Action
$ rails generate model task name done:boolean due_at:datetime
1. Create the task model
# Create a task
task = Task.create(name: "Give Rails Tech Talk", due_at: Time.now)
task.name # => "Give Rails Tech Talk"
# Find and update a task
Task.find_by_name("Give Rails Tech Talk").update(done: true)
# Get a Relation of tasks
urgent_tasks = Task.where(done: false).where('due_at < ?', 1.day.from_now)
# Destroy a task
Task.last.destroy
$ rake db:migrate
2. Migrate the database
3. ???? 4. Profit
ActiveRecord Demo
Creating a Task model
Controllers and Views
- Manipulate models and expose interfaces for reading and modifying their attributes
- ActionController: the Rails controller class
- Parses parameters
- Enables filtering of model attributes for security
- Automatic mapping of exceptions to HTTP status codes
- ... much more.
ActionController in Action
rails generate controller tasks index new create show edit update destroy
1. Create the TasksController
class TasksController < ApplicationController
def index
end
def new
end
def create
end
def show
end
def edit
end
def update
end
def destroy
end
end
2. Update your routes 3. ??? 4. Profit
ActionView
- Powerful template system
- Encourages separation of logic and view
- Has helper methods for working with dates, linking to models, and generating forms.
Demo
The rest of the app
Where to learn more
- Mike Hartl's Ruby on Rails Tutorial (free)
http://ruby.railstutorial.org/book
- Ryan Bates' "Railscasts" screencasts
http://railscasts.com
- Ruby on Rails' actual website
http://rubyonrails.org
- The Rails 4 Way (not free, for advanced users)
We will be learning Rails in depth in SIGWEB.
Sundays from 4:30-6:15.
Student Union 220.
Rails Intro
By Steven Petryk
Rails Intro
- 857