Your SlideShare is downloading. ×
Ruby and Rails by Example (GeekCamp edition)
Upcoming SlideShare
Loading in...5
×

Thanks for flagging this SlideShare!

Oops! An error has occurred.

×

Saving this for later?

Get the SlideShare app to save on your phone or tablet. Read anywhere, anytime - even offline.

Text the download link to your phone

Standard text messaging rates apply

Ruby and Rails by Example (GeekCamp edition)

2,436
views

Published on

Old presentation updated for Geek Camp Baguio May 2012

Old presentation updated for Geek Camp Baguio May 2012

Published in: Technology

0 Comments
0 Likes
Statistics
Notes
  • Be the first to comment

  • Be the first to like this

No Downloads
Views
Total Views
2,436
On Slideshare
0
From Embeds
0
Number of Embeds
0
Actions
Shares
0
Downloads
34
Comments
0
Likes
0
Embeds 0
No embeds

Report content
Flagged as inappropriate Flag as inappropriate
Flag as inappropriate

Select your reason for flagging this presentation as inappropriate.

Cancel
No notes for slide

Transcript

  • 1. Ruby and Rails by example
  • 2. Ruby is simple in appearance, but is very complex inside, just like our human body. - Yukihiro "matz" Matsumoto, creator of Ruby
  • 3. Example 0:Hash / Dictionary
  • 4. // 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");
  • 5. # Using RubyopenWith = { "txt" => "notepad.exe", "bmp" => "paint.exe", "dib" => "paint.exe", "rtf" => "wordpad.exe" }
  • 6. # Using Ruby 1.9openWith = { txt: "notepad.exe", bmp: "paint.exe", dib: "paint.exe", rtf: "wordpad.exe" }
  • 7. DO MORE withLESS CODE
  • 8. // 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");
  • 9. Example 1:Hello World
  • 10. puts "Hello World!"
  • 11. Example 2:Create a Binary Tree
  • 12. 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
  • 13. Example 2.1:Traverse the Binary Tree
  • 14. 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
  • 15. 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
  • 16. Example 3:Create a Person → Student → College Student class hierarchy
  • 17. 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"
  • 18. Example 4:Call a method in a "primitive"
  • 19. nil.methodstrue.object_id1.upto(10) do |x| puts xend
  • 20. Example 5: Find the sum of thesquares of all numbersunder 10,000 divisible by 3 and/or 5
  • 21. x = 1sum = 0while x < 10000 do if x % 3 == 0 or x % 5 == 0 sum += x * x endendputs sum
  • 22. puts (1..10000). select { |x| x % 3 == 0 or x % 5 == 0}. map {|x| x * x }. reduce(:+)
  • 23. Example 6: Find all employeesolder than 30 and sort by last name
  • 24. oldies = employees.select { |e| e.age > 30 }. sort { |e1, e2| e1.last_name <=> e2.last_name }
  • 25. Example 7:Assign a method to a variable
  • 26. hello = Proc.new { |string| puts "Hello #{string}" }hello.call "Alice"
  • 27. Example 8:Add a "plus" method to all numbers
  • 28. class Numeric def plus(value) self.+(value) endend
  • 29. Example 9: Define differentbehavior for different instances
  • 30. alice = Person.newbob = Person.newalice.instance_eval do def hello puts "Hello" endenddef bob.hello puts "Howdy!"end
  • 31. Example 10:Make Duck and Person swim
  • 32. module Swimmer def swim puts "This #{self.class} is swimming" endendclass Duck include Swimmerendclass Person include SwimmerendDuck.new.swimStudent.new.swim
  • 33. Example 0:Make a Twitter Clone
  • 34. $ rails new twitclone$ cd twitclone$ rails generate scaffold tweet message:string$ rake db:migrate$ rails server
  • 35. $ rails new twitclone$ cd twitclone$ rails generate scaffold tweet message:string$ rake db:migrate$ rails server
  • 36. Ruby on RailsISNT MAGIC
  • 37. Ruby Features
  • 38. Dynamic Object Oriented FunctionalMetaprogramming
  • 39. +
  • 40. Software Engineering"Best Practices"
  • 41. MVC CoC DRYTDD REST
  • 42. = Productivity
  • 43. = Magic?
  • 44. DO MORE withLESS CODE
  • 45. Rails Example:Demo a Twitter Clone
  • 46. https://github.com/bryanbibat/microblog31 Authentication – Devise Attachments – Paperclip Pagination – Kaminari Template Engine – Haml UI – Twitter Bootstrap
  • 47. Ruby Resources main site http://www.ruby-lang.org tutorials http://tryruby.orghttp://ruby.learncodethehardway.org/http://mislav.uniqpath.com/poignant-guide/
  • 48. Rails Resources main site http://rubyonrails.org/ tutorials http://ruby.railstutorial.org/ http://railsforzombies.org/ Windows Installer http://railsinstaller.org/
  • 49. Thank You For Listening! Philippine Ruby Users Group: http://pinoyrb.orghttps://groups.google.com/forum/#!forum/ruby-phil me: http://bryanbibat.net | @bry_bibat