Ruby On Rails
Ruby On Rails
Bill Malkin
8th February 2007
Ruby on Rails
Bill Malkin
8th February 2007
Why does RoR interest us?
Learn new concepts and terms.
Look at new architecture.
Find out what is good and what is dubious.
May well come across RoR or a Rails-like framework
in near future.
May want to learn an object-oriented language
relatively painlessly.
RoR is easy to install, learn and use. You might want
to try it out for yourself!
Ruby on Rails
Bill Malkin
8th February 2007
Executive Summary
A lot of hype (many evangelists)
Some dubious claims
Some very good, new concepts
Some old concepts with new names
Ruby camp - humble
Rails camp - arrogant
Still missing some essential tools
Rails techniques can certainly be applied elsewhere
Surprisingly large tools and software base
But Ruby and Rails are each very powerful in their own right
Ruby on Rails
Bill Malkin
8th February 2007
At First Sight
Can only be used for web-based, specifically HTML-
based, applications
Designed for small to medium CRUD-based
applications
Cross-platform
Can use same tools and middleware on Windows,
Linux and OS X.
Easy-install packages for Eclipse (with RADRails and
Ruby editor plugins), MySQL, Apache, and other
Eclipse plugins, eg Subversion.
Ruby on Rails
Bill Malkin
8th February 2007
Books
Beyond Java - Bruce Tate (evangelist)
Programming Ruby (The Pragmatic
Programmers Guide) - Dave Thomas
Ruby Cookbook - Carlson & Richardson
Agile Web Development with Rails (Pragmatic
Programmers) - Thomas, Hansson, Breedt and
Clark
Rails Recipes - Chad Fowler
Ruby on Rails (Up and Running) - Tate & Gibbs
[160 pages]
Ruby on Rails
Bill Malkin
8th February 2007
Other References
Ruby home page
http://www.ruby-lang.org/en/
Ruby Central
http://www.rubycentral.com/
Rails home page
http://www.rubyonrails.org/
Wikipedia entries on Ruby and Ruby on Rails
Ruby on Rails
Bill Malkin
8th February 2007
Available Information
Ruby on Rails
Bill Malkin
8th February 2007
History of Ruby
1993, Feb 24: Yukihiro Matsumoto ("Matz")
started work on Ruby
1993, Summer: First "Hello, world!" program
1995, December: First release 0.95
1996, December: 1.0 is released
1999: Supposedly overtakes Python in Japan
2000: The first official newsgroup
2000-2001: Several books published
2003, August 4: 1.8.0 is released
Ruby on Rails
Bill Malkin
8th February 2007
History of Rails
Developed by David Heinemeier Hansson as
part of an application called Basecamp.
2004, July: Released the framework as open
source
2005, Feb: Shared the commit rights
2005, Dec: Version 1.0 released
2006, Mar: Version 1.1 released
2007, Jan: Version 1.2 released
Ruby on Rails
Bill Malkin
8th February 2007
A Ruby Example
class Account
attr_reader :balance #accessor
protected :balance
def initialize(balance)
@balance = balance
end
def greater_balance_than(other)
return @balance > other.balance
end
end
Ruby on Rails
Bill Malkin
8th February 2007
A
P
e
a
k
a
t
R
a
i
l
s
.
Ruby on Rails
Bill Malkin
8th February 2007
Basics
Ruby - fully object oriented
Rails - full stack framework (sort of)
ActionView, ActionController, ActiveRecord
AJAX using script.aculo.us JavaScript libraries
Uses rake (like make or Ant)
Can use an interpreter to try out Ruby
commands
Ruby on Rails
Bill Malkin
8th February 2007
R
u
b
y
o
n
R
a
i
l
s
R
e
q
u
e
s
t
F
l
o
w
Ruby on Rails
Bill Malkin
8th February 2007
Terms and Concepts
Duck Typing
DRY (Dont Repeat Yourself)
MVC (Model-View-Controller)
Model2 - stateless web apps
Metaprogramming
Convention Over Configuration
Scaffolding
Ruby on Rails
Bill Malkin
8th February 2007
Deployment Environments
Development, Test and Production
Each has its own, default runtime settings
One database for each
Schema Migrations
Manages the schemas and any changes
Keeps track of a list of migrations
Each migration has version number
Can modify schema without losing data
Can migrate schema through test and production
Can make or undo the schema change
Ruby on Rails
Bill Malkin
8th February 2007
Automated Testing
RoR generates default test cases to test each method
in each class
Uses assertions to test results against expected
values
Test data refreshed on start of test
Fixtures - contain your test data
Unit Tests - for testing models
Functional Tests - for testing controllers
Integration Tests - for higher level scenarios
Functional and Integration Tests check Http responses
ZenTest and Selenium
Ruby on Rails
Bill Malkin
8th February 2007
Configuration
Uses Convention over Configuration, and Reflection
Therefore very little configuration compared to other
frameworks
ActiveRecord configuration can use SQL
Uses YAML (easy to read) rather than XML
development:
adapter: oci
host: 192.168.0.50/examplesid
username: exampleuser
password: examplepass
Ruby on Rails
Bill Malkin
8th February 2007
Web 2.0 Features
Rich Internet application techniques, optionally Ajax-
based
CSS
XHTML markup and Microformats
RSS/Atom
Clean and meaningful URLs
Folksonomies (in the form of tags or tagclouds for
example)
Wikis, Weblogs, Mashups
REST or XML Webservice APIs
from wikipedia
Ruby on Rails
Bill Malkin
8th February 2007
Other Rails-Like Frameworks
Groovy: Groovy on Rails -> Grails
Java: Trails
PHP: PHP on Rails -> PHP on TRAX
ASP.NET: Monorail (Beta 4)
Python: TurboGears (well, sort of)
This is another language/framework to watch out for.
Ruby on Rails
Bill Malkin
8th February 2007
Disadvantages
No big corporate backer
Very few expert Ruby programmers, and universities
and TAFEs have not picked it up
Runs slowly (Java ~ 5 times faster but Ruby may be
improved by new VM - YARV)
Poor editor support and very slow debugger
No clustering, failover
No two-phase commit
Does not support compound primary keys
Internationalization support is weak
No off-the-shelf reporting tool
Ruby on Rails
Bill Malkin
8th February 2007
Advantages
Standard directory structure for source
Can build prototype very quickly
Can add to and change prototype easily
Can generate scaffolding, if app is more complex, and
build on this
Very powerful, high-level commands
Ruby has great short-hand code for common patterns,
eg the Value Object
Built in testing, migration, and some version control
Does not constrain the programmer like other
frameworks
Ruby on Rails
Bill Malkin
8th February 2007
Positive Signs
Ruby declared TIOBE's Programming Language of
the Year, 2006 (10th)
Agile Web Development with Rails - No 3 in Amazons
Best Books (Computers and Internet) 2006
JRuby - Ruby on JVM, being developed by SUN
Mac OS X 10.5 (Leopard) will have Ruby and RoR
pre-installed
IBM offers a Starter Toolkit for DB2 on Rails
Oracle have tutorials and a FAQ on RoR
Ruby on Rails
Bill Malkin
8th February 2007
Defections from Java to Ruby
James Duncan Davidson (ANT)
Mike Clark (Pragmatic Automation)
Jason Hunter (Java Servlet Programming)
Bruce Tate (Bitter Java, Spring Dev Notebook)
Dion Almaer (Founder of theserverside.com)
Stuart Holloway (Component Dev for Java)
Justin Gehtland (Better, Faster, Lighter Java)
Glenn Vanderburg (Tricks of the Java Programming
Gurus)
David Geary (Graphic Java, Core JSF)
Ruby on Rails
Bill Malkin
8th February 2007
Trivia
Ruby was named after the birthstone of
a colleague of Matz (birthstone of July)
Pearl (Perl) is the birthstone of June
Ruby on Rails
Bill Malkin
8th February 2007
RoR in Baby Steps
1. Read the Wikipedia entries on Ruby and
Ruby on Rails
2. Read the Ruby / Ruby on Rails Cheat Sheet
http://www.blainekendall.com/uploads/RubyOnRails-
Cheatsheet-BlaineKendall.pdf
3. Follow instructions to install tools and web
server
http://ruby.meetup.com/73/boards/view/viewthread?t
hread=2203432
4. Read the book to develop your first app!
Ruby on Rails, Up and Running
Ruby on Rails
Bill Malkin
8th February 2007
Conclusions
Can only be used for web-based, specifically HTML-based,
applications
Designed for small to medium CRUD-based applications
Cross-platform
A lot of hype (many evangelists)
Some dubious claims, very little expertise
Some very good, new concepts, some old with new names
Still missing some essential tools
Rails-type framework can certainly be applied elsewhere
Surprisingly large tools and software base
Ruby and Rails are each very powerful in their own right
Looks good!