Ruby
1. Taal
class  Application
{
    public  static  void  main(String[]  args)
    {
        System.out.println("Hello  World!");
   ...
puts  "Hello  World!"
import  java.io.InputStreamReader;
import  java.io.BufferedReader;

class  Application
{
        public  static  void  mai...
puts  "What  is  your  name?"
name  =  gets.chomp
puts  "Nice  to  meet  you,  #{name}!"
What  is  your  name?
Denis
Nice  to  meet  you,  Denis!
String  name  =  new  LibraryFactory
(AbstractFactoryFactoryWeight
().getFactoryAbstractFactory
().getFactoryFactory().get...
** *
#  dit  is  commentaar
#  dit  is  meer  commentaar
puts  'dit  is  geen  commentaar'
a  =  10

puts  'a  is  #{a}'
puts  "a  is  #{a}"

#  output:
#  a  is  #{a}
#  a  is  10
amount  =  42

if  amount  ==  42
    puts  "Perfect!"
end
amount  =  42



puts  "Perfect!"  if  amount  ==  42
amount  =  42

if  amount  <  10
    puts  "Not  enough"
elsif  amount  <  50
    puts  "Enough"
else
    puts  "Too  much...
names  =  [  'Thomas',  'Dieter',  'Denis',
                    'Ruben',  'Hendrik',  'Niels',
                    'Wim', ...
names  =  [  'Thomas',  'Dieter',  'Denis',
                    'Ruben',  'Hendrik',  'Niels',
                    'Wim', ...
names  =  [  'Thomas',  'Dieter',  'Denis',
                    'Ruben',  'Hendrik',  'Niels',
                    'Wim', ...
(31..47).each  do  |i|
    puts  i
end
10.times  do
    puts  "Hello"
end
count  =  0
while  gets
    count  +=  1
end
puts  "Number  of  lines:  #{count}"
count  =  0

count  +=  1  while  gets

puts  "Number  of  lines:  #{count}"
def  print_welcome_message
    puts  "Hello!"
    puts  "I  am  a  function."
end

print_welcome_message
def  fact(n)
    if  n  ==  0
        return  1
    else
        return  n  *  fact(n-­‐1)
    end
end

puts  fact(10)
def  fact(n)
    if  n  ==  0
        1
    else
        n  *  fact(n-­‐1)
    end
end

puts  fact(10)
def  fact(n)
    if  n  ==  0
        1
    else
        n  *  fact(n-­‐1)
    end
end

puts  fact(1000)
402387260077093773543702433923003985719374864210714632543799910429938512398629020592044208486969404
8004799886101971960586...
def  do_stuff
    a  =  4
    puts  "inside  the  function,  a  is  #{a}"
end

a  =  1
do_stuff
puts  "outside  the  funct...
def  do_stuff
    $a  =  4
    puts  "inside  the  function,  $a  is  #{$a}"
end

$a  =  1
do_stuff
puts  "outside  the  f...
class  Person

    def  initialize(first_name,  last_name)
        @first_name  =  first_name
        @last_name    =  las...
p  =  Person.new('Denis',  'Defreyne')
puts  "I  am  #{p.get_first_name}."
class  Person




    def  initialize(first_name,  last_name)
        @first_name  =  first_name
        @last_name    =  ...
class  Person

    attr_reader  :first_name,  :last_name

    def  initialize(first_name,  last_name)
        @first_name ...
p  =  Person.new('Denis',  'Defreyne')
puts  "I  am  #{p.first_name}."
people  =  [
    Person.new('Denis',      'Defreyne'),
    Person.new('Wim',          'Vander  Schelden'),
    Person.new(...
people.each  do  |person|
    puts  "-­‐  #{person.first_name}"
end
-­‐  Denis
-­‐  Wim
-­‐  Dieter
-­‐  Ruben
-­‐  Niels
-­‐  Thomas
-­‐  Hendrik
-­‐  Wouter
some_people  =  people.select  do  |person|
    person.first_name  =~  /^[A-­‐M]/
end

some_people.each  do  |person|
    ...
-­‐  Denis
-­‐  Dieter
-­‐  Hendrik
first_names  =  people.map  do  |person|
    person.first_name
end

first_names.each  do  |first_name|
    puts  "-­‐  #{f...
-­‐  Denis
-­‐  Wim
-­‐  Dieter
-­‐  Ruben
-­‐  Niels
-­‐  Thomas
-­‐  Hendrik
-­‐  Wouter
first_names  =  people.map  do  |person|
    person.first_name
end

puts  first_names.join(',  ')
Denis,  Wim,  Dieter,  Ruben,  Niels,  Thomas,  
Hendrik,  Wouter
i  =  0
loop  do
    puts  "#{i}..."
    i  +=  1
end
i  =  0
while  i  <  100
    puts  "#{i}..."
    i  +=  1
end
:symbol

'string'
wim  =  {
    :first_name  =>  'Wim',
    :last_name    =>  'Verschelden'
}

puts  "Last  name:  #{wim[:last_name]}"

wim[...
if  false
    puts  "this  message  will  not  be  printed"
end
if  nil
    puts  "this  message  will  not  be  printed"
end
if  0
    puts  "this  message  will  be  printed"
end
puts  "Lorem  ipsum  dolor  sit  amet..."
puts("Lorem  ipsum  dolor  sit  amet...")
my_list  =  []

if  my_list.empty?
    puts  "My  list  is  empty  :("
end
my_list  =  [  'foo',  'bar',  'baz'  ]

if  my_list.include?('foo')
    puts  "My  list  includes  'foo'."
end
class  String
    def  palindrome?
        self.reverse  ==  self
    end
end
if  "straat".palindrome?
    puts  "'straat'  is  een  palindroom."
else
    puts  "'straat'  is  geen  palindroom."
end
words  =  [  'racecar',  'daad',  'straat',
                    'koortsmeetsysteemstrook'  ]

palindromes  =  words.select...
filename  =  '/usr/share/dict/words'
words  =  File.read(filename).split("n")

palindromes  =  words.select  do  |w|
    w...
deedeed
degged
hallah
kakkak
murdrum
redder
repaper
retter
reviver
rotator
sooloos
tebbet
terret
email  =  'denis.defreyne@stoneship.org'

puts  email.sub('@',  '  [AT]  ')
#  denis.defreyne  [AT]  stoneship.org

puts  ...
email  =  'denis.defreyne@stoneship.org'

email.sub!('@',  '  [AT]  ')
puts  email
#  denis.defreyne  [AT]  stoneship.org
module  PalindromeChecking
    def  palindrome?
        self.reverse  ==  self
    end
end

class  String
    include  Pal...
puts  'racecar'.palindrome?
#  true

puts  'straat'.palindrome?
#  false
puts  [  1,  2,  4,  8,  4,  2,  1  ].palindrome?
#  true

puts  [  1,  2,  3,  4,  5,  6,  7  ].palindrome?
#  false
"asdf".blahblah
NoMethodError:  undefined  method  `blahblah'  for  "asdf":String
   from  (irb):1
nil.reverse
NoMethodError:  undefined  method  `reverse'  for  nil:NilClass
   from  (irb):2
nil.nil?
#  true
begin
    nil.reverse
rescue
    puts  'tis  om  zeep  :('
end
tis  om  zeep  :(
def  foobarize(s)
    raise  ArgumentError.new('fail')  unless  s

    'foobar'
end

foobarize(nil)
ArgumentError:  fail
   from  (irb):8:in  `foobarize'
   from  (irb):12
   from  /usr/local/ruby/bin/irb:12:in  `<main>'
begin
    foobarize(nil)
rescue  ArgumentError  =>  e
    puts  'tis  om  zeep  :('
    puts  e.inspect
end
tis  om  zeep  :(
#<ArgumentError:  fail>
def  twice
    yield
    yield
end

twice  do
    puts  "Hello  World"
end
Hello  World
Hello  World
2. Testing
Unit Tests
class  ExampleTest  <  Test::Unit::TestCase

    def  test_bob
        assert_equal('BOB',  'bob'.upcase)
    end

end
▸  testrb  test.rb


Loaded  suite  test.rb
Started
.
Finished  in  0.000341  seconds.

1  tests,  1  assertions,  0  fail...
class  ExampleTest  <  Test::Unit::TestCase

    def  test_bob
        assert_equal('BOB',  'bob'.upcase)
    end

    def...
Loaded  suite  test.rb
Started
.F
Finished  in  0.029604  seconds.

    1)  Failure:
test_mike(ExampleTest)  [test.rb:10]:...
▸  rake
(in  ~/Documents/Development/nanoc/nanoc-­‐2.1.x)
Loaded  suite  rake_test_loader
Started
...........................
Mocks + Stubs
class  Person

    attr_accessor  :first_name,  :last_name

    def  initialize(first_name,  last_name)
        @first_nam...
class  PersonAnalyser

    def  initialize(person)
        @person  =  person
    end

    def  number_of_parts_in_last_na...
def  test_number_of_parts_in_last_name_with_one_part
    person  =  Person.new('Denis',  'Defreyne')




    person_analys...
def  test_number_of_parts_in_last_name_with_two_parts
    person  =  Person.new('Wim',  'Vander  Schelden')




    person...
def  test_number_of_parts_in_last_name_with_one_part
    person  =  mock
    person.stubs(:first_name).returns('Denis')
  ...
def  test_number_of_parts_in_last_name_with_two_parts
    person  =  mock
    person.stubs(:first_name).returns('Wim')
   ...
Loaded  suite  test.rb
Started
....
Finished  in  0.000934  seconds.

4  tests,  4  assertions,  0  failures,  0  errors
Specs
describe  'String'  do

    it  'must  be  able  to  reverse  a  string'  do
        'bob'.reverse.must_equal  'bob'
     ...
it  'must  be  able  to  upcase  strings'  do
   'bob'.upcase.must_equal  'BOB'
   'mike'.upcase.must_equal  'MIKE'
end
3. Tools
irb
▸  irb

irb(main):001:0>  "Hello".reverse
=>  "olleH"
irb(main):002:0>  "Test".upcase
=>  "TEST"
nokogiri
require  'nokogiri'

url  =  'http://mystonline.com/'
doc  =  Nokogiri::HTML(open(url))

links  =  doc.css('a')
links.each...
rubygems
▸  ruby  nokogiri-­‐test.rb
test.rb:1:in  `require':  no  such  file  to  load  -­‐-­‐  
nokogiri  (LoadError)
   from  te...
▸  sudo  gem  install  nokogiri
Successfully  installed  nokogiri-­‐1.1.1
1  gem  installed
ruby-dbi
DBI.connect('DBI:SQLite3:test.db')  do  |dbh|
    #  …
end
dbh.prepare('INSERT  INTO  people  VALUES  (?)')  do  |sth|
    sth.execute('Denis  Defreyne')
    sth.execute('Wim  Vande...
activerecord
class  Person  <  ActiveRecord::Base
end
denis  =  Person.create(
    :first_name  =>  'Denis',
    :last_name  =>  'Defreyne')

wim  =  Person.create(
    :first_...
p  =  Person.find_by_first_name('Denis')
puts  "Last  name:  "  +  p.last_name
yaml
development:
    driver:  sqlite3
    dbfile:  myapp.db

production:
    driver:  postgresql
    dbname:  myapp
    userna...
config  =  YAML.load_file('config.yaml')

puts  config['production']['driver']
#  postgresql
ramaze
class  MainController  <  Ramaze::Controller

    def  index
        if  session[:ponies]
            "OMG!!!  PONIES!!!"
...
erb
Go  to  the  <%=  link_to  'Home  page',  :home  %>.
<ol  id="nav">
    <li><%=  link_to  'home',              '/'                      %></li>
    <li><%=  link_to  'journal'...
rake
task  :foo  do
    puts  "Doing  foo  stuff..."
end

task  :default  =>  [  :foo  ]
▸  rake

Doing  foo  stuff...
you can haz
questions?
Upcoming SlideShare
Loading in...5
×

Ruby

1,447

Published on

An introduction to Ruby.

Published in: Technology, Education
0 Comments
1 Like
Statistics
Notes
  • Be the first to comment

No Downloads
Views
Total Views
1,447
On Slideshare
0
From Embeds
0
Number of Embeds
0
Actions
Shares
0
Downloads
40
Comments
0
Likes
1
Embeds 0
No embeds

No notes for slide

Ruby

  1. 1. Ruby
  2. 2. 1. Taal
  3. 3. class  Application {    public  static  void  main(String[]  args)    {        System.out.println("Hello  World!");    } }
  4. 4. puts  "Hello  World!"
  5. 5. import  java.io.InputStreamReader; import  java.io.BufferedReader; class  Application {        public  static  void  main(String[]  args)        {                System.out.println("What  is  your  name?");                String  name  =  "";                InputStreamReader  input  =  new  InputStreamReader(System.in);                BufferedReader  reader  =  new  BufferedReader(input);                try                {                        name  =  reader.readLine().trim();                }                catch(Exception  e)  {  ;  }                System.out.println("Nice  to  meet  you,  "  +  name  +  '!');        } }
  6. 6. puts  "What  is  your  name?" name  =  gets.chomp puts  "Nice  to  meet  you,  #{name}!"
  7. 7. What  is  your  name? Denis Nice  to  meet  you,  Denis!
  8. 8. String  name  =  new  LibraryFactory (AbstractFactoryFactoryWeight ().getFactoryAbstractFactory ().getFactoryFactory().getFactory ().getAbstractSystem ().getConsoleFactory().getConsolable ().injectDependency(ReadingFactory ().getReader())).getLineFactory ().getLine().read();
  9. 9. ** *
  10. 10. #  dit  is  commentaar #  dit  is  meer  commentaar puts  'dit  is  geen  commentaar'
  11. 11. a  =  10 puts  'a  is  #{a}' puts  "a  is  #{a}" #  output: #  a  is  #{a} #  a  is  10
  12. 12. amount  =  42 if  amount  ==  42    puts  "Perfect!" end
  13. 13. amount  =  42 puts  "Perfect!"  if  amount  ==  42
  14. 14. amount  =  42 if  amount  <  10    puts  "Not  enough" elsif  amount  <  50    puts  "Enough" else    puts  "Too  much" end
  15. 15. names  =  [  'Thomas',  'Dieter',  'Denis',                    'Ruben',  'Hendrik',  'Niels',                    'Wim',  'Wouter'  ] for  name  in  names  do    puts  "Hello  #{name}" end
  16. 16. names  =  [  'Thomas',  'Dieter',  'Denis',                    'Ruben',  'Hendrik',  'Niels',                    'Wim',  'Wouter'  ] names.each  do  |name|    puts  "Hello  #{name}" end
  17. 17. names  =  [  'Thomas',  'Dieter',  'Denis',                    'Ruben',  'Hendrik',  'Niels',                    'Wim',  'Wouter'  ] names.sort.each  do  |name|    puts  "Hello  #{name}" end
  18. 18. (31..47).each  do  |i|    puts  i end
  19. 19. 10.times  do    puts  "Hello" end
  20. 20. count  =  0 while  gets    count  +=  1 end puts  "Number  of  lines:  #{count}"
  21. 21. count  =  0 count  +=  1  while  gets puts  "Number  of  lines:  #{count}"
  22. 22. def  print_welcome_message    puts  "Hello!"    puts  "I  am  a  function." end print_welcome_message
  23. 23. def  fact(n)    if  n  ==  0        return  1    else        return  n  *  fact(n-­‐1)    end end puts  fact(10)
  24. 24. def  fact(n)    if  n  ==  0        1    else        n  *  fact(n-­‐1)    end end puts  fact(10)
  25. 25. def  fact(n)    if  n  ==  0        1    else        n  *  fact(n-­‐1)    end end puts  fact(1000)
  26. 26. 402387260077093773543702433923003985719374864210714632543799910429938512398629020592044208486969404 800479988610197196058631666872994808558901323829669944590997424504087073759918823627727188732519779 505950995276120874975462497043601418278094646496291056393887437886487337119181045825783647849977012 476632889835955735432513185323958463075557409114262417474349347553428646576611667797396668820291207 379143853719588249808126867838374559731746136085379534524221586593201928090878297308431392844403281 231558611036976801357304216168747609675871348312025478589320767169132448426236131412508780208000261 683151027341827977704784635868170164365024153691398281264810213092761244896359928705114964975419909 342221566832572080821333186116811553615836546984046708975602900950537616475847728421889679646244945 160765353408198901385442487984959953319101723355556602139450399736280750137837615307127761926849034 352625200015888535147331611702103968175921510907788019393178114194545257223865541461062892187960223 838971476088506276862967146674697562911234082439208160153780889893964518263243671616762179168909779 911903754031274622289988005195444414282012187361745992642956581746628302955570299024324153181617210 465832036786906117260158783520751516284225540265170483304226143974286933061690897968482590125458327 168226458066526769958652682272807075781391858178889652208164348344825993266043367660176999612831860 788386150279465955131156552036093988180612138558600301435694527224206344631797460594682573103790084 024432438465657245014402821885252470935190620929023136493273497565513958720559654228749774011413346 962715422845862377387538230483865688976461927383814900140767310446640259899490222221765904339901886 018566526485061799702356193897017860040811889729918311021171229845901641921068884387121855646124960 798722908519296819372388642614839657382291123125024186649353143970137428531926649875337218940694281 434118520158014123344828015051399694290153483077644569099073152433278288269864602789864321139083506 217095002597389863554277196742822248757586765752344220207573630569498825087968928162753848863396909 959826280956121450994871701244516461260379029309120889086942028510640182154399457156805941872748998 094254742173582401063677404595741785160829230135358081840096996372524230560855903700624271243416909 004153690105933983835777939410970027753472000000000000000000000000000000000000000000000000000000000 000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000 000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000
  27. 27. def  do_stuff    a  =  4    puts  "inside  the  function,  a  is  #{a}" end a  =  1 do_stuff puts  "outside  the  function,  a  is  #{a}" #  output: #  inside  the  function,  a  is  4 #  outside  the  function,  a  is  1
  28. 28. def  do_stuff    $a  =  4    puts  "inside  the  function,  $a  is  #{$a}" end $a  =  1 do_stuff puts  "outside  the  function,  $a  is  #{$a}" #  output: #  inside  the  function,  $a  is  4 #  outside  the  function,  $a  is  4
  29. 29. class  Person    def  initialize(first_name,  last_name)        @first_name  =  first_name        @last_name    =  last_name    end    def  get_first_name        @first_name    end    def  get_last_name        @last_name    end end
  30. 30. p  =  Person.new('Denis',  'Defreyne') puts  "I  am  #{p.get_first_name}."
  31. 31. class  Person    def  initialize(first_name,  last_name)        @first_name  =  first_name        @last_name    =  last_name    end    def  get_first_name        @first_name    end    def  get_last_name        @last_name    end end
  32. 32. class  Person    attr_reader  :first_name,  :last_name    def  initialize(first_name,  last_name)        @first_name  =  first_name        @last_name    =  last_name    end end
  33. 33. p  =  Person.new('Denis',  'Defreyne') puts  "I  am  #{p.first_name}."
  34. 34. people  =  [    Person.new('Denis',      'Defreyne'),    Person.new('Wim',          'Vander  Schelden'),    Person.new('Dieter',    'De  Paepe'),    Person.new('Ruben',      'Verborgh'),    Person.new('Niels',      'Soetens'),    Person.new('Thomas',    'Spranghers'),    Person.new('Hendrik',  'Moens'),    Person.new('Wouter',    'Van  Isterdael') ]
  35. 35. people.each  do  |person|    puts  "-­‐  #{person.first_name}" end
  36. 36. -­‐  Denis -­‐  Wim -­‐  Dieter -­‐  Ruben -­‐  Niels -­‐  Thomas -­‐  Hendrik -­‐  Wouter
  37. 37. some_people  =  people.select  do  |person|    person.first_name  =~  /^[A-­‐M]/ end some_people.each  do  |person|    puts  "-­‐  #{person.first_name}" end
  38. 38. -­‐  Denis -­‐  Dieter -­‐  Hendrik
  39. 39. first_names  =  people.map  do  |person|    person.first_name end first_names.each  do  |first_name|    puts  "-­‐  #{first_name}" end
  40. 40. -­‐  Denis -­‐  Wim -­‐  Dieter -­‐  Ruben -­‐  Niels -­‐  Thomas -­‐  Hendrik -­‐  Wouter
  41. 41. first_names  =  people.map  do  |person|    person.first_name end puts  first_names.join(',  ')
  42. 42. Denis,  Wim,  Dieter,  Ruben,  Niels,  Thomas,   Hendrik,  Wouter
  43. 43. i  =  0 loop  do    puts  "#{i}..."    i  +=  1 end
  44. 44. i  =  0 while  i  <  100    puts  "#{i}..."    i  +=  1 end
  45. 45. :symbol 'string'
  46. 46. wim  =  {    :first_name  =>  'Wim',    :last_name    =>  'Verschelden' } puts  "Last  name:  #{wim[:last_name]}" wim[:last_name]  =  'Vander  Schelden' puts  "Last  name:  #{wim[:last_name]}"
  47. 47. if  false    puts  "this  message  will  not  be  printed" end
  48. 48. if  nil    puts  "this  message  will  not  be  printed" end
  49. 49. if  0    puts  "this  message  will  be  printed" end
  50. 50. puts  "Lorem  ipsum  dolor  sit  amet..." puts("Lorem  ipsum  dolor  sit  amet...")
  51. 51. my_list  =  [] if  my_list.empty?    puts  "My  list  is  empty  :(" end
  52. 52. my_list  =  [  'foo',  'bar',  'baz'  ] if  my_list.include?('foo')    puts  "My  list  includes  'foo'." end
  53. 53. class  String    def  palindrome?        self.reverse  ==  self    end end
  54. 54. if  "straat".palindrome?    puts  "'straat'  is  een  palindroom." else    puts  "'straat'  is  geen  palindroom." end
  55. 55. words  =  [  'racecar',  'daad',  'straat',                    'koortsmeetsysteemstrook'  ] palindromes  =  words.select  do  |w|    w.palindrome? end palindromes.each  {  |p|  puts  p  }
  56. 56. filename  =  '/usr/share/dict/words' words  =  File.read(filename).split("n") palindromes  =  words.select  do  |w|    w.palindrome?  &&  w.size  >  5 end palindromes.each  {  |p|  puts  p  }
  57. 57. deedeed degged hallah kakkak murdrum redder repaper retter reviver rotator sooloos tebbet terret
  58. 58. email  =  'denis.defreyne@stoneship.org' puts  email.sub('@',  '  [AT]  ') #  denis.defreyne  [AT]  stoneship.org puts  email #  denis.defreyne@stoneship.org
  59. 59. email  =  'denis.defreyne@stoneship.org' email.sub!('@',  '  [AT]  ') puts  email #  denis.defreyne  [AT]  stoneship.org
  60. 60. module  PalindromeChecking    def  palindrome?        self.reverse  ==  self    end end class  String    include  PalindromeChecking end class  Array    include  PalindromeChecking end
  61. 61. puts  'racecar'.palindrome? #  true puts  'straat'.palindrome? #  false
  62. 62. puts  [  1,  2,  4,  8,  4,  2,  1  ].palindrome? #  true puts  [  1,  2,  3,  4,  5,  6,  7  ].palindrome? #  false
  63. 63. "asdf".blahblah
  64. 64. NoMethodError:  undefined  method  `blahblah'  for  "asdf":String   from  (irb):1
  65. 65. nil.reverse
  66. 66. NoMethodError:  undefined  method  `reverse'  for  nil:NilClass   from  (irb):2
  67. 67. nil.nil? #  true
  68. 68. begin    nil.reverse rescue    puts  'tis  om  zeep  :(' end
  69. 69. tis  om  zeep  :(
  70. 70. def  foobarize(s)    raise  ArgumentError.new('fail')  unless  s    'foobar' end foobarize(nil)
  71. 71. ArgumentError:  fail   from  (irb):8:in  `foobarize'   from  (irb):12   from  /usr/local/ruby/bin/irb:12:in  `<main>'
  72. 72. begin    foobarize(nil) rescue  ArgumentError  =>  e    puts  'tis  om  zeep  :('    puts  e.inspect end
  73. 73. tis  om  zeep  :( #<ArgumentError:  fail>
  74. 74. def  twice    yield    yield end twice  do    puts  "Hello  World" end
  75. 75. Hello  World Hello  World
  76. 76. 2. Testing
  77. 77. Unit Tests
  78. 78. class  ExampleTest  <  Test::Unit::TestCase    def  test_bob        assert_equal('BOB',  'bob'.upcase)    end end
  79. 79. ▸  testrb  test.rb Loaded  suite  test.rb Started . Finished  in  0.000341  seconds. 1  tests,  1  assertions,  0  failures,  0  errors
  80. 80. class  ExampleTest  <  Test::Unit::TestCase    def  test_bob        assert_equal('BOB',  'bob'.upcase)    end    def  test_mike        assert_equal('BOB',  'mike'.upcase)    end end
  81. 81. Loaded  suite  test.rb Started .F Finished  in  0.029604  seconds.    1)  Failure: test_mike(ExampleTest)  [test.rb:10]: <"BOB">  expected  but  was <"MIKE">. 2  tests,  2  assertions,  1  failures,  0  errors
  82. 82. ▸  rake (in  ~/Documents/Development/nanoc/nanoc-­‐2.1.x) Loaded  suite  rake_test_loader Started .................................................... .................................................... .................................................... .................................................... .................................................... .................................................... ................................ Finished  in  9.425028  seconds. 344  tests,  1286  assertions,  0  failures,  0  errors
  83. 83. Mocks + Stubs
  84. 84. class  Person    attr_accessor  :first_name,  :last_name    def  initialize(first_name,  last_name)        @first_name  =  first_name        @last_name    =  last_name    end end
  85. 85. class  PersonAnalyser    def  initialize(person)        @person  =  person    end    def  number_of_parts_in_last_name        @person.last_name.split(/s+/).size    end end
  86. 86. def  test_number_of_parts_in_last_name_with_one_part    person  =  Person.new('Denis',  'Defreyne')    person_analyser  =  PersonAnalyser.new(person)    assert_equal(1,        person_analyser.number_of_parts_in_last_name) end
  87. 87. def  test_number_of_parts_in_last_name_with_two_parts    person  =  Person.new('Wim',  'Vander  Schelden')    person_analyser  =  PersonAnalyser.new(person)    assert_equal(2,        person_analyser.number_of_parts_in_last_name) end
  88. 88. def  test_number_of_parts_in_last_name_with_one_part    person  =  mock    person.stubs(:first_name).returns('Denis')    person.stubs(:last_name).returns('Defreyne')    person_analyser  =  PersonAnalyser.new(person)    assert_equal(1,        person_analyser.number_of_parts_in_last_name) end
  89. 89. def  test_number_of_parts_in_last_name_with_two_parts    person  =  mock    person.stubs(:first_name).returns('Wim')    person.stubs(:last_name).returns('Vander  Schelden')    person_analyser  =  PersonAnalyser.new(person)    assert_equal(2,        person_analyser.number_of_parts_in_last_name) end
  90. 90. Loaded  suite  test.rb Started .... Finished  in  0.000934  seconds. 4  tests,  4  assertions,  0  failures,  0  errors
  91. 91. Specs
  92. 92. describe  'String'  do    it  'must  be  able  to  reverse  a  string'  do        'bob'.reverse.must_equal  'bob'        'mike'.reverse.must_equal  'ekim'        'the  birds  sing  a  pretty  song'.reverse.must_equal            'gnos  ytterp  a  gnis  sdrib  eht'    end end
  93. 93. it  'must  be  able  to  upcase  strings'  do   'bob'.upcase.must_equal  'BOB'   'mike'.upcase.must_equal  'MIKE' end
  94. 94. 3. Tools
  95. 95. irb
  96. 96. ▸  irb irb(main):001:0>  "Hello".reverse =>  "olleH" irb(main):002:0>  "Test".upcase =>  "TEST"
  97. 97. nokogiri
  98. 98. require  'nokogiri' url  =  'http://mystonline.com/' doc  =  Nokogiri::HTML(open(url)) links  =  doc.css('a') links.each  do  |link|    text  =  link.content    href  =  link.attributes['href']    puts  "'#{text}'  links  to  #{href}." end
  99. 99. rubygems
  100. 100. ▸  ruby  nokogiri-­‐test.rb test.rb:1:in  `require':  no  such  file  to  load  -­‐-­‐   nokogiri  (LoadError)   from  test.rb:1
  101. 101. ▸  sudo  gem  install  nokogiri Successfully  installed  nokogiri-­‐1.1.1 1  gem  installed
  102. 102. ruby-dbi
  103. 103. DBI.connect('DBI:SQLite3:test.db')  do  |dbh|    #  … end
  104. 104. dbh.prepare('INSERT  INTO  people  VALUES  (?)')  do  |sth|    sth.execute('Denis  Defreyne')    sth.execute('Wim  Vander  Schelden')    sth.execute('Sinterklaas')    sth.execute('Luke  Skywalker') end
  105. 105. activerecord
  106. 106. class  Person  <  ActiveRecord::Base end
  107. 107. denis  =  Person.create(    :first_name  =>  'Denis',    :last_name  =>  'Defreyne') wim  =  Person.create(    :first_name  =>  'Wim',    :last_name  =>  'Vander  Schelden')
  108. 108. p  =  Person.find_by_first_name('Denis') puts  "Last  name:  "  +  p.last_name
  109. 109. yaml
  110. 110. development:    driver:  sqlite3    dbfile:  myapp.db production:    driver:  postgresql    dbname:  myapp    username:  bob    password:  4l1c3
  111. 111. config  =  YAML.load_file('config.yaml') puts  config['production']['driver'] #  postgresql
  112. 112. ramaze
  113. 113. class  MainController  <  Ramaze::Controller    def  index        if  session[:ponies]            "OMG!!!  PONIES!!!"        else            "No  ponies  :("        end    end    def  give_me_ponies        session[:ponies]  =  true        redirect  Rs(:index)    end end
  114. 114. erb
  115. 115. Go  to  the  <%=  link_to  'Home  page',  :home  %>.
  116. 116. <ol  id="nav">    <li><%=  link_to  'home',              '/'                      %></li>    <li><%=  link_to  'journal',        '/journal/'      %></li>    <li><%=  link_to  'about',            '/about/'          %></li>    <li><%=  link_to  'software',      '/software/'    %></li>    <li><%=  link_to  'web  design',  '/webdesign/'  %></li>    <li><%=  link_to  'myst',              '/myst/'            %></li> </ol>
  117. 117. rake
  118. 118. task  :foo  do    puts  "Doing  foo  stuff..." end task  :default  =>  [  :foo  ]
  119. 119. ▸  rake Doing  foo  stuff...
  120. 120. you can haz questions?
  1. A particular slide catching your eye?

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

×