Ruby on Rails - Webdocs Cs Ualberta

advertisement
Ruby on Rails
Web development that doesn’t hurt
By Mylore, Dung, Lee, Karen and Bryan
Overview
•
•
•
•
•
Ruby on Rails
Ruby language
MVC design pattern
AJAX on Rails
Ruby on Rails in action
Ruby on Rails
• Framework written in the Ruby
programming language for databasebacked 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:
<b>Names of all the people</b>
<% for person in @people %>
Name: <%= person.name %><br/>
<% 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.
• <html>
<head>..etc…
<% Handle Ruby statements here
in embedded. %>
</body>
</html>
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 and Projects
• Applications
– Instiki
• Web pages
– DRTV Research
– Penny Arcade
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
Download