$30 off During Our Annual Pro Sale. View Details »

Whats up in Ruby 2.0

Whats up in Ruby 2.0

A quick overview of the cool changes in Ruby 2.0 release.

Domas Bitvinskas

March 23, 2013
Tweet

More Decks by Domas Bitvinskas

Other Decks in Programming

Transcript

  1. RUBY 2.0
    What u in
    DOMAS BITVINSKAS
    domasbitvinskas.com
    @Nedomas

    View Slide

  2. 20
    27.days.ago
    ruby can almost play poke lega y

    View Slide

  3. Syntax sparkle
    Evolved monkeys
    PERFORMANCE booooost
    PR
    “100 hundred procent compatibl” - Matz

    View Slide

  4. ❤ = 'love'
    puts ❤
    UTF-8 default encoding

    View Slide

  5. class Integer
    def dalinasi_iš?(skaičius)
    skaičius != 0 ? self % skaičius == 0 : zero?
    end
    end
    puts 6.dalinasi_iš?(2)

    View Slide

  6. kwargs

    View Slide

  7. # ruby 1.9
    def shout(opts={})
    loud = opts[:loud] || 'Hello'
    quiet = opts[:quiet] || 'World'
    p "#{loud} #{quiet}!"
    end
    shout loud: "Old", quiet: "School"
    # ruby 2.0
    def shout(loud: 'Hello', quiet: 'World')
    p "#{loud} #{quiet}!"
    end
    shout loud: "New", quiet: "School"

    View Slide

  8. %i(an array of symbols)
    => [:an, :array, :of, :symbols]
    %I(#{100-50} shades of grey)
    => [:"50", :shades, :of, :grey]
    PRO-TIP

    View Slide

  9. module Logger
    def log(msg)
    p msg
    end
    end
    class Logic
    include Logger
    def log(msg)
    p msg.reverse
    end
    end
    Module prepend

    View Slide

  10. module Logger
    def log(msg)
    p msg
    end
    end
    class Logic
    prepend Logger
    def log(msg)
    p msg.reverse
    end
    end
    Logic.new.log("Some message")
    # "Some message"
    Logic.ancestors
    # include => [Logic, Logger, Object, Kernel, BasicObject]
    # prepend => [Logger, Logic, Object, Kernel, BasicObject]
    Module prepend

    View Slide

  11. ENUMERATORS
    even_numbers = (1..10000).select(&:even?).map(&:to_s)
    even_numbers = (1..10000).inject([]) do |acc, number|
    if number.even?
    acc << number.to_s
    else
    acc
    end
    end
    for the lazy

    View Slide

  12. ENUMERATORS
    even_numbers = (1..10000).lazy.select(&:even?).map(&:to_s)
    even_numbers = (1..10000).inject([]) do |acc, number|
    if number.even?
    acc << number.to_s
    else
    acc
    end
    end
    for the lazy

    View Slide

  13. REFINEMENTS
    experimental
    module Fun
    refine Fixnum do
    def +(_)
    super - rand(3)
    end
    end
    end
    using Fun
    p 5 + 5

    View Slide

  14. MAŽI GRAŽŪS DALYKAI

    View Slide

  15. Drummer = Struct.new(:name, :age, :band)
    idol = Drummer.new("Carter Beauford", 55, "Dave Matthews Band")
    p idol
    # => #
    p idol.to_h
    # => {:name=>"Carter Beauford", :age=>55, :band=>"Dave Matthews
    Band"}
    .to_h

    View Slide

  16. ONIGMO
    REGEX VARIKLIS
    "this\nis\vMr.\rNeo".gsub(/\R/, ' ')

    View Slide

  17. Array
    Range
    #bsearch
    p [1, 2, 3, 6, 9, 15].bsearch {|i| i > 4 }
    p (1..10000000000000).bsearch {|i| i > 9 }

    View Slide

  18. _ _di _ _

    View Slide

  19. IMPROVE
    GARBAGE & STUFF!
    RubyGem 2.0 & RDoc 4.0

    View Slide

  20. AČIŪ

    View Slide