View
221
Download
0
Tags:
Embed Size (px)
Citation preview
Ruby
• Open-Source Programming Language• Created by Yukihiro Matsumoto• Blended parts of other languages• “I wanted a scripting language that was more
powerful than Perl and more object-oriented than Python”
• Public release in 1995• Achieved mass acceptance in 2006 with Ruby
On Rails
Why Ruby?
• Ruby: puts “Hello World!”
• Java: threeVeryLongLines.weHopeWork…
• Perl: #$<!&;
• Lisp: ((a(((b)))c)))
No, But Really…
Ruby vs Java
Ruby
• The empty program:
• Basic Getters and Settersclass Circle
attr_accessor :radius
end
Java• The empty program:
Class Test {
public static void main(String[] args){}
}
• Basic Getters and Setters
class Circle{
private float radius;
public void setRadius(float radius){
this.radius = radius;
}
public float getRadius(){
return radius;
}
}
Ruby VS JAVA
Ruby
• List:stuff = [ ]
stuff << “Java”, “Ruby”
Java
• List:List<String> languages =
new LinkedList<String>();
languages.add(“Java”);
languages.add(“Ruby”);
TypeCasting
“If it walks like a duck and talks like a duck, it’s a duck!”
• The “Duck Typing” philosophy• Define an object by what it can do, not its type• Current set of methods and properties
• Variable naming • var could be a local variable• @var is an instance variable• $var is a global variable
Ruby on Rails
• Open source web application framework for Ruby
• Designed for Agile development
• Released in July 2004
• In August 2006 Apple announced that it would ship RoR with Mac OS X Leopard• Rails provided a purpose for Ruby
• Rails using Model-View-Controller architecture
Philosophy and Design
• Convention over Configuration• Naming conventions
• Class Sale in the model, the corresponding table in database is called sales by default
• Less Code
• Don’t Repeat Yourself
• Scaffolding• Automatically create full CRUD support for database table
• Generators• Built in scripts to automatically generate parts of
framework
Active Record
• It’s the M in MVC
• Handles the automatic mapping of your database tables to your runtime model objects• Tables to classes• Rows to objects• Columns to object attributes
• Don’t need to see or use SQL• But still can if necessary
• Relational database
Database Access
• team.rb is our model:class Team < ActiveRecord::Base
has_many :players
has_one :coach
belongs_to :conference
end
• Retrieve all the players: @team=
Team.find_by_school_and_sport(“unc”,”basketball”)
@team.players
The Rails way
• Quick and easy development
• Built for scalability
• Every app is structured the same
• Convention over Configuration
• Don’t Repeat Yourself
More Info ON RoR
• http://www.ruby-lang.org/en/about/
• http://rubyonrails.org/
• http://onlamp.com/pub/a/onlamp/2005/10/13/what_is_rails.html?page=3
• http://railstutorial.org/chapters/a-demo-app
References
• http://www.ruby-lang.org/en/about/
• http://rubyonrails.org/
• http://onlamp.com/pub/a/onlamp/2005/10/13/what_is_rails.html?page=3
• http://railstutorial.org/chapters/a-demo-app
• http://slideshare.net/Belighted/ruby-vs-java
• http://slideshare.net/vishnu/the-top-10-reasons-the-ruby-programming-language-sucks
• http://en.wikipedia.org/wiki/Diamond_problem