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