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
Active Support Secrets
View Slide
Prem Sichanugrist@sikachu/sikachu
Secrets
String
String#inquiry
today = 'saturday'today = today.inquirytoday.saturday? #=> truetoday.sunday? #=> false
String#squish
very_complex_sql = <<-‐SQL SELECT * FROM posts WHERE state='published'SQL# => " SELECT *\n FROM posts\n WHERE state='published'\n"
very_complex_sql = <<-‐SQL.squish SELECT * FROM posts WHERE state='published'SQL# => "SELECT * FROM posts WHERE state='published'"
String#strip_heredoc
content = <<-‐README Hello World!README#=> " Hello\n World!\n"
class FancyHello def initialize(user) if should_say_hello_to? user content = <<-‐README Hello World! README end endend#=> " Hello\n World!\
class FancyHello def initialize(user) if should_say_hello_to? user content = <<-‐READMEHello World!README end endend#=> "Hello\n World!\n"
content = <<-‐README.strip_heredoc Hello World!README#=> "Hello\n World!\n"
String#to_dateString#to_datetimeString#to_time
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
Hash
Hash#transform_keys
hash = { foo: 'foo', bar: 'bar' }#=> {:foo=>"foo", :bar=>"bar"}hash.transform_keys { |key| key.to_s.capitalize }#=> {"Foo"=>"foo", "Bar"=>"bar"}
Object
Object#in?
STARTING_POKEMONS = %w(Chespin Fennekin Froakie) if STARTING_POKEMONS.include?(current_pokemon) # ...end
STARTING_POKEMONS = %w(Chespin Fennekin Froakie) if current_pokemon.in?(STARTING_POKEMONS) # ...end
Object#presence
"Hello".presence#=> "Hello"nil.presence#=> nil
state = if params[:state].present? params[:state]end country = if params[:country].present? params[:country]end region = state || country || 'US'
region = params[:state].presence || params[:country].presence || 'US'
http://guides.rubyonrails.org
Thank you!Prem Sichanugrist (@sikachu)Sides: http://bit.ly/as-secret
Thank you!Prem Sichanugrist (@sikachu)Sides: http://bit.ly/as-secretI also have some stickers to give away