Slides

17
Ruby on Rails An Introduction Mark S. Maglana, CompE, MM

description

 

Transcript of Slides

Page 1: Slides

Ruby on Rails

An Introduction

Mark S. Maglana, CompE, MM

Page 2: Slides

Let's get this out of the way...» My name is Mark S. Maglana

» Bachelor's Degree in Computer Engineering from the University of San Carlos, Cebu

» Master in Management from the University of the Philippines in Mindanao

» Computer geek since grade 5 (BASIC, QBASIC)

» Suffered through C, assembly in college

» Web dude since 1997, started with ASP 1.0

» ASP.Net, PHP (w/ CakePHP)

» UML, VB, .Net, C#, Java, Lotus Notes/Domino

Page 3: Slides

“I constantly remind myself that there are multiple ways and numerous technologies [for] solving a single problem, some better than others.”

“By being loyal to one technology stack, I am bound to unconsciously make biased decisions, which will ultimately hinder my ability to deliver business value.”

- Stephen Chuhttp://tinyurl.com/zz995

Page 4: Slides

Ruby on Rails

A Programming Language

A Web Framework built w/ Ruby

Page 5: Slides

Hold it right there, sparky...

Page 6: Slides

This is an introduction, not a tutorial

We wont get in-depth with Ruby and Rails(You're too intelligent to be spoon fed)

I assume you're familiar with OOP

Page 7: Slides

Ruby» Created by Yukihiro “Matz” Matsumoto in 1993

» A language designed for humans, not compilers

» A true Object-Oriented language

» Everything you manipulate in Ruby is an object

» They all ultimately inherit from a class named Object (Surprise! Surprise!)

» Because everything is an object, there's none of that primitive types vs. reference types silliness.

Page 8: Slides

Hello World# The famous Hello World# program is trivial in# Ruby. You don't need:## * a "main" method# * newline escapes# * semicolons## Here's the code:

puts "Hello World!"

Ruby won't force you to define a class if you don't need to. In such a case, Ruby automatically encloses your statement in an Object instance.

Page 9: Slides

Other Examplesdoor.close if door.is_open?

5.times { puts “Odelay!” }

my_text = 'restaurant'exit unless my_text.include? 'rant'

animals = ['cat', 'dog', 'fox']animals.each {|animal| puts animal.capitalize}

small_number = 1212123really_big_number = 1412432423429340234581340234pretty_number = 12_000_000_000

Page 10: Slides

And here's one more...class Personattr_accessor :name, :age, :sex

end

person = Person.newperson.name = 'Perting E. Soga'person.age = 36person.sex = 'M'

puts person.name # Perting E. Sogaputs person.age # 36puts person.sex # M

Page 11: Slides

Ruby Conventions» Variables starting with $ are Global Variables

(ex. $x, $1, $chunky_bacon)

» Variables starting with @ are Instance Variables(ex. @width, @x, @y)

» Variables starting with @@ are Class Variables(ex. @@brokeback_coding, @@choo_choo)

» Variables without prefixes are Local Variables(ex. chicken_noodles, white_flower)

» Constants are always capitalized(ex. Time, Array, LuckyPenguin)

Page 12: Slides

Rails» Created by David Heinemeier Hansson in 2003

» A web application framework built using Ruby

» Uses the Model-View-Controller (MVC) design pattern

» Also uses the ActiveRecord design pattern

» Some ex-Java programmers claim Rails helped them develop applications 10x faster

Page 13: Slides

Show me the money!code

Page 14: Slides

How Rails Works

Internet Web Server

controller

database

view

/posts/show/1

posts_controller.rb

model

post.rb

show.rhtml

blog_production

PostsController::show()

Post::find(1)

1.

2.

3.

4.

5.

6.

7.

8.

9.

Page 15: Slides

Recommended Set-up

Internet Apache 2.2+

MongrelMongrel Mongrel

database

mod_proxymod_proxy_balancer

HTTP

HTTP HTTP HTTP

Page 16: Slides

Additional Reading» www.ruby-lang.org

» www.rubyonrails.org

» http://pine.fm/LearnToProgram/

» [email protected]

» Google for “OnLAMP Rolling with Rails”

» #rubyonrails and #ruby-lang in IRC (freenode)

» wiki.rubyonrails.org

» api.rubyonrails.org

» Agile Web Development book

» Programming Ruby book

Page 17: Slides

And we're done!