Upcoming SlideShare
×

# Ruby and Rails by Example (GeekCamp edition)

2,549

Published on

Old presentation updated for Geek Camp Baguio May 2012

Published in: Technology
0 Likes
Statistics
Notes
• Full Name
Comment goes here.

Are you sure you want to Yes No
• Be the first to comment

• Be the first to like this

Views
Total Views
2,549
On Slideshare
0
From Embeds
0
Number of Embeds
0
Actions
Shares
0
36
0
Likes
0
Embeds 0
No embeds

No notes for slide

### Ruby and Rails by Example (GeekCamp edition)

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

Clipping is a handy way to collect important slides you want to go back to later.