Ruby on Rails - Webdocs Cs Ualberta

Download Report

Transcript Ruby on Rails - Webdocs Cs Ualberta

Ruby on Rails

Web development that doesn’t hurt

By Mylore, Dung, Lee, Karen and Bryan

• Ruby on Rails • Ruby language • MVC design pattern • AJAX on Rails • Ruby on Rails in action

Overview

Ruby on Rails

• Framework written in the Ruby

programming language for database backed web applications

• Utilizes MVC design pattern • Created by David Heinemeier Hansson in

mid 2003 and released in 2004

• Developed to create the Basecamp

project management web application

Philosophy

• Convention over configuration – Almost no configuration files – Helper scripts to get started • Conformity through freebies – Magic wiring relies on common structures

due to conventions of Ruby on Rails

• Best practices by invitation – Auto-generated unit and integration testing

Built-in Functions

• Helper scripts – Create directory hierarchy and skeleton

code

– Create model, view and controller objects – Set up database connectivity • ActiveRecord – Dynamic method generation • Built-in WEBrick web server

Ruby

• Object Oriented Scripting Language – Interpreted – Open Source – Fully OO that simulates procedurals – Publicly released in 1995 – New but well documented – Based loosely of Eiffel and Ada but heavily

influenced by other languages like Perl, Python, Java/JavaScript, etc.

Reflective Language

• Ruby incorporates many beneficial

features of other languages

– Flexible programming (Perl) – Built in regex (Perl) – Error and Exception Handling (Python, Java) – Mark and Sweep Garbage Collector (Java) – No variable declaration (Perl, PHP, etc) – Embedded doc tools, RDoc (Java) – No Semicolon ‘;’ ! (Python) – And many others

Highlights: Open Classes

• Every class, including the core classes can be

modified at any time.

• You just need to call

Class class_name #modification code End

• Example:

#modding floats to output in currency class Float def to_m sprintf("$%.2f", self) end end

Highlights: Embedded Strings

• In Perl and PHP you can embed variables into

strings. In Ruby you can embed whole blocks of code into string.

• Just need to put it between #{ } • Example:

#print out the prices in currency format from an #array without the need to put it back into a #variable p = [1.25, 2.00, 3.15] print “Lily: #{p[0].to_m} Rose: #{p[1].to_m} Viola: #{p[2].to_m}”

Highlights: RHTML

• Ruby can be directly embedded into

HTML much like the way PHP does

• Example:

Names of all the people <% for person in @people %> Name: <%= person.name %>
<% end %>

Future of Ruby

• Ruby is easy to learn, simple to

understand and friendly to write in

• It has become quite popular and gained

a large following since its release

• Ruby’s library is expanding rapidly with

many modules currently being written for it. And with the soon to be release version 1.9

• It’s free!

Rails and the MVC Pattern

• MVC in PHP/Perl/JSP is hard – Can be done, but requires a lot of work to

create a framework to enforce the MVC pattern.

– Java (Struts), Perl (Maypole), and for PHP

have their own frameworks, but they are not integrated deeply in their respective languages.

Rails and the MVC Pattern

• RoR integrates and enforces MVC in its

framework.

• Scalability and maintainability. • This significantly reduces the amount of

repeated code.

Model

• The Model in RoR wraps to represent the

RDBMS tables used for a site.

• Minimal amount of configuration • Based on the Active Record pattern.

View

• Uses embedded ruby code in .rhtml files.

Similar to PHP and JSP.

•

..etc… <% Handle Ruby statements here in embedded. %>

Controller

• The controller handles the logic, and

responds to user interaction and manipulates the model.

• Provides CRUD

(Create/Read/Update/Delete) operations on the model.

Putting it all together

• RoR requires minimal configuration for

implementing MVC. Once a new RoR project is created, the framework will automatically create the MVC components. Each component will map to each other with little configuration.

AJAX on Rails

• Ability to incorporate AJAX (Asychronous

JavaScript and XML) into Rails-driven sites

• Contains the Prototype JavaScript

library

– Works with AJAX functions – Works with Script.aculo.us (additional

functionality onto Prototype)

• Contains helper functions for

implementing AJAX

AJAX on Rails

• No longer a complicated process to

incorporate AJAX onto Rails-driven sites

• Newest version of Rails contains RJS – Create JavaScript using Ruby • Reduce the amount of code needed to

implement AJAX

• Applications – Instiki • Web pages – DRTV Research – Penny Arcade

Applications and Projects

Applications: Instiki

• Wiki-based program that focuses on

ease of installation and simplicity in running

– 2 step method for install – Simplistic user interface – Great for notes, brainstorming, organizing gatherings, file sharing, etc.

• Used for creating and editing web pages – Used for database interaction, syntax interpretation, etc.

Web pages: DRTV Research

• DRTV Research is a free online

application that combines television lineup listings per week with consumer demographic data for North America.

• Over 700,000 pages of data are available

on DRTV Research with new data added daily.

Web pages: Penny Arcade

• Penny Arcade is among the most popular

web-comics currently online, hosting both a children's charity (Child’s Play) and a gaming convention (PAX) each year.

Ruby on Rails: Cons

• Confined to one language: Ruby • Slight Learning Curve • Forced to one directory hierarchy • Not too popular (Though it is becoming

more so recently)

• Not yet industry standard • Relatively new with future stability

unknown

Ruby on Rails: Pros

• Open Source and free! • Built for Rapid Application Development • Less development time • Less lines of code • Easy database connectivity • MVC design pattern • Built-in functions • Minimal configuration • Well documented • AJAX made easy

Simplicity

• Weblog in 15 minutes! –

http://media.rubyonrails.org/video/rails_ta ke2_with_sound.mov

• Ruby search engine – http://ruby.gsmdev.com