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 RailsRuby languageMVC design patternAJAX on RailsRuby on Rails in action

Overview

Ruby on Rails

Framework written in the Ruby

programming language for database backed web applications

Utilizes MVC design patternCreated by David Heinemeier Hansson in

mid 2003 and released in 2004

Developed to create the Basecamp

project management web application

Philosophy

Convention over configurationAlmost no configuration filesHelper scripts to get startedConformity through freebiesMagic wiring relies on common structures

due to conventions of Ruby on Rails

Best practices by invitationAuto-generated unit and integration testing

Built-in Functions

Helper scriptsCreate directory hierarchy and skeleton

code

Create model, view and controller objectsSet up database connectivityActiveRecordDynamic method generationBuilt-in WEBrick web server

Ruby

Object Oriented Scripting LanguageInterpretedOpen SourceFully OO that simulates proceduralsPublicly released in 1995New but well documentedBased 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 configurationBased 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 functionsWorks 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 RJSCreate JavaScript using RubyReduce the amount of code needed to

implement AJAX

ApplicationsInstikiWeb pagesDRTV ResearchPenny 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: RubySlight Learning CurveForced to one directory hierarchyNot too popular (Though it is becoming

more so recently)

Not yet industry standardRelatively new with future stability

unknown

Ruby on Rails: Pros

Open Source and free!Built for Rapid Application DevelopmentLess development timeLess lines of codeEasy database connectivityMVC design patternBuilt-in functionsMinimal configurationWell documentedAJAX made easy

Simplicity

Weblog in 15 minutes!

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

Ruby search enginehttp://ruby.gsmdev.com