SlideShare a Scribd company logo
1 of 54
Download to read offline
Ruby and Rails
   by example
Ruby is simple in appearance,
 but is very complex inside,
  just like our human body.
         - Yukihiro "matz" Matsumoto,
                       creator of Ruby
Example 0:
Hash / Dictionary
// Using C#

using System;
using System.Collections;

...

        Hashtable openWith = new Hashtable();

        openWith.Add("txt",   "notepad.exe");
        openWith.Add("bmp",   "paint.exe");
        openWith.Add("dib",   "paint.exe");
        openWith.Add("rtf",   "wordpad.exe");
# Using Ruby

openWith = { "txt"   =>   "notepad.exe",
             "bmp"   =>   "paint.exe",
             "dib"   =>   "paint.exe",
             "rtf"   =>   "wordpad.exe" }
# Using Ruby 1.9

openWith = { txt: "notepad.exe",
  bmp: "paint.exe", dib: "paint.exe",
  rtf: "wordpad.exe" }
DO MORE
   with

LESS CODE
// Using C#

using System;
using System.Collections;

...

        Hashtable openWith = new Hashtable();

        openWith.Add("txt",   "notepad.exe");
        openWith.Add("bmp",   "paint.exe");
        openWith.Add("dib",   "paint.exe");
        openWith.Add("rtf",   "wordpad.exe");
Example 1:
Hello World
puts "Hello World!"
Example 2:
Create a Binary Tree
class Node
  attr_accessor :value

  def initialize(value = nil)
    @value = value
  end

  attr_reader :left, :right
  def left=(node); @left = create_node(node); end
  def right=(node); @right = create_node(node); end

  private
  def create_node(node)
    node.instance_of? Node ? node : Node.new(node)
  end
end
Example 2.1:
Traverse the
 Binary Tree
def traverse(node)
  visited_list = []
  inorder(node, visited)
  puts visited.join(",")
end

def inorder(node, visited)
  inorder(node.left, visited) unless node.left.nil?
  visited << node.value
  inorder(node.right, visited) unless node.right.nil?
end
def traverse(node)
  visited_list = []
  inorder node, visited
  puts visited.join ","
end

def inorder(node, visited)
  inorder node.left, visited unless node.left.nil?
  visited << node.value
  inorder node.right, visited unless node.right.nil?
end
Example 3:
Create a Person →
    Student →
 College Student
  class hierarchy
class Person
  attr_accessor :name
end

class Student < Person
  attr_accessor :school
end

class CollegeStudent < Student
  attr_accessor :course
end

x = CollegeStudent.new
x.name = "John Doe"
x.school = "ABC University"
x.course = "Computer Science"
Example 4:
Call a method in a
    "primitive"
nil.methods

true.object_id

1.upto(10) do |x|
  puts x
end
Example 5:
 Find the sum of the
squares of all numbers
under 10,000 divisible
    by 3 and/or 5
x = 1
sum = 0
while x < 10000 do
  if x % 3 == 0 or x % 5 == 0
    sum += x * x
  end
end
puts sum
puts (1..10000).
  select { |x| x % 3 == 0 or x % 5 == 0}.
  map {|x| x * x }.
  reduce(:+)
Example 6:
  Find all employees
older than 30 and sort
     by last name
oldies = employees.select { |e| e.age > 30 }.
  sort { |e1, e2| e1.last_name <=> e2.last_name }
Example 7:
Assign a method to a
      variable
hello = Proc.new { |string| puts "Hello #{string}" }

hello.call "Alice"
Example 8:
Add a "plus" method to
     all numbers
class Numeric
  def plus(value)
    self.+(value)
  end
end
Example 9:
  Define different
behavior for different
     instances
alice = Person.new
bob = Person.new

alice.instance_eval do
  def hello
    puts "Hello"
  end
end

def bob.hello
  puts "Howdy!"
end
Example 10:
Make Duck and
 Person swim
module Swimmer
  def swim
    puts "This #{self.class} is swimming"
  end
end

class Duck
  include Swimmer
end

class Person
  include Swimmer
end

Duck.new.swim
Student.new.swim
Example 0:
Make a Twitter Clone
$   rails new twitclone
$   cd twitclone
$   rails generate scaffold tweet message:string
$   rake db:migrate
$   rails server
$   rails new twitclone
$   cd twitclone
$   rails generate scaffold tweet message:string
$   rake db:migrate
$   rails server
Ruby on Rails
ISN'T MAGIC
Ruby Features
Dynamic
 Object Oriented
   Functional
Metaprogramming
+
Software
  Engineering
"Best Practices"
MVC   CoC
  DRY
TDD   REST
= Productivity
= Magic?
DO MORE
   with

LESS CODE
Rails Example:
Demo a Twitter Clone
https://github.com/bryanbibat/microblog31

       Authentication – Devise
       Attachments – Paperclip
        Pagination – Kaminari
       Template Engine – Haml
        UI – Twitter Bootstrap
Ruby Resources
               main site
       http://www.ruby-lang.org

               tutorials
          http://tryruby.org
http://ruby.learncodethehardway.org/
http://mislav.uniqpath.com/poignant-guide/
Rails Resources
          main site
   http://rubyonrails.org/

           tutorials
 http://ruby.railstutorial.org/
 http://railsforzombies.org/

     Windows Installer
   http://railsinstaller.org/
Thank You For
    Listening!
    Philippine Ruby Users Group:
          http://pinoyrb.org
https://groups.google.com/forum/#!forum/ruby-phil

   me: http://bryanbibat.net | @bry_bibat

More Related Content

What's hot

Introduction to JRuby
Introduction to JRubyIntroduction to JRuby
Introduction to JRuby
elliando dias
 
Frozen rails 2012 - Fighting Code Smells
Frozen rails 2012 - Fighting Code SmellsFrozen rails 2012 - Fighting Code Smells
Frozen rails 2012 - Fighting Code Smells
Dennis Ushakov
 

What's hot (20)

Fast Slim Correct: The History and Evolution of JavaScript.
Fast Slim Correct: The History and Evolution of JavaScript.Fast Slim Correct: The History and Evolution of JavaScript.
Fast Slim Correct: The History and Evolution of JavaScript.
 
Webpack & EcmaScript 6 (Webelement #32)
Webpack & EcmaScript 6 (Webelement #32)Webpack & EcmaScript 6 (Webelement #32)
Webpack & EcmaScript 6 (Webelement #32)
 
JavaScript Performance (at SFJS)
JavaScript Performance (at SFJS)JavaScript Performance (at SFJS)
JavaScript Performance (at SFJS)
 
Introduction to Ruby on Rails
Introduction to Ruby on RailsIntroduction to Ruby on Rails
Introduction to Ruby on Rails
 
I18nize Scala programs à la gettext
I18nize Scala programs à la gettextI18nize Scala programs à la gettext
I18nize Scala programs à la gettext
 
Web application intro + a bit of ruby (revised)
Web application intro + a bit of ruby (revised)Web application intro + a bit of ruby (revised)
Web application intro + a bit of ruby (revised)
 
Develop realtime web with Scala and Xitrum
Develop realtime web with Scala and XitrumDevelop realtime web with Scala and Xitrum
Develop realtime web with Scala and Xitrum
 
Ruby on Rails Training - Module 1
Ruby on Rails Training - Module 1Ruby on Rails Training - Module 1
Ruby on Rails Training - Module 1
 
Road to Rails
Road to RailsRoad to Rails
Road to Rails
 
Introduction to Ruby on Rails
Introduction to Ruby on RailsIntroduction to Ruby on Rails
Introduction to Ruby on Rails
 
Building Isomorphic Apps (JSConf.Asia 2014)
Building Isomorphic Apps (JSConf.Asia 2014)Building Isomorphic Apps (JSConf.Asia 2014)
Building Isomorphic Apps (JSConf.Asia 2014)
 
Web development basics (Part-3)
Web development basics (Part-3)Web development basics (Part-3)
Web development basics (Part-3)
 
Module design pattern i.e. express js
Module design pattern i.e. express jsModule design pattern i.e. express js
Module design pattern i.e. express js
 
Introduction to JRuby
Introduction to JRubyIntroduction to JRuby
Introduction to JRuby
 
Unobtrusive JavaScript
Unobtrusive JavaScriptUnobtrusive JavaScript
Unobtrusive JavaScript
 
Ruby an overall approach
Ruby an overall approachRuby an overall approach
Ruby an overall approach
 
Why Use Rails by Dr Nic
Why Use Rails by  Dr NicWhy Use Rails by  Dr Nic
Why Use Rails by Dr Nic
 
SproutCore and the Future of Web Apps
SproutCore and the Future of Web AppsSproutCore and the Future of Web Apps
SproutCore and the Future of Web Apps
 
Security Goodness with Ruby on Rails
Security Goodness with Ruby on RailsSecurity Goodness with Ruby on Rails
Security Goodness with Ruby on Rails
 
Frozen rails 2012 - Fighting Code Smells
Frozen rails 2012 - Fighting Code SmellsFrozen rails 2012 - Fighting Code Smells
Frozen rails 2012 - Fighting Code Smells
 

Similar to Ruby and Rails by Example (GeekCamp edition)

A tour on ruby and friends
A tour on ruby and friendsA tour on ruby and friends
A tour on ruby and friends
旻琦 潘
 
Uses & Abuses of Mocks & Stubs
Uses & Abuses of Mocks & StubsUses & Abuses of Mocks & Stubs
Uses & Abuses of Mocks & Stubs
PatchSpace Ltd
 
Desarrollando aplicaciones web en minutos
Desarrollando aplicaciones web en minutosDesarrollando aplicaciones web en minutos
Desarrollando aplicaciones web en minutos
Edgar Suarez
 

Similar to Ruby and Rails by Example (GeekCamp edition) (20)

Ruby and Rails by example
Ruby and Rails by exampleRuby and Rails by example
Ruby and Rails by example
 
Ruby on Rails
Ruby on RailsRuby on Rails
Ruby on Rails
 
Ruby gems
Ruby gemsRuby gems
Ruby gems
 
An introduction to Ruby
An introduction to RubyAn introduction to Ruby
An introduction to Ruby
 
A tour on ruby and friends
A tour on ruby and friendsA tour on ruby and friends
A tour on ruby and friends
 
Extreme Swift
Extreme SwiftExtreme Swift
Extreme Swift
 
Ruby/Rails
Ruby/RailsRuby/Rails
Ruby/Rails
 
Ruby on Rails 3.1: Let's bring the fun back into web programing
Ruby on Rails 3.1: Let's bring the fun back into web programingRuby on Rails 3.1: Let's bring the fun back into web programing
Ruby on Rails 3.1: Let's bring the fun back into web programing
 
Introduction to ReasonML
Introduction to ReasonMLIntroduction to ReasonML
Introduction to ReasonML
 
Uses & Abuses of Mocks & Stubs
Uses & Abuses of Mocks & StubsUses & Abuses of Mocks & Stubs
Uses & Abuses of Mocks & Stubs
 
Container (Docker) Orchestration Tools
Container (Docker) Orchestration ToolsContainer (Docker) Orchestration Tools
Container (Docker) Orchestration Tools
 
CppTutorial.ppt
CppTutorial.pptCppTutorial.ppt
CppTutorial.ppt
 
Ruby On Rails
Ruby On RailsRuby On Rails
Ruby On Rails
 
Perkenalan ReasonML
Perkenalan ReasonMLPerkenalan ReasonML
Perkenalan ReasonML
 
Ruby on Rails
Ruby on RailsRuby on Rails
Ruby on Rails
 
Snakes for Camels
Snakes for CamelsSnakes for Camels
Snakes for Camels
 
Cpp tutorial
Cpp tutorialCpp tutorial
Cpp tutorial
 
Desarrollando aplicaciones web en minutos
Desarrollando aplicaciones web en minutosDesarrollando aplicaciones web en minutos
Desarrollando aplicaciones web en minutos
 
Reasons To Love Ruby
Reasons To Love RubyReasons To Love Ruby
Reasons To Love Ruby
 
Ruby on Rails at PROMPT ISEL '11
Ruby on Rails at PROMPT ISEL '11Ruby on Rails at PROMPT ISEL '11
Ruby on Rails at PROMPT ISEL '11
 

More from bryanbibat

Static Sites in Ruby
Static Sites in RubyStatic Sites in Ruby
Static Sites in Ruby
bryanbibat
 
Latest Trends in Web Technologies
Latest Trends in Web TechnologiesLatest Trends in Web Technologies
Latest Trends in Web Technologies
bryanbibat
 
Some Myths in Software Development
Some Myths in Software DevelopmentSome Myths in Software Development
Some Myths in Software Development
bryanbibat
 

More from bryanbibat (20)

Hd 10 japan
Hd 10 japanHd 10 japan
Hd 10 japan
 
Static Sites in Ruby
Static Sites in RubyStatic Sites in Ruby
Static Sites in Ruby
 
So You Want to Teach Ruby and Rails...
So You Want to Teach Ruby and Rails...So You Want to Teach Ruby and Rails...
So You Want to Teach Ruby and Rails...
 
Git Basics (Professionals)
 Git Basics (Professionals) Git Basics (Professionals)
Git Basics (Professionals)
 
Upgrading to Ruby 2.1, Rails 4.0, Bootstrap 3.0
Upgrading to Ruby 2.1, Rails 4.0, Bootstrap 3.0Upgrading to Ruby 2.1, Rails 4.0, Bootstrap 3.0
Upgrading to Ruby 2.1, Rails 4.0, Bootstrap 3.0
 
Version Control with Git for Beginners
Version Control with Git for BeginnersVersion Control with Git for Beginners
Version Control with Git for Beginners
 
Rails is Easy*
Rails is Easy*Rails is Easy*
Rails is Easy*
 
Things Future IT Students Should Know (But Don't)
Things Future IT Students Should Know (But Don't)Things Future IT Students Should Know (But Don't)
Things Future IT Students Should Know (But Don't)
 
Things IT Undergrads Should Know (But Don't)
Things IT Undergrads Should Know (But Don't)Things IT Undergrads Should Know (But Don't)
Things IT Undergrads Should Know (But Don't)
 
From Novice to Expert: A Pragmatic Approach to Learning
From Novice to Expert: A Pragmatic Approach to LearningFrom Novice to Expert: A Pragmatic Approach to Learning
From Novice to Expert: A Pragmatic Approach to Learning
 
Lambda Expressions in Java 8
Lambda Expressions in Java 8Lambda Expressions in Java 8
Lambda Expressions in Java 8
 
Preparing for the WebGeek DevCup
Preparing for the WebGeek DevCupPreparing for the WebGeek DevCup
Preparing for the WebGeek DevCup
 
Productive text editing with Vim
Productive text editing with VimProductive text editing with Vim
Productive text editing with Vim
 
Latest Trends in Web Technologies
Latest Trends in Web TechnologiesLatest Trends in Web Technologies
Latest Trends in Web Technologies
 
Virtualization
VirtualizationVirtualization
Virtualization
 
Some Myths in Software Development
Some Myths in Software DevelopmentSome Myths in Software Development
Some Myths in Software Development
 
Latest Trends in Open Source Web Technologies
Latest Trends in Open Source Web TechnologiesLatest Trends in Open Source Web Technologies
Latest Trends in Open Source Web Technologies
 
What it takes to be a Web Developer
What it takes to be a Web DeveloperWhat it takes to be a Web Developer
What it takes to be a Web Developer
 
before you leap
before you leapbefore you leap
before you leap
 
Sowing the Seeds
Sowing the SeedsSowing the Seeds
Sowing the Seeds
 

Recently uploaded

Recently uploaded (20)

Understanding Discord NSFW Servers A Guide for Responsible Users.pdf
Understanding Discord NSFW Servers A Guide for Responsible Users.pdfUnderstanding Discord NSFW Servers A Guide for Responsible Users.pdf
Understanding Discord NSFW Servers A Guide for Responsible Users.pdf
 
Apidays Singapore 2024 - Building Digital Trust in a Digital Economy by Veron...
Apidays Singapore 2024 - Building Digital Trust in a Digital Economy by Veron...Apidays Singapore 2024 - Building Digital Trust in a Digital Economy by Veron...
Apidays Singapore 2024 - Building Digital Trust in a Digital Economy by Veron...
 
MINDCTI Revenue Release Quarter One 2024
MINDCTI Revenue Release Quarter One 2024MINDCTI Revenue Release Quarter One 2024
MINDCTI Revenue Release Quarter One 2024
 
From Event to Action: Accelerate Your Decision Making with Real-Time Automation
From Event to Action: Accelerate Your Decision Making with Real-Time AutomationFrom Event to Action: Accelerate Your Decision Making with Real-Time Automation
From Event to Action: Accelerate Your Decision Making with Real-Time Automation
 
AWS Community Day CPH - Three problems of Terraform
AWS Community Day CPH - Three problems of TerraformAWS Community Day CPH - Three problems of Terraform
AWS Community Day CPH - Three problems of Terraform
 
Strategies for Landing an Oracle DBA Job as a Fresher
Strategies for Landing an Oracle DBA Job as a FresherStrategies for Landing an Oracle DBA Job as a Fresher
Strategies for Landing an Oracle DBA Job as a Fresher
 
HTML Injection Attacks: Impact and Mitigation Strategies
HTML Injection Attacks: Impact and Mitigation StrategiesHTML Injection Attacks: Impact and Mitigation Strategies
HTML Injection Attacks: Impact and Mitigation Strategies
 
Partners Life - Insurer Innovation Award 2024
Partners Life - Insurer Innovation Award 2024Partners Life - Insurer Innovation Award 2024
Partners Life - Insurer Innovation Award 2024
 
Connector Corner: Accelerate revenue generation using UiPath API-centric busi...
Connector Corner: Accelerate revenue generation using UiPath API-centric busi...Connector Corner: Accelerate revenue generation using UiPath API-centric busi...
Connector Corner: Accelerate revenue generation using UiPath API-centric busi...
 
Exploring the Future Potential of AI-Enabled Smartphone Processors
Exploring the Future Potential of AI-Enabled Smartphone ProcessorsExploring the Future Potential of AI-Enabled Smartphone Processors
Exploring the Future Potential of AI-Enabled Smartphone Processors
 
Boost PC performance: How more available memory can improve productivity
Boost PC performance: How more available memory can improve productivityBoost PC performance: How more available memory can improve productivity
Boost PC performance: How more available memory can improve productivity
 
Bajaj Allianz Life Insurance Company - Insurer Innovation Award 2024
Bajaj Allianz Life Insurance Company - Insurer Innovation Award 2024Bajaj Allianz Life Insurance Company - Insurer Innovation Award 2024
Bajaj Allianz Life Insurance Company - Insurer Innovation Award 2024
 
Top 10 Most Downloaded Games on Play Store in 2024
Top 10 Most Downloaded Games on Play Store in 2024Top 10 Most Downloaded Games on Play Store in 2024
Top 10 Most Downloaded Games on Play Store in 2024
 
Powerful Google developer tools for immediate impact! (2023-24 C)
Powerful Google developer tools for immediate impact! (2023-24 C)Powerful Google developer tools for immediate impact! (2023-24 C)
Powerful Google developer tools for immediate impact! (2023-24 C)
 
Deploy with confidence: VMware Cloud Foundation 5.1 on next gen Dell PowerEdg...
Deploy with confidence: VMware Cloud Foundation 5.1 on next gen Dell PowerEdg...Deploy with confidence: VMware Cloud Foundation 5.1 on next gen Dell PowerEdg...
Deploy with confidence: VMware Cloud Foundation 5.1 on next gen Dell PowerEdg...
 
Repurposing LNG terminals for Hydrogen Ammonia: Feasibility and Cost Saving
Repurposing LNG terminals for Hydrogen Ammonia: Feasibility and Cost SavingRepurposing LNG terminals for Hydrogen Ammonia: Feasibility and Cost Saving
Repurposing LNG terminals for Hydrogen Ammonia: Feasibility and Cost Saving
 
ProductAnonymous-April2024-WinProductDiscovery-MelissaKlemke
ProductAnonymous-April2024-WinProductDiscovery-MelissaKlemkeProductAnonymous-April2024-WinProductDiscovery-MelissaKlemke
ProductAnonymous-April2024-WinProductDiscovery-MelissaKlemke
 
2024: Domino Containers - The Next Step. News from the Domino Container commu...
2024: Domino Containers - The Next Step. News from the Domino Container commu...2024: Domino Containers - The Next Step. News from the Domino Container commu...
2024: Domino Containers - The Next Step. News from the Domino Container commu...
 
Apidays New York 2024 - The Good, the Bad and the Governed by David O'Neill, ...
Apidays New York 2024 - The Good, the Bad and the Governed by David O'Neill, ...Apidays New York 2024 - The Good, the Bad and the Governed by David O'Neill, ...
Apidays New York 2024 - The Good, the Bad and the Governed by David O'Neill, ...
 
🐬 The future of MySQL is Postgres 🐘
🐬  The future of MySQL is Postgres   🐘🐬  The future of MySQL is Postgres   🐘
🐬 The future of MySQL is Postgres 🐘
 

Ruby and Rails by Example (GeekCamp edition)

  • 1. Ruby and Rails by example
  • 2.
  • 3. Ruby is simple in appearance, but is very complex inside, just like our human body. - Yukihiro "matz" Matsumoto, creator of Ruby
  • 4. Example 0: Hash / Dictionary
  • 5. // Using C# using System; using System.Collections; ... Hashtable openWith = new Hashtable(); openWith.Add("txt", "notepad.exe"); openWith.Add("bmp", "paint.exe"); openWith.Add("dib", "paint.exe"); openWith.Add("rtf", "wordpad.exe");
  • 6. # Using Ruby openWith = { "txt" => "notepad.exe", "bmp" => "paint.exe", "dib" => "paint.exe", "rtf" => "wordpad.exe" }
  • 7. # Using Ruby 1.9 openWith = { txt: "notepad.exe", bmp: "paint.exe", dib: "paint.exe", rtf: "wordpad.exe" }
  • 8.
  • 9. DO MORE with LESS CODE
  • 10. // Using C# using System; using System.Collections; ... Hashtable openWith = new Hashtable(); openWith.Add("txt", "notepad.exe"); openWith.Add("bmp", "paint.exe"); openWith.Add("dib", "paint.exe"); openWith.Add("rtf", "wordpad.exe");
  • 13. Example 2: Create a Binary Tree
  • 14. class Node attr_accessor :value def initialize(value = nil) @value = value end attr_reader :left, :right def left=(node); @left = create_node(node); end def right=(node); @right = create_node(node); end private def create_node(node) node.instance_of? Node ? node : Node.new(node) end end
  • 16. def traverse(node) visited_list = [] inorder(node, visited) puts visited.join(",") end def inorder(node, visited) inorder(node.left, visited) unless node.left.nil? visited << node.value inorder(node.right, visited) unless node.right.nil? end
  • 17. def traverse(node) visited_list = [] inorder node, visited puts visited.join "," end def inorder(node, visited) inorder node.left, visited unless node.left.nil? visited << node.value inorder node.right, visited unless node.right.nil? end
  • 18. Example 3: Create a Person → Student → College Student class hierarchy
  • 19. class Person attr_accessor :name end class Student < Person attr_accessor :school end class CollegeStudent < Student attr_accessor :course end x = CollegeStudent.new x.name = "John Doe" x.school = "ABC University" x.course = "Computer Science"
  • 20. Example 4: Call a method in a "primitive"
  • 22. Example 5: Find the sum of the squares of all numbers under 10,000 divisible by 3 and/or 5
  • 23. x = 1 sum = 0 while x < 10000 do if x % 3 == 0 or x % 5 == 0 sum += x * x end end puts sum
  • 24. puts (1..10000). select { |x| x % 3 == 0 or x % 5 == 0}. map {|x| x * x }. reduce(:+)
  • 25. Example 6: Find all employees older than 30 and sort by last name
  • 26. oldies = employees.select { |e| e.age > 30 }. sort { |e1, e2| e1.last_name <=> e2.last_name }
  • 27. Example 7: Assign a method to a variable
  • 28. hello = Proc.new { |string| puts "Hello #{string}" } hello.call "Alice"
  • 29. Example 8: Add a "plus" method to all numbers
  • 30. class Numeric def plus(value) self.+(value) end end
  • 31. Example 9: Define different behavior for different instances
  • 32. alice = Person.new bob = Person.new alice.instance_eval do def hello puts "Hello" end end def bob.hello puts "Howdy!" end
  • 33. Example 10: Make Duck and Person swim
  • 34. module Swimmer def swim puts "This #{self.class} is swimming" end end class Duck include Swimmer end class Person include Swimmer end Duck.new.swim Student.new.swim
  • 35.
  • 36.
  • 37. Example 0: Make a Twitter Clone
  • 38. $ rails new twitclone $ cd twitclone $ rails generate scaffold tweet message:string $ rake db:migrate $ rails server
  • 39. $ rails new twitclone $ cd twitclone $ rails generate scaffold tweet message:string $ rake db:migrate $ rails server
  • 41.
  • 43. Dynamic Object Oriented Functional Metaprogramming
  • 44. +
  • 46. MVC CoC DRY TDD REST
  • 49. DO MORE with LESS CODE
  • 50. Rails Example: Demo a Twitter Clone
  • 51. https://github.com/bryanbibat/microblog31 Authentication – Devise Attachments – Paperclip Pagination – Kaminari Template Engine – Haml UI – Twitter Bootstrap
  • 52. Ruby Resources main site http://www.ruby-lang.org tutorials http://tryruby.org http://ruby.learncodethehardway.org/ http://mislav.uniqpath.com/poignant-guide/
  • 53. Rails Resources main site http://rubyonrails.org/ tutorials http://ruby.railstutorial.org/ http://railsforzombies.org/ Windows Installer http://railsinstaller.org/
  • 54. Thank You For Listening! Philippine Ruby Users Group: http://pinoyrb.org https://groups.google.com/forum/#!forum/ruby-phil me: http://bryanbibat.net | @bry_bibat