Ruby
Upcoming SlideShare
Loading in...5
×

Like this? Share it with your network

Share
  • Full Name Full Name Comment goes here.
    Are you sure you want to
    Your message goes here
    Be the first to comment
No Downloads

Views

Total Views
1,995
On Slideshare
1,991
From Embeds
4
Number of Embeds
1

Actions

Shares
Downloads
38
Comments
0
Likes
1

Embeds 4

http://www.slideshare.net 4

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
  • 2. 1. Taal
  • 3. class  Application {    public  static  void  main(String[]  args)    {        System.out.println("Hello  World!");    } }
  • 4. puts  "Hello  World!"
  • 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. puts  "What  is  your  name?" name  =  gets.chomp puts  "Nice  to  meet  you,  #{name}!"
  • 7. What  is  your  name? Denis Nice  to  meet  you,  Denis!
  • 8. String  name  =  new  LibraryFactory (AbstractFactoryFactoryWeight ().getFactoryAbstractFactory ().getFactoryFactory().getFactory ().getAbstractSystem ().getConsoleFactory().getConsolable ().injectDependency(ReadingFactory ().getReader())).getLineFactory ().getLine().read();
  • 9. ** *
  • 10. #  dit  is  commentaar #  dit  is  meer  commentaar puts  'dit  is  geen  commentaar'
  • 11. a  =  10 puts  'a  is  #{a}' puts  "a  is  #{a}" #  output: #  a  is  #{a} #  a  is  10
  • 12. amount  =  42 if  amount  ==  42    puts  "Perfect!" end
  • 13. amount  =  42 puts  "Perfect!"  if  amount  ==  42
  • 14. amount  =  42 if  amount  <  10    puts  "Not  enough" elsif  amount  <  50    puts  "Enough" else    puts  "Too  much" end
  • 15. names  =  [  'Thomas',  'Dieter',  'Denis',                    'Ruben',  'Hendrik',  'Niels',                    'Wim',  'Wouter'  ] for  name  in  names  do    puts  "Hello  #{name}" end
  • 16. names  =  [  'Thomas',  'Dieter',  'Denis',                    'Ruben',  'Hendrik',  'Niels',                    'Wim',  'Wouter'  ] names.each  do  |name|    puts  "Hello  #{name}" end
  • 17. names  =  [  'Thomas',  'Dieter',  'Denis',                    'Ruben',  'Hendrik',  'Niels',                    'Wim',  'Wouter'  ] names.sort.each  do  |name|    puts  "Hello  #{name}" end
  • 18. (31..47).each  do  |i|    puts  i end
  • 19. 10.times  do    puts  "Hello" end
  • 20. count  =  0 while  gets    count  +=  1 end puts  "Number  of  lines:  #{count}"
  • 21. count  =  0 count  +=  1  while  gets puts  "Number  of  lines:  #{count}"
  • 22. def  print_welcome_message    puts  "Hello!"    puts  "I  am  a  function." end print_welcome_message
  • 23. def  fact(n)    if  n  ==  0        return  1    else        return  n  *  fact(n-­‐1)    end end puts  fact(10)
  • 24. def  fact(n)    if  n  ==  0        1    else        n  *  fact(n-­‐1)    end end puts  fact(10)
  • 25. def  fact(n)    if  n  ==  0        1    else        n  *  fact(n-­‐1)    end end puts  fact(1000)
  • 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. 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. 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. 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. p  =  Person.new('Denis',  'Defreyne') puts  "I  am  #{p.get_first_name}."
  • 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. 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. p  =  Person.new('Denis',  'Defreyne') puts  "I  am  #{p.first_name}."
  • 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. people.each  do  |person|    puts  "-­‐  #{person.first_name}" end
  • 36. -­‐  Denis -­‐  Wim -­‐  Dieter -­‐  Ruben -­‐  Niels -­‐  Thomas -­‐  Hendrik -­‐  Wouter
  • 37. some_people  =  people.select  do  |person|    person.first_name  =~  /^[A-­‐M]/ end some_people.each  do  |person|    puts  "-­‐  #{person.first_name}" end
  • 38. -­‐  Denis -­‐  Dieter -­‐  Hendrik
  • 39. first_names  =  people.map  do  |person|    person.first_name end first_names.each  do  |first_name|    puts  "-­‐  #{first_name}" end
  • 40. -­‐  Denis -­‐  Wim -­‐  Dieter -­‐  Ruben -­‐  Niels -­‐  Thomas -­‐  Hendrik -­‐  Wouter
  • 41. first_names  =  people.map  do  |person|    person.first_name end puts  first_names.join(',  ')
  • 42. Denis,  Wim,  Dieter,  Ruben,  Niels,  Thomas,   Hendrik,  Wouter
  • 43. i  =  0 loop  do    puts  "#{i}..."    i  +=  1 end
  • 44. i  =  0 while  i  <  100    puts  "#{i}..."    i  +=  1 end
  • 45. :symbol 'string'
  • 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. if  false    puts  "this  message  will  not  be  printed" end
  • 48. if  nil    puts  "this  message  will  not  be  printed" end
  • 49. if  0    puts  "this  message  will  be  printed" end
  • 50. puts  "Lorem  ipsum  dolor  sit  amet..." puts("Lorem  ipsum  dolor  sit  amet...")
  • 51. my_list  =  [] if  my_list.empty?    puts  "My  list  is  empty  :(" end
  • 52. my_list  =  [  'foo',  'bar',  'baz'  ] if  my_list.include?('foo')    puts  "My  list  includes  'foo'." end
  • 53. class  String    def  palindrome?        self.reverse  ==  self    end end
  • 54. if  "straat".palindrome?    puts  "'straat'  is  een  palindroom." else    puts  "'straat'  is  geen  palindroom." end
  • 55. words  =  [  'racecar',  'daad',  'straat',                    'koortsmeetsysteemstrook'  ] palindromes  =  words.select  do  |w|    w.palindrome? end palindromes.each  {  |p|  puts  p  }
  • 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. deedeed degged hallah kakkak murdrum redder repaper retter reviver rotator sooloos tebbet terret
  • 58. email  =  'denis.defreyne@stoneship.org' puts  email.sub('@',  '  [AT]  ') #  denis.defreyne  [AT]  stoneship.org puts  email #  denis.defreyne@stoneship.org
  • 59. email  =  'denis.defreyne@stoneship.org' email.sub!('@',  '  [AT]  ') puts  email #  denis.defreyne  [AT]  stoneship.org
  • 60. module  PalindromeChecking    def  palindrome?        self.reverse  ==  self    end end class  String    include  PalindromeChecking end class  Array    include  PalindromeChecking end
  • 61. puts  'racecar'.palindrome? #  true puts  'straat'.palindrome? #  false
  • 62. puts  [  1,  2,  4,  8,  4,  2,  1  ].palindrome? #  true puts  [  1,  2,  3,  4,  5,  6,  7  ].palindrome? #  false
  • 63. "asdf".blahblah
  • 64. NoMethodError:  undefined  method  `blahblah'  for  "asdf":String   from  (irb):1
  • 65. nil.reverse
  • 66. NoMethodError:  undefined  method  `reverse'  for  nil:NilClass   from  (irb):2
  • 67. nil.nil? #  true
  • 68. begin    nil.reverse rescue    puts  'tis  om  zeep  :(' end
  • 69. tis  om  zeep  :(
  • 70. def  foobarize(s)    raise  ArgumentError.new('fail')  unless  s    'foobar' end foobarize(nil)
  • 71. ArgumentError:  fail   from  (irb):8:in  `foobarize'   from  (irb):12   from  /usr/local/ruby/bin/irb:12:in  `<main>'
  • 72. begin    foobarize(nil) rescue  ArgumentError  =>  e    puts  'tis  om  zeep  :('    puts  e.inspect end
  • 73. tis  om  zeep  :( #<ArgumentError:  fail>
  • 74. def  twice    yield    yield end twice  do    puts  "Hello  World" end
  • 75. Hello  World Hello  World
  • 76. 2. Testing
  • 77. Unit Tests
  • 78. class  ExampleTest  <  Test::Unit::TestCase    def  test_bob        assert_equal('BOB',  'bob'.upcase)    end end
  • 79. ▸  testrb  test.rb Loaded  suite  test.rb Started . Finished  in  0.000341  seconds. 1  tests,  1  assertions,  0  failures,  0  errors
  • 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. 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. ▸  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. Mocks + Stubs
  • 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. class  PersonAnalyser    def  initialize(person)        @person  =  person    end    def  number_of_parts_in_last_name        @person.last_name.split(/s+/).size    end end
  • 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. 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. 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. 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. Loaded  suite  test.rb Started .... Finished  in  0.000934  seconds. 4  tests,  4  assertions,  0  failures,  0  errors
  • 91. Specs
  • 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. it  'must  be  able  to  upcase  strings'  do   'bob'.upcase.must_equal  'BOB'   'mike'.upcase.must_equal  'MIKE' end
  • 94. 3. Tools
  • 95. irb
  • 96. ▸  irb irb(main):001:0>  "Hello".reverse =>  "olleH" irb(main):002:0>  "Test".upcase =>  "TEST"
  • 97. nokogiri
  • 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. rubygems
  • 100. ▸  ruby  nokogiri-­‐test.rb test.rb:1:in  `require':  no  such  file  to  load  -­‐-­‐   nokogiri  (LoadError)   from  test.rb:1
  • 101. ▸  sudo  gem  install  nokogiri Successfully  installed  nokogiri-­‐1.1.1 1  gem  installed
  • 102. ruby-dbi
  • 103. DBI.connect('DBI:SQLite3:test.db')  do  |dbh|    #  … end
  • 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. activerecord
  • 106. class  Person  <  ActiveRecord::Base end
  • 107. denis  =  Person.create(    :first_name  =>  'Denis',    :last_name  =>  'Defreyne') wim  =  Person.create(    :first_name  =>  'Wim',    :last_name  =>  'Vander  Schelden')
  • 108. p  =  Person.find_by_first_name('Denis') puts  "Last  name:  "  +  p.last_name
  • 109. yaml
  • 110. development:    driver:  sqlite3    dbfile:  myapp.db production:    driver:  postgresql    dbname:  myapp    username:  bob    password:  4l1c3
  • 111. config  =  YAML.load_file('config.yaml') puts  config['production']['driver'] #  postgresql
  • 112. ramaze
  • 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. erb
  • 115. Go  to  the  <%=  link_to  'Home  page',  :home  %>.
  • 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. rake
  • 118. task  :foo  do    puts  "Doing  foo  stuff..." end task  :default  =>  [  :foo  ]
  • 119. ▸  rake Doing  foo  stuff...
  • 120. you can haz questions?