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

Active Support Secrets

Active Support Secrets

Presented as a lightning talk at Nickel City Ruby Conference 2013 on September 21, 2013.

Video is available at http://www.confreaks.com/videos/2852-nickelcityruby2013-lightning-talk-active-support-secrets

Prem Sichanugrist

September 21, 2013
Tweet

More Decks by Prem Sichanugrist

Other Decks in Programming

Transcript

  1. Active Support Secrets

    View Slide

  2. Prem Sichanugrist
    @sikachu
    /sikachu

    View Slide

  3. View Slide

  4. View Slide

  5. Secrets

    View Slide

  6. View Slide

  7. View Slide

  8. View Slide

  9. String

    View Slide

  10. String#inquiry

    View Slide

  11. today  =  'saturday'
    today  =  today.inquiry
    today.saturday?  #=>  true
    today.sunday?  #=>  false

    View Slide

  12. String#squish

    View Slide

  13. very_complex_sql  =  <<-­‐SQL
       SELECT  *
       FROM  posts
       WHERE  state='published'
    SQL
    #  =>  "    SELECT  *\n    FROM  posts\n    
    WHERE  state='published'\n"

    View Slide

  14. very_complex_sql  =  <<-­‐SQL.squish
       SELECT  *
       FROM  posts
       WHERE  state='published'
    SQL
    #  =>  "SELECT  *  FROM  posts  WHERE  
    state='published'"

    View Slide

  15. String#strip_heredoc

    View Slide

  16. content  =  <<-­‐README
       Hello
           World!
    README
    #=>  "    Hello\n        World!\n"

    View Slide

  17. class  FancyHello
       def  initialize(user)
           if  should_say_hello_to?  user
               content  =  <<-­‐README
                   Hello
                       World!
               README
           end
       end
    end
    #=>  "                Hello\n                    World!\

    View Slide

  18. class  FancyHello
       def  initialize(user)
           if  should_say_hello_to?  user
               content  =  <<-­‐README
    Hello
       World!
    README
           end
       end
    end
    #=>  "Hello\n    World!\n"

    View Slide

  19. content  =  <<-­‐README.strip_heredoc
       Hello
           World!
    README
    #=>  "Hello\n    World!\n"

    View Slide

  20. String#to_date
    String#to_datetime
    String#to_time

    View Slide

  21. Date.parse('2013-­‐09-­‐21')
    #=>  Sat,  21  Sep  2013
    '2013-­‐09-­‐21'.to_date
    #=>  Sat,  21  Sep  2013
     
    DateTime.parse('2013-­‐09-­‐21  09:00:00')
    #=>  Sat,  21  Sep  2013  09:00:00  +0000
    '2013-­‐09-­‐21  09:00:00'.to_datetime
    #=>  Sat,  21  Sep  2013  09:00:00  +0000
     
    Time.parse('09:00:00')
    #=>  2013-­‐09-­‐21  09:00:00  -­‐0400
    '09:00:00'.to_time
    #=>  2013-­‐09-­‐21  09:00:00  -­‐0400

    View Slide

  22. Hash

    View Slide

  23. Hash#transform_keys

    View Slide

  24. hash  =  {  foo:  'foo',  bar:  'bar'  }
    #=>  {:foo=>"foo",  :bar=>"bar"}
    hash.transform_keys  {  |key|
       key.to_s.capitalize  }
    #=>  {"Foo"=>"foo",  "Bar"=>"bar"}

    View Slide

  25. Object

    View Slide

  26. Object#in?

    View Slide

  27. STARTING_POKEMONS  =  %w(Chespin  Fennekin  Froakie)
     
    if  STARTING_POKEMONS.include?(current_pokemon)
       #  ...
    end

    View Slide

  28. STARTING_POKEMONS  =  %w(Chespin  Fennekin  Froakie)
     
    if  current_pokemon.in?(STARTING_POKEMONS)
       #  ...
    end

    View Slide

  29. Object#presence

    View Slide

  30. "Hello".presence
    #=>  "Hello"
    nil.presence
    #=>  nil

    View Slide

  31. state  =  if  params[:state].present?
       params[:state]
    end
     
    country  =  if  params[:country].present?
       params[:country]
    end
     
    region  =  state  ||  country  ||  'US'

    View Slide

  32. region  =  params[:state].presence  ||
       params[:country].presence  ||  'US'

    View Slide

  33. View Slide

  34. http://guides.rubyonrails.org

    View Slide

  35. Thank you!
    Prem Sichanugrist (@sikachu)
    Sides: http://bit.ly/as-secret

    View Slide

  36. Thank you!
    Prem Sichanugrist (@sikachu)
    Sides: http://bit.ly/as-secret
    I also have some stickers to give away

    View Slide