• Share
  • Email
  • Embed
  • Like
  • Save
  • Private Content
Ruby and Rails by example
 

Ruby and Rails by example

on

  • 26,446 views

My slides for DevCon @ Y4iT 2011 lightning talk

My slides for DevCon @ Y4iT 2011 lightning talk

Statistics

Views

Total Views
26,446
Views on SlideShare
26,442
Embed Views
4

Actions

Likes
3
Downloads
152
Comments
1

2 Embeds 4

http://www.hanrss.com 3
https://twitter.com 1

Accessibility

Categories

Upload Details

Uploaded via as Adobe PDF

Usage Rights

© All Rights Reserved

Report content

Flagged as inappropriate Flag as inappropriate
Flag as inappropriate

Select your reason for flagging this presentation as inappropriate.

Cancel

11 of 1 previous next

  • Full Name Full Name Comment goes here.
    Are you sure you want to
    Your message goes here
    Processing…
Post Comment
Edit your comment

    Ruby and Rails by example Ruby and Rails by example Presentation Transcript

    • 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 RubyopenWith = { "txt" => "notepad.exe", "bmp" => "paint.exe", "dib" => "paint.exe", "rtf" => "wordpad.exe" }
    • # Using Ruby 1.9openWith = { txt: "notepad.exe", bmp: "paint.exe", dib: "paint.exe", rtf: "wordpad.exe" }
    • DO MORE withLESS 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) endend
    • Example 2.1:Traverse the Binary Tree
    • def traverse(node) visited_list = [] inorder(node, visited) puts visited.join(",")enddef 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 ","enddef 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 :nameendclass Student < Person attr_accessor :schoolendclass CollegeStudent < Student attr_accessor :courseendx = CollegeStudent.newx.name = "John Doe"x.school = "ABC University"x.course = "Computer Science"
    • Example 4:Call a method in a "primitive"
    • nil.methodstrue.object_id1.upto(10) do |x| puts xend
    • Example 5: Find the sum of thesquares of all numbersunder 10,000 divisible by 3 and/or 5
    • x = 1sum = 0while x < 10000 do if x % 3 == 0 or x % 5 == 0 sum += x * x endendputs sum
    • puts (1..10000). select { |x| x % 3 == 0 or x % 5 == 0}. map {|x| x * x }. reduce(:+)
    • Example 6: Find all employeesolder 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) endend
    • Example 9: Define differentbehavior for different instances
    • alice = Person.newbob = Person.newalice.instance_eval do def hello puts "Hello" endenddef bob.hello puts "Howdy!"end
    • Example 10:Make Duck and Person swim
    • module Swimmer def swim puts "This #{self.class} is swimming" endendclass Duck include Swimmerendclass Person include SwimmerendDuck.new.swimStudent.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 RailsISNT MAGIC
    • Ruby Features
    • Dynamic Object Oriented FunctionalMetaprogramming
    • +
    • Software Engineering"Best Practices"
    • MVC CoC DRYTDD REST
    • = Productivity
    • = Magic?
    • DO MORE withLESS CODE
    • Rails Example:Demo a Twitter Clone
    • https://github.com/bryanbibat/microblog31 Authentication – Devise Attachments – Paperclip Pagination – Kaminari Template Engine – Haml UI – Twitter Bootstrap
    • Bonus Example: Scale the Twitter Clone
    • Thank You For Listening!Philippine Ruby Users Group: http://pinoyrb.orgme: http://bryanbibat.net | @bry_bibat