<?xml version="1.0" encoding="UTF-8"?>
<rss xmlns:dc="http://purl.org/dc/elements/1.1/" version="2.0"><channel><atom:link rel="hub" href="http://tumblr.superfeedr.com/" xmlns:atom="http://www.w3.org/2005/Atom"/><description>Random Ruby and Rails tips.
This blog is dedicated to deliver short, interesting and practical tidbits of the Ruby language and Ruby on Rails framework. Read more…

Your submissions are more than welcome!</description><title>Ruby Quicktips</title><generator>Tumblr (3.0; @rubyquicktips)</generator><link>http://rubyquicktips.com/</link><item><title>Quick Hash to a URL Query trick</title><description>&lt;p&gt;Got a hash of values you want to convert into a url query string? Use &lt;a href="http://api.rubyonrails.org/classes/Object.html#method-i-to_query" title="Object"&gt;the to_query method&lt;/a&gt;:&lt;/p&gt;

&lt;div class="CodeRay"&gt;
  &lt;div class="code"&gt;&lt;pre&gt;&lt;span class="s"&gt;&lt;span class="dl"&gt;"&lt;/span&gt;&lt;span class="k"&gt;&lt;a href="http://www.example.com"&gt;http://www.example.com&lt;/a&gt;?&lt;/span&gt;&lt;span class="dl"&gt;"&lt;/span&gt;&lt;/span&gt; + { &lt;span class="ke"&gt;language&lt;/span&gt;: &lt;span class="s"&gt;&lt;span class="dl"&gt;"&lt;/span&gt;&lt;span class="k"&gt;ruby&lt;/span&gt;&lt;span class="dl"&gt;"&lt;/span&gt;&lt;/span&gt;, &lt;span class="ke"&gt;status&lt;/span&gt;: &lt;span class="s"&gt;&lt;span class="dl"&gt;"&lt;/span&gt;&lt;span class="k"&gt;awesome&lt;/span&gt;&lt;span class="dl"&gt;"&lt;/span&gt;&lt;/span&gt; }.to_query
&lt;span class="c"&gt;# =&amp;gt; "http://www.example.com?language=ruby&amp;amp;status=awesome" &lt;/span&gt;&lt;/pre&gt;&lt;/div&gt;
&lt;/div&gt;

&lt;p&gt;Want to do it in reverse? Use &lt;a href="http://www.ruby-doc.org/stdlib-1.9.3/libdoc/cgi/rdoc/CGI.html#method-c-parse" title="Class: CGI (Ruby 1.9.3)"&gt;CGI.parse&lt;/a&gt;:&lt;/p&gt;

&lt;div class="CodeRay"&gt;
  &lt;div class="code"&gt;&lt;pre&gt;require &lt;span class="s"&gt;&lt;span class="dl"&gt;'&lt;/span&gt;&lt;span class="k"&gt;cgi&lt;/span&gt;&lt;span class="dl"&gt;'&lt;/span&gt;&lt;/span&gt; &lt;span class="c"&gt;# Only needed for IRB, Rails already has this loaded&lt;/span&gt;
&lt;span class="co"&gt;CGI&lt;/span&gt;::parse &lt;span class="s"&gt;&lt;span class="dl"&gt;"&lt;/span&gt;&lt;span class="k"&gt;language=ruby&amp;amp;status=awesome&lt;/span&gt;&lt;span class="dl"&gt;"&lt;/span&gt;&lt;/span&gt;
&lt;span class="c"&gt;# =&amp;gt; {"language"=&amp;gt;["ruby"], "status"=&amp;gt;["awesome"]} &lt;/span&gt;&lt;/pre&gt;&lt;/div&gt;
&lt;/div&gt;

&lt;p&gt;Both methods support nested values.&lt;/p&gt;

&lt;p&gt;This tip was submitted by Victor Solis.&lt;/p&gt;</description><link>http://rubyquicktips.com/post/29682077100</link><guid>http://rubyquicktips.com/post/29682077100</guid><pubDate>Sat, 18 Aug 2012 11:03:44 +0200</pubDate><category>ruby</category><category>rubyonrails</category><category>submission</category><dc:creator>danielpietzsch</dc:creator></item><item><title>Testing CSV file uploads</title><description>&lt;p&gt;Let&amp;#8217;s say you have a form like this for uploading a CSV file:&lt;/p&gt;

&lt;div class="CodeRay"&gt;
  &lt;div class="code"&gt;&lt;pre&gt;&amp;lt;&lt;span class="s"&gt;&lt;span class="dl"&gt;%=&lt;/span&gt;&lt;span class="k"&gt; form_tag csv_import_path, :multipart &lt;/span&gt;&lt;span class="dl"&gt;=&lt;/span&gt;&lt;/span&gt;&amp;gt; &lt;span class="pc"&gt;true&lt;/span&gt; &lt;span class="r"&gt;do&lt;/span&gt; &lt;span class="s"&gt;&lt;span class="dl"&gt;%&amp;gt;&lt;/span&gt;&lt;span class="k"&gt;
  &amp;lt;%= file_field_tag :file, :accept =&lt;/span&gt;&lt;span class="dl"&gt;&amp;gt;&lt;/span&gt;&lt;/span&gt; &lt;span class="s"&gt;&lt;span class="dl"&gt;"&lt;/span&gt;&lt;span class="k"&gt;text/csv&lt;/span&gt;&lt;span class="dl"&gt;"&lt;/span&gt;&lt;/span&gt; %&amp;gt;
  &amp;lt;&lt;span class="s"&gt;&lt;span class="dl"&gt;%=&lt;/span&gt;&lt;span class="k"&gt; submit_tag "Upload" %&amp;gt;
&amp;lt;% end %&amp;gt;&lt;/span&gt;&lt;/span&gt;&lt;/pre&gt;&lt;/div&gt;
&lt;/div&gt;

&lt;p&gt;And your controller action looks like this:&lt;/p&gt;

&lt;div class="CodeRay"&gt;
  &lt;div class="code"&gt;&lt;pre&gt;require &lt;span class="s"&gt;&lt;span class="dl"&gt;'&lt;/span&gt;&lt;span class="k"&gt;csv&lt;/span&gt;&lt;span class="dl"&gt;'&lt;/span&gt;&lt;/span&gt;

&lt;span class="r"&gt;def&lt;/span&gt; &lt;span class="fu"&gt;csv_import&lt;/span&gt;    
  file_data = params[&lt;span class="sy"&gt;:file&lt;/span&gt;].read
  csv_rows  = &lt;span class="co"&gt;CSV&lt;/span&gt;.parse(file_data)

  csv_rows.each &lt;span class="r"&gt;do&lt;/span&gt; |row|
    &lt;span class="c"&gt;# do something with each row&lt;/span&gt;
  &lt;span class="r"&gt;end&lt;/span&gt;
    
  respond_to &lt;span class="r"&gt;do&lt;/span&gt; |format|
    format.html { redirect_to your_path, &lt;span class="sy"&gt;:notice&lt;/span&gt; =&amp;gt; &lt;span class="s"&gt;&lt;span class="dl"&gt;"&lt;/span&gt;&lt;span class="k"&gt;Successfully imported the CSV file.&lt;/span&gt;&lt;span class="dl"&gt;"&lt;/span&gt;&lt;/span&gt; }
  &lt;span class="r"&gt;end&lt;/span&gt;
&lt;span class="r"&gt;end&lt;/span&gt;&lt;/pre&gt;&lt;/div&gt;
&lt;/div&gt;

&lt;p&gt;How would you test this functionality?&lt;/p&gt;

&lt;p&gt;You can&amp;#8217;t use &lt;a href="http://api.rubyonrails.org/classes/ActionDispatch/TestProcess.html#method-i-fixture_file_upload" title="ActionDispatch::TestProcess"&gt;fixture_file_upload&lt;/a&gt; and stick a sample file in &lt;code&gt;test/fixtures/files/&lt;/code&gt; (as often suggested - e.g. &lt;a href="http://stackoverflow.com/questions/1178587/how-do-i-test-a-file-upload-in-rails" title="ruby - How do I test a file upload in rails? - Stack Overflow"&gt;here on SO&lt;/a&gt;). That&amp;#8217;s because CSV and YAML files will be imported as fixtures into the test database as soon as you run tests. E.g., this would &lt;em&gt;not&lt;/em&gt; work:&lt;/p&gt;

&lt;div class="CodeRay"&gt;
  &lt;div class="code"&gt;&lt;pre&gt;&lt;span class="r"&gt;def&lt;/span&gt; &lt;span class="fu"&gt;test_file_upload&lt;/span&gt;
  post &lt;span class="sy"&gt;:csv_import&lt;/span&gt;, &lt;span class="sy"&gt;:file&lt;/span&gt; =&amp;gt; fixture_file_upload(&lt;span class="s"&gt;&lt;span class="dl"&gt;'&lt;/span&gt;&lt;span class="k"&gt;files/new_users.csv&lt;/span&gt;&lt;span class="dl"&gt;'&lt;/span&gt;&lt;/span&gt;,&lt;span class="s"&gt;&lt;span class="dl"&gt;'&lt;/span&gt;&lt;span class="k"&gt;text/csv&lt;/span&gt;&lt;span class="dl"&gt;'&lt;/span&gt;&lt;/span&gt;)
&lt;span class="r"&gt;end&lt;/span&gt;&lt;/pre&gt;&lt;/div&gt;
&lt;/div&gt;

&lt;p&gt;But what you &lt;em&gt;can&lt;/em&gt; do is to use the &lt;a href="http://www.ruby-doc.org/stdlib-1.9.3/libdoc/tempfile/rdoc/Tempfile.html" title="Class: Tempfile (Ruby 1.9.3)"&gt;Tempfile&lt;/a&gt; and &lt;a href="http://rubydoc.info/gems/rack-test/0.5.5/Rack/Test/UploadedFile" title="Class: Rack::Test::UploadedFile - Documentation for rack-test (0.5.5)"&gt;Rack::Test::UploadFile&lt;/a&gt; classes and manually create a CSV file and supply this to the &lt;code&gt;post&lt;/code&gt; (or &lt;code&gt;put&lt;/code&gt;) method:&lt;/p&gt;

&lt;div class="CodeRay"&gt;
  &lt;div class="code"&gt;&lt;pre&gt;&lt;span class="r"&gt;def&lt;/span&gt; &lt;span class="fu"&gt;test_should_successfully_import_csv&lt;/span&gt;
  csv_rows = &lt;span class="s"&gt;&lt;span class="dl"&gt;&amp;lt;&amp;lt;-eos&lt;/span&gt;&lt;/span&gt;&lt;span class="s"&gt;&lt;span class="k"&gt;
Name1,name1@example.com
Name2,name2@example.com
Name3,name3@example.com&lt;/span&gt;&lt;span class="dl"&gt;
eos&lt;/span&gt;&lt;/span&gt;

  file = &lt;span class="co"&gt;Tempfile&lt;/span&gt;.new(&lt;span class="s"&gt;&lt;span class="dl"&gt;'&lt;/span&gt;&lt;span class="k"&gt;new_users.csv&lt;/span&gt;&lt;span class="dl"&gt;'&lt;/span&gt;&lt;/span&gt;)
  file.write(csv_rows)
  file.rewind

  assert_difference &lt;span class="s"&gt;&lt;span class="dl"&gt;"&lt;/span&gt;&lt;span class="k"&gt;User.count&lt;/span&gt;&lt;span class="dl"&gt;"&lt;/span&gt;&lt;/span&gt;, &lt;span class="i"&gt;3&lt;/span&gt; &lt;span class="r"&gt;do&lt;/span&gt;
    post &lt;span class="sy"&gt;:csv_import&lt;/span&gt;, &lt;span class="sy"&gt;:file&lt;/span&gt; =&amp;gt; &lt;span class="co"&gt;Rack&lt;/span&gt;::&lt;span class="co"&gt;Test&lt;/span&gt;::&lt;span class="co"&gt;UploadedFile&lt;/span&gt;.new(file, &lt;span class="s"&gt;&lt;span class="dl"&gt;'&lt;/span&gt;&lt;span class="k"&gt;text/csv&lt;/span&gt;&lt;span class="dl"&gt;'&lt;/span&gt;&lt;/span&gt;)
  &lt;span class="r"&gt;end&lt;/span&gt;

  assert_redirected_to your_path
  assert_equal &lt;span class="s"&gt;&lt;span class="dl"&gt;"&lt;/span&gt;&lt;span class="k"&gt;Successfully imported the CSV file.&lt;/span&gt;&lt;span class="dl"&gt;"&lt;/span&gt;&lt;/span&gt;, flash[&lt;span class="sy"&gt;:notice&lt;/span&gt;]
&lt;span class="r"&gt;end&lt;/span&gt;&lt;/pre&gt;&lt;/div&gt;
&lt;/div&gt;</description><link>http://rubyquicktips.com/post/27753730620</link><guid>http://rubyquicktips.com/post/27753730620</guid><pubDate>Sun, 22 Jul 2012 10:22:54 +0200</pubDate><category>rubyonrails</category><dc:creator>danielpietzsch</dc:creator></item><item><title>Using ActiveRecord to query for times within a range</title><description>&lt;p&gt;You can pass a range to query for records within that range:&lt;/p&gt;

&lt;p&gt;&lt;a href="http://hackerinspiration.com/post/19223612745/using-activerecord-to-query-times-within-a-range" class="tumblr_blog"&gt;hackerinspiration&lt;/a&gt;:&lt;/p&gt;

&lt;blockquote&gt;

&lt;p&gt;Just discovered this, something I wish I knew a LONG time ago.&lt;/p&gt;

&lt;div class="CodeRay"&gt;
  &lt;div class="code"&gt;&lt;pre&gt;&lt;span class="co"&gt;Album&lt;/span&gt;.where(&lt;span class="sy"&gt;:created_at&lt;/span&gt; =&amp;gt; &lt;span class="i"&gt;2&lt;/span&gt;.days.ago..&lt;span class="co"&gt;Time&lt;/span&gt;.now)&lt;/pre&gt;&lt;/div&gt;
&lt;/div&gt;

&lt;p&gt;Which will generate the following SQL query (depending on the database):&lt;/p&gt;

&lt;div class="CodeRay"&gt;
  &lt;div class="code"&gt;&lt;pre&gt;&lt;span class="co"&gt;SELECT&lt;/span&gt; &lt;span class="s"&gt;&lt;span class="dl"&gt;"&lt;/span&gt;&lt;span class="k"&gt;albums&lt;/span&gt;&lt;span class="dl"&gt;"&lt;/span&gt;&lt;/span&gt;.* &lt;span class="co"&gt;FROM&lt;/span&gt; &lt;span class="s"&gt;&lt;span class="dl"&gt;"&lt;/span&gt;&lt;span class="k"&gt;albums&lt;/span&gt;&lt;span class="dl"&gt;"&lt;/span&gt;&lt;/span&gt; &lt;span class="co"&gt;WHERE&lt;/span&gt; (&lt;span class="s"&gt;&lt;span class="dl"&gt;"&lt;/span&gt;&lt;span class="k"&gt;albums&lt;/span&gt;&lt;span class="dl"&gt;"&lt;/span&gt;&lt;/span&gt;.&lt;span class="s"&gt;&lt;span class="dl"&gt;"&lt;/span&gt;&lt;span class="k"&gt;created_at&lt;/span&gt;&lt;span class="dl"&gt;"&lt;/span&gt;&lt;/span&gt; &lt;span class="co"&gt;BETWEEN&lt;/span&gt; &lt;span class="s"&gt;&lt;span class="dl"&gt;'&lt;/span&gt;&lt;span class="k"&gt;2012-04-28 11:10:22.780712&lt;/span&gt;&lt;span class="dl"&gt;'&lt;/span&gt;&lt;/span&gt; &lt;span class="co"&gt;AND&lt;/span&gt; &lt;span class="s"&gt;&lt;span class="dl"&gt;'&lt;/span&gt;&lt;span class="k"&gt;2012-04-30 11:10:22.780907&lt;/span&gt;&lt;span class="dl"&gt;'&lt;/span&gt;&lt;/span&gt;)&lt;/pre&gt;&lt;/div&gt;
&lt;/div&gt;

&lt;/blockquote&gt;</description><link>http://rubyquicktips.com/post/22308979539</link><guid>http://rubyquicktips.com/post/22308979539</guid><pubDate>Thu, 03 May 2012 08:01:03 +0200</pubDate><category>rubyonrails</category><dc:creator>danielpietzsch</dc:creator></item><item><title>Try out your helpers in the Rails console</title><description>&lt;p&gt;Ever wanted to try out any of Rails&amp;#8217; view helper methods in the console? Just include &lt;code&gt;ActionView::Helpers&lt;/code&gt; after starting the Rails console:&lt;/p&gt;

&lt;div class="CodeRay"&gt;
  &lt;div class="code"&gt;&lt;pre&gt;include &lt;span class="co"&gt;ActionView&lt;/span&gt;::&lt;span class="co"&gt;Helpers&lt;/span&gt;
&lt;span class="c"&gt;# =&amp;gt; Object&lt;/span&gt;
text_field(&lt;span class="sy"&gt;:post&lt;/span&gt;, &lt;span class="sy"&gt;:title&lt;/span&gt;)
&lt;span class="c"&gt;# =&amp;gt; "&amp;lt;input id=\"post_title\" name=\"post[title]\" size=\"30\" type=\"text\" /&amp;gt;"&lt;/span&gt;&lt;/pre&gt;&lt;/div&gt;
&lt;/div&gt;</description><link>http://rubyquicktips.com/post/22179967351</link><guid>http://rubyquicktips.com/post/22179967351</guid><pubDate>Tue, 01 May 2012 08:01:08 +0200</pubDate><category>rubyonrails</category><dc:creator>danielpietzsch</dc:creator></item><item><title>Creating regular expressions with r{} literals</title><description>&lt;p&gt;Creating a &lt;a href="http://www.ruby-doc.org/core-1.9.3/Regexp.html" title="Class: Regexp (Ruby 1.9.3)"&gt;regular expression&lt;/a&gt; using the &lt;code&gt;r{}&lt;/code&gt; literals can for example be helpful when matching URLs, because you don&amp;#8217;t have to escape slashes:&lt;/p&gt;

&lt;div class="CodeRay"&gt;
  &lt;div class="code"&gt;&lt;pre&gt;url = &lt;span class="s"&gt;&lt;span class="dl"&gt;"&lt;/span&gt;&lt;a href="http://example.com/"&gt;http://example.com/&lt;/a&gt;&lt;span class="dl"&gt;"&lt;/span&gt;&lt;/span&gt;

&lt;span class="c"&gt;# /../ literals:&lt;/span&gt;
url.match &lt;span class="rx"&gt;&lt;span class="dl"&gt;/&lt;/span&gt;&lt;span class="k"&gt;http:&lt;/span&gt;&lt;span class="ch"&gt;\/&lt;/span&gt;&lt;span class="ch"&gt;\/&lt;/span&gt;&lt;span class="k"&gt;example&lt;/span&gt;&lt;span class="ch"&gt;\.&lt;/span&gt;&lt;span class="k"&gt;com&lt;/span&gt;&lt;span class="ch"&gt;\/&lt;/span&gt;&lt;span class="dl"&gt;/&lt;/span&gt;&lt;/span&gt;
&lt;span class="c"&gt;# =&amp;gt; #&amp;lt;MatchData "http://example.com/"&amp;gt;&lt;/span&gt;

&lt;span class="c"&gt;# %r{} literals:&lt;/span&gt;
url.match &lt;span class="rx"&gt;&lt;span class="dl"&gt;%r{&lt;/span&gt;&lt;span class="k"&gt;http://example&lt;/span&gt;&lt;span class="ch"&gt;\.&lt;/span&gt;&lt;span class="k"&gt;com/&lt;/span&gt;&lt;span class="dl"&gt;}&lt;/span&gt;&lt;/span&gt;
&lt;span class="c"&gt;# =&amp;gt; #&amp;lt;MatchData "http://example.com/"&amp;gt;&lt;/span&gt;&lt;/pre&gt;&lt;/div&gt;
&lt;/div&gt;</description><link>http://rubyquicktips.com/post/21370656103</link><guid>http://rubyquicktips.com/post/21370656103</guid><pubDate>Thu, 19 Apr 2012 08:01:13 +0200</pubDate><category>ruby</category><dc:creator>danielpietzsch</dc:creator></item><item><title>Create a hash from an array with Hash[*arr]</title><description>&lt;p&gt;The &lt;a href="http://www.ruby-doc.org/core-1.9.3/Hash.html#method-c-5B-5D" title="Class: Hash (Ruby 1.9.3)"&gt;Hash::[] class method&lt;/a&gt; can be used in addition to the &lt;a href="http://pivotallabs.com/users/nick/blog/articles/438-ruby-pearls-vol-1-the-splat" title="nick - Ruby Pearls vol. 1 - The Splat"&gt;splat operator&lt;/a&gt; to create a hash from an array.&lt;/p&gt;

&lt;div class="CodeRay"&gt;
  &lt;div class="code"&gt;&lt;pre&gt;arr = [&lt;span class="sy"&gt;:a&lt;/span&gt;, &lt;span class="i"&gt;1&lt;/span&gt;, &lt;span class="sy"&gt;:b&lt;/span&gt;, &lt;span class="i"&gt;2&lt;/span&gt;]
&lt;span class="co"&gt;Hash&lt;/span&gt;[*arr]
&lt;span class="c"&gt;# =&amp;gt; {:a =&amp;gt; 1, :b =&amp;gt; 2}&lt;/span&gt;&lt;/pre&gt;&lt;/div&gt;
&lt;/div&gt;</description><link>http://rubyquicktips.com/post/21257842435</link><guid>http://rubyquicktips.com/post/21257842435</guid><pubDate>Tue, 17 Apr 2012 08:01:36 +0200</pubDate><category>ruby</category><category>submission</category><dc:creator>danielpietzsch</dc:creator></item><item><title>Rails' index_by: the easy way to convert an Array to a Hash</title><description>&lt;p&gt;As Aditya Sanghi notes in &lt;a href="http://rubyquicktips.com/post/17306181714/quickly-convert-an-array-to-a-hash" title="Ruby Quicktips - Quickly convert an Array to a Hash"&gt;&amp;#8220;Quickly convert an Array to a Hash&amp;#8221;&lt;/a&gt;, a very quick way to convert an Array to a Hash, is to use Rails&amp;#8217; &lt;a href="http://api.rubyonrails.org/classes/Enumerable.html#method-i-index_by" title="Enumerable"&gt;Enumerable#index_by&lt;/a&gt;:&lt;/p&gt;

&lt;div class="CodeRay"&gt;
  &lt;div class="code"&gt;&lt;pre&gt;&lt;span class="co"&gt;Post&lt;/span&gt;.all.index_by { |post| post.id }
&lt;span class="c"&gt;# =&amp;gt; { 1 =&amp;gt; #&amp;lt;Post ...&amp;gt;, 2 =&amp;gt; #&amp;lt;Post ...&amp;gt;, ... }&lt;/span&gt;

&lt;span class="co"&gt;Post&lt;/span&gt;.all.index_by(&amp;amp;&lt;span class="sy"&gt;:title&lt;/span&gt;)
&lt;span class="c"&gt;# =&amp;gt; { "My first post" =&amp;gt; #&amp;lt;Post ...&amp;gt;, "My second post" =&amp;gt; #&amp;lt;Post ...&amp;gt;, ... }&lt;/span&gt;&lt;/pre&gt;&lt;/div&gt;
&lt;/div&gt;</description><link>http://rubyquicktips.com/post/20959548298</link><guid>http://rubyquicktips.com/post/20959548298</guid><pubDate>Thu, 12 Apr 2012 13:28:37 +0200</pubDate><category>rubyonrails</category><dc:creator>danielpietzsch</dc:creator></item><item><title>Convert a number string in any base to a decimal number</title><description>&lt;p&gt;As Brich Thompson notes in the comments on &lt;a href="http://rubyquicktips.com/post/18935873770/convert-between-number-bases-easily" title="Ruby Quicktips - Convert between number bases easily"&gt;&amp;#8220;Convert between number bases easily&amp;#8221;&lt;/a&gt;, you can also convert a number string in any base to a decimal number with the &lt;a href="http://www.ruby-doc.org/core-1.9.3/String.html#method-i-to_i" title="Class: String (Ruby 1.9.3)"&gt;String#to_i&lt;/a&gt; method:&lt;/p&gt;

&lt;div class="CodeRay"&gt;
  &lt;div class="code"&gt;&lt;pre&gt;&lt;span class="s"&gt;&lt;span class="dl"&gt;"&lt;/span&gt;&lt;span class="k"&gt;21&lt;/span&gt;&lt;span class="dl"&gt;"&lt;/span&gt;&lt;/span&gt;.to_i     &lt;span class="c"&gt;#=&amp;gt; 21 &lt;/span&gt;
&lt;span class="s"&gt;&lt;span class="dl"&gt;"&lt;/span&gt;&lt;span class="k"&gt;21&lt;/span&gt;&lt;span class="dl"&gt;"&lt;/span&gt;&lt;/span&gt;.to_i(&lt;span class="i"&gt;8&lt;/span&gt;)  &lt;span class="c"&gt;#=&amp;gt; 17&lt;/span&gt;
&lt;span class="s"&gt;&lt;span class="dl"&gt;"&lt;/span&gt;&lt;span class="k"&gt;21&lt;/span&gt;&lt;span class="dl"&gt;"&lt;/span&gt;&lt;/span&gt;.to_i(&lt;span class="i"&gt;16&lt;/span&gt;) &lt;span class="c"&gt;#=&amp;gt; 33&lt;/span&gt;&lt;/pre&gt;&lt;/div&gt;
&lt;/div&gt;</description><link>http://rubyquicktips.com/post/20899948441</link><guid>http://rubyquicktips.com/post/20899948441</guid><pubDate>Wed, 11 Apr 2012 14:10:14 +0200</pubDate><category>ruby</category><dc:creator>danielpietzsch</dc:creator></item><item><title>Two Ruby tricks using method chaining and Procs</title><description>&lt;div class="CodeRay"&gt;
  &lt;div class="code"&gt;&lt;pre&gt;[&lt;span class="i"&gt;1&lt;/span&gt;,&lt;span class="i"&gt;2&lt;/span&gt;,&lt;span class="i"&gt;3&lt;/span&gt;].each_with_object(&lt;span class="i"&gt;1&lt;/span&gt;).map(&amp;amp;&lt;span class="sy"&gt;:+&lt;/span&gt;)
&lt;span class="c"&gt;# =&amp;gt; [2, 3, 4]&lt;/span&gt;

&lt;span class="c"&gt;# Same outcome, even shorter&lt;/span&gt;
[&lt;span class="i"&gt;1&lt;/span&gt;, &lt;span class="i"&gt;2&lt;/span&gt;, &lt;span class="i"&gt;3&lt;/span&gt;].map(&amp;amp;&lt;span class="i"&gt;1&lt;/span&gt;.method(&lt;span class="sy"&gt;:+&lt;/span&gt;))
&lt;span class="c"&gt;# =&amp;gt; [2, 3, 4]&lt;/span&gt;&lt;/pre&gt;&lt;/div&gt;
&lt;/div&gt;

&lt;p&gt;In his blog post &lt;a href="http://andrewjgrimm.wordpress.com/2011/10/03/in-ruby-method-passes-you/" title="In Ruby, &amp;amp;method passes you! « Running late and out of timetable order"&gt;In Ruby, &amp;amp;method passes you!&lt;/a&gt;, Andrew Grimm explains how this all works.&lt;/p&gt;

&lt;p&gt;Both snippets via &lt;a href="https://twitter.com/#!/peterc/status/150044501409406978"&gt;Peter&lt;/a&gt; &lt;a href="https://twitter.com/#!/peterc/status/150204099009327105"&gt;Cooper&lt;/a&gt;.&lt;/p&gt;</description><link>http://rubyquicktips.com/post/20458300054</link><guid>http://rubyquicktips.com/post/20458300054</guid><pubDate>Wed, 04 Apr 2012 10:02:27 +0200</pubDate><category>ruby</category><dc:creator>danielpietzsch</dc:creator></item><item><title>Enumerable#each_with_object</title><description>&lt;p&gt;&lt;code&gt;Enumerable#each_with_object&lt;/code&gt; is quite similar to &lt;code&gt;Enumerable#inject&lt;/code&gt;, yet slightly different. From the &lt;a href="http://www.ruby-doc.org/core-1.9.3/Enumerable.html#method-i-each_with_object" title="Module: Enumerable (Ruby 1.9.3)"&gt;Ruby 1.9&lt;/a&gt; and &lt;a href="http://api.rubyonrails.org/classes/Enumerable.html#method-i-each_with_object" title="Enumerable"&gt;Rails 3&lt;/a&gt; API docs:&lt;/p&gt;

&lt;blockquote&gt;
  &lt;p&gt;Iterates the given block for each element with an arbitrary object given, and returns the initially given object.&lt;/p&gt;
  
  &lt;p&gt;Iterates over a collection, passing the current element and the memo to the block. Handy for building up hashes or reducing collections down to one object.&lt;/p&gt;
&lt;/blockquote&gt;

&lt;div class="CodeRay"&gt;
  &lt;div class="code"&gt;&lt;pre&gt;evens = (&lt;span class="i"&gt;1&lt;/span&gt;..&lt;span class="i"&gt;10&lt;/span&gt;).each_with_object([]) {|i, a| a &amp;lt;&amp;lt; i*&lt;span class="i"&gt;2&lt;/span&gt; }
&lt;span class="c"&gt;#=&amp;gt; [2, 4, 6, 8, 10, 12, 14, 16, 18, 20]&lt;/span&gt;

&lt;span class="s"&gt;&lt;span class="dl"&gt;%w(&lt;/span&gt;&lt;span class="k"&gt;foo bar&lt;/span&gt;&lt;span class="dl"&gt;)&lt;/span&gt;&lt;/span&gt;.each_with_object({}) { |str, hsh| hsh[str] = str.upcase }
&lt;span class="c"&gt;# =&amp;gt; {'foo' =&amp;gt; 'FOO', 'bar' =&amp;gt; 'BAR'}&lt;/span&gt;&lt;/pre&gt;&lt;/div&gt;
&lt;/div&gt;

&lt;p&gt;&lt;a href="http://rubyquicktips.com/post/16508417798/using-enumerable-inject-to-modify-a-hash#comment-421243276" title="Ruby Quicktips - Using Enumerable::inject to modify a hash"&gt;As BiHi noted on this tip on &lt;code&gt;Enumerable#inject&lt;/code&gt;&lt;/a&gt;, its example can be slightly simplified using &lt;code&gt;each_with_object&lt;/code&gt; instead of &lt;code&gt;inject&lt;/code&gt;:&lt;/p&gt;

&lt;div class="CodeRay"&gt;
  &lt;div class="code"&gt;&lt;pre&gt;my_hash = { &lt;span class="ke"&gt;a&lt;/span&gt;: &lt;span class="s"&gt;&lt;span class="dl"&gt;'&lt;/span&gt;&lt;span class="k"&gt;foo&lt;/span&gt;&lt;span class="dl"&gt;'&lt;/span&gt;&lt;/span&gt;, &lt;span class="ke"&gt;b&lt;/span&gt;: &lt;span class="s"&gt;&lt;span class="dl"&gt;'&lt;/span&gt;&lt;span class="k"&gt;bar&lt;/span&gt;&lt;span class="dl"&gt;'&lt;/span&gt;&lt;/span&gt; }
&lt;span class="c"&gt;# =&amp;gt; {:a=&amp;gt;"foo", :b=&amp;gt;"bar"}&lt;/span&gt;

my_hash.each_with_object({}) { |(k,v), h| h[k.upcase] = v.upcase }
&lt;span class="c"&gt;# =&amp;gt; {:A=&amp;gt;"FOO", :B=&amp;gt;"BAR"}&lt;/span&gt;&lt;/pre&gt;&lt;/div&gt;
&lt;/div&gt;</description><link>http://rubyquicktips.com/post/20104758978</link><guid>http://rubyquicktips.com/post/20104758978</guid><pubDate>Thu, 29 Mar 2012 07:00:06 +0200</pubDate><category>ruby</category><category>rubyonrails</category><dc:creator>danielpietzsch</dc:creator></item><item><title>Mark Deprecated Code in Ruby</title><description>&lt;p&gt;To mark deprecated code in Ruby simply add a comment to the rdoc and call the &lt;code&gt;Kernel#warn&lt;/code&gt; method.  For example:&lt;/p&gt;

&lt;div class="CodeRay"&gt;
  &lt;div class="code"&gt;&lt;pre&gt;&lt;span class="r"&gt;class&lt;/span&gt; &lt;span class="cl"&gt;Foo&lt;/span&gt;
  &lt;span class="c"&gt;# DEPRECATED: Please use useful instead.&lt;/span&gt;
  &lt;span class="r"&gt;def&lt;/span&gt; &lt;span class="fu"&gt;useless&lt;/span&gt;
    warn &lt;span class="s"&gt;&lt;span class="dl"&gt;"&lt;/span&gt;&lt;span class="k"&gt;[DEPRECATION] `useless` is deprecated.  Please use `useful` instead.&lt;/span&gt;&lt;span class="dl"&gt;"&lt;/span&gt;&lt;/span&gt;
    useful
  &lt;span class="r"&gt;end&lt;/span&gt;

  &lt;span class="r"&gt;def&lt;/span&gt; &lt;span class="fu"&gt;useful&lt;/span&gt;
    &lt;span class="c"&gt;# ...&lt;/span&gt;
  &lt;span class="r"&gt;end&lt;/span&gt;
&lt;span class="r"&gt;end&lt;/span&gt;&lt;/pre&gt;&lt;/div&gt;
&lt;/div&gt;

&lt;p&gt;If you&amp;#8217;re using Yard instead of rdoc, your doc comment should look like this:&lt;/p&gt;

&lt;div class="CodeRay"&gt;
  &lt;div class="code"&gt;&lt;pre&gt;&lt;span class="c"&gt;# @deprecated Please use {#useful} instead&lt;/span&gt;&lt;/pre&gt;&lt;/div&gt;
&lt;/div&gt;

&lt;p&gt;Also, don&amp;#8217;t forget to remove the deprecated method in some future release.&lt;/p&gt;

&lt;p&gt;Source: &lt;a href="http://stackoverflow.com/a/294114/210307" title="Best practice to mark deprecated code in Ruby? - Stack Overflow"&gt;Ryan McGeary&amp;#8217;s answer on stackoverflow&lt;/a&gt;.&lt;/p&gt;</description><link>http://rubyquicktips.com/post/20002932888</link><guid>http://rubyquicktips.com/post/20002932888</guid><pubDate>Tue, 27 Mar 2012 11:32:46 +0200</pubDate><category>ruby</category><category>submission</category><dc:creator>rmdhn</dc:creator></item><item><title>Using Hash as Recursive Function with Memoization</title><description>&lt;p&gt;We can define a new Hash in a smart way by using &lt;a href="http://ruby-doc.org/core-1.9.3/Hash.html#method-c-new" title="Class: Hash (Ruby 1.9.3)"&gt;Hash#new&lt;/a&gt; and passing it a block:&lt;/p&gt;

&lt;div class="CodeRay"&gt;
  &lt;div class="code"&gt;&lt;pre&gt;h    = &lt;span class="co"&gt;Hash&lt;/span&gt;.new {|hash,key| hash[key] = hash[key-&lt;span class="i"&gt;1&lt;/span&gt;] + hash[key-&lt;span class="i"&gt;2&lt;/span&gt;]}
h[&lt;span class="i"&gt;1&lt;/span&gt;] = &lt;span class="i"&gt;0&lt;/span&gt;
h[&lt;span class="i"&gt;2&lt;/span&gt;] = &lt;span class="i"&gt;1&lt;/span&gt;

puts h[&lt;span class="i"&gt;3&lt;/span&gt;] &lt;span class="c"&gt;#=&amp;gt; 1&lt;/span&gt;
puts h[&lt;span class="i"&gt;100&lt;/span&gt;] &lt;span class="c"&gt;#=&amp;gt; 218922995834555169026&lt;/span&gt;&lt;/pre&gt;&lt;/div&gt;
&lt;/div&gt;

&lt;p&gt;Here an example of famous &lt;a href="http://en.wikipedia.org/wiki/Collatz_conjecture" title="Collatz conjecture - Wikipedia, the free encyclopedia"&gt;Collatz Conjecture&lt;/a&gt;:&lt;/p&gt;

&lt;div class="CodeRay"&gt;
  &lt;div class="code"&gt;&lt;pre&gt;h    = &lt;span class="co"&gt;Hash&lt;/span&gt;.new {|hash,n| hash[n] = &lt;span class="i"&gt;1&lt;/span&gt; + (n.odd? ? hash[&lt;span class="i"&gt;3&lt;/span&gt;*n+&lt;span class="i"&gt;1&lt;/span&gt;] : hash[n/&lt;span class="i"&gt;2&lt;/span&gt;])}
h[&lt;span class="i"&gt;1&lt;/span&gt;] = &lt;span class="i"&gt;1&lt;/span&gt;

puts h[&lt;span class="i"&gt;100&lt;/span&gt;] &lt;span class="c"&gt;#=&amp;gt; 26&lt;/span&gt;
puts h[&lt;span class="i"&gt;1000&lt;/span&gt;] &lt;span class="c"&gt;#=&amp;gt; 112&lt;/span&gt;&lt;/pre&gt;&lt;/div&gt;
&lt;/div&gt;

&lt;p&gt;via: &lt;a href="http://robots.thoughtbot.com/post/162185884/stupid-ruby-tricks" title="stupid ruby tricks"&gt;thoughbot&amp;#8217;s blog&lt;/a&gt;&lt;/p&gt;</description><link>http://rubyquicktips.com/post/19720734665</link><guid>http://rubyquicktips.com/post/19720734665</guid><pubDate>Thu, 22 Mar 2012 06:00:06 +0100</pubDate><category>ruby</category><category>submission</category><dc:creator>rmdhn</dc:creator></item><item><title>Block style comments</title><description>&lt;p&gt;Wrap a block of code within &lt;code&gt;=begin&lt;/code&gt; and &lt;code&gt;=end&lt;/code&gt; to comment it out.&lt;/p&gt;

&lt;div class="CodeRay"&gt;
  &lt;div class="code"&gt;&lt;pre&gt;&lt;span class="c"&gt;# the comment format you're used to&lt;/span&gt;
puts &lt;span class="s"&gt;&lt;span class="dl"&gt;"&lt;/span&gt;&lt;span class="k"&gt;I am evaluated&lt;/span&gt;&lt;span class="dl"&gt;"&lt;/span&gt;&lt;/span&gt;

&lt;span class="c"&gt;=begin
puts "I"
puts "am"
puts "commented"
puts "out"
=end&lt;/span&gt;&lt;/pre&gt;&lt;/div&gt;
&lt;/div&gt;

&lt;p&gt;This tip was submitted by Tim Linquist.&lt;/p&gt;</description><link>http://rubyquicktips.com/post/19615506489</link><guid>http://rubyquicktips.com/post/19615506489</guid><pubDate>Tue, 20 Mar 2012 06:00:05 +0100</pubDate><category>beginner</category><category>submission</category><dc:creator>danielpietzsch</dc:creator></item><item><title>Method chaining with inject</title><description>&lt;p&gt;&lt;strong&gt;Aim:&lt;/strong&gt; perform a method chaining based on hash&lt;/p&gt;

&lt;p&gt;&lt;strong&gt;Required operation:&lt;/strong&gt;&lt;/p&gt;

&lt;div class="CodeRay"&gt;
  &lt;div class="code"&gt;&lt;pre&gt;&lt;span class="co"&gt;ErrorLog&lt;/span&gt;.event_eq([&lt;span class="i"&gt;3&lt;/span&gt;, &lt;span class="i"&gt;7&lt;/span&gt;]).subdomain_like(&lt;span class="s"&gt;&lt;span class="dl"&gt;"&lt;/span&gt;&lt;span class="k"&gt;default&lt;/span&gt;&lt;span class="dl"&gt;"&lt;/span&gt;&lt;/span&gt;).user_id_eq(&lt;span class="i"&gt;100&lt;/span&gt;)
&lt;/pre&gt;&lt;/div&gt;
&lt;/div&gt;

&lt;p&gt;&lt;strong&gt;Given:&lt;/strong&gt;&lt;/p&gt;

&lt;div class="CodeRay"&gt;
  &lt;div class="code"&gt;&lt;pre&gt;search_opts = { &lt;span class="sy"&gt;:event_eq&lt;/span&gt; =&amp;gt; [&lt;span class="i"&gt;3&lt;/span&gt;, &lt;span class="i"&gt;7&lt;/span&gt;], &lt;span class="sy"&gt;:subdomain_like&lt;/span&gt; =&amp;gt; &lt;span class="s"&gt;&lt;span class="dl"&gt;"&lt;/span&gt;&lt;span class="k"&gt;default&lt;/span&gt;&lt;span class="dl"&gt;"&lt;/span&gt;&lt;/span&gt;, &lt;span class="sy"&gt;:user_id_eq&lt;/span&gt; =&amp;gt; &lt;span class="i"&gt;100&lt;/span&gt; }
&lt;/pre&gt;&lt;/div&gt;
&lt;/div&gt;

&lt;p&gt;&lt;strong&gt;Solution:&lt;/strong&gt;&lt;/p&gt;

&lt;div class="CodeRay"&gt;
  &lt;div class="code"&gt;&lt;pre&gt;search_opts.inject(&lt;span class="co"&gt;ErrorLog&lt;/span&gt;) { |memo, (k, v)| memo.send(k, v) }&lt;/pre&gt;&lt;/div&gt;
&lt;/div&gt;

&lt;p&gt;This tip was submitted by sumskyi.&lt;/p&gt;</description><link>http://rubyquicktips.com/post/19332576850</link><guid>http://rubyquicktips.com/post/19332576850</guid><pubDate>Thu, 15 Mar 2012 06:02:05 +0100</pubDate><category>ruby</category><category>submission</category><dc:creator>danielpietzsch</dc:creator></item><item><title>Pretend to generate</title><description>&lt;p&gt;If you&amp;#8217;re not sure what files a Rails Generator would create for you, just add the &lt;code&gt;-p&lt;/code&gt; option (or &lt;code&gt;--pretend&lt;/code&gt;) for a dry run:&lt;/p&gt;

&lt;div class="CodeRay"&gt;
  &lt;div class="code"&gt;&lt;pre&gt;rails generate model &lt;span class="co"&gt;Blog&lt;/span&gt; -p&lt;/pre&gt;&lt;/div&gt;
&lt;/div&gt;</description><link>http://rubyquicktips.com/post/19223887750</link><guid>http://rubyquicktips.com/post/19223887750</guid><pubDate>Tue, 13 Mar 2012 06:00:06 +0100</pubDate><category>rubyonrails</category><dc:creator>danielpietzsch</dc:creator></item><item><title>Convert between number bases easily</title><description>&lt;p&gt;It&amp;#8217;s often a requirement in various projects to convert numbers from decimal to text representations of several other bases, such as hexadecimal or binary.&lt;br/&gt;
Did you know you can convert to any base from 2 to 36 in one line in Ruby?&lt;/p&gt;

&lt;p&gt;Using the &lt;a href="http://www.ruby-doc.org/core-1.9.3/Fixnum.html#method-i-to_s" title="Class: Fixnum (Ruby 1.9.3)"&gt;Fixnum#to_s&lt;/a&gt; method, you can quickly convert any Fixnum object to the textual format of another base:&lt;/p&gt;

&lt;div class="CodeRay"&gt;
  &lt;div class="code"&gt;&lt;pre&gt;&lt;span class="i"&gt;255&lt;/span&gt;.to_s(&lt;span class="i"&gt;36&lt;/span&gt;) &lt;span class="c"&gt;#=&amp;gt; "73"&lt;/span&gt;
&lt;span class="i"&gt;255&lt;/span&gt;.to_s(&lt;span class="i"&gt;16&lt;/span&gt;) &lt;span class="c"&gt;#=&amp;gt; "ff"&lt;/span&gt;
&lt;span class="i"&gt;255&lt;/span&gt;.to_s(&lt;span class="i"&gt;2&lt;/span&gt;)  &lt;span class="c"&gt;#=&amp;gt; "11111111"&lt;/span&gt;&lt;/pre&gt;&lt;/div&gt;
&lt;/div&gt;

&lt;p&gt;This tip was submitted by Nathan Kleyn.&lt;/p&gt;</description><link>http://rubyquicktips.com/post/18935873770</link><guid>http://rubyquicktips.com/post/18935873770</guid><pubDate>Thu, 08 Mar 2012 06:00:06 +0100</pubDate><category>ruby</category><category>submission</category><dc:creator>danielpietzsch</dc:creator></item><item><title>Some Array magic using transpose, map and reduce</title><description>&lt;p&gt;To add on corresponding elements of several arrays:&lt;/p&gt;

&lt;div class="CodeRay"&gt;
  &lt;div class="code"&gt;&lt;pre&gt;a = [&lt;span class="i"&gt;1&lt;/span&gt;, &lt;span class="i"&gt;2&lt;/span&gt;, &lt;span class="i"&gt;3&lt;/span&gt;]
b = [&lt;span class="i"&gt;4&lt;/span&gt;, &lt;span class="i"&gt;5&lt;/span&gt;, &lt;span class="i"&gt;6&lt;/span&gt;]
c = [&lt;span class="i"&gt;7&lt;/span&gt;, &lt;span class="i"&gt;8&lt;/span&gt;, &lt;span class="i"&gt;9&lt;/span&gt;]

[a, b, c].transpose.map { |x| x.reduce &lt;span class="sy"&gt;:+&lt;/span&gt; }
&lt;span class="c"&gt;# =&amp;gt; [12, 15, 18]&lt;/span&gt;&lt;/pre&gt;&lt;/div&gt;
&lt;/div&gt;

&lt;p&gt;Given a number of arrays, each contains same number of arrays with the same length. To merge corresponding arrays:&lt;/p&gt;

&lt;div class="CodeRay"&gt;
  &lt;div class="code"&gt;&lt;pre&gt;a = [ [&lt;span class="i"&gt;1&lt;/span&gt;, &lt;span class="i"&gt;2&lt;/span&gt;], [&lt;span class="i"&gt;3&lt;/span&gt;, &lt;span class="i"&gt;4&lt;/span&gt;] ]
b = [ [&lt;span class="i"&gt;5&lt;/span&gt;, &lt;span class="i"&gt;6&lt;/span&gt;], [&lt;span class="i"&gt;7&lt;/span&gt;, &lt;span class="i"&gt;8&lt;/span&gt;] ]
c = [ [&lt;span class="i"&gt;9&lt;/span&gt;, &lt;span class="i"&gt;10&lt;/span&gt;], [&lt;span class="i"&gt;11&lt;/span&gt;, &lt;span class="i"&gt;12&lt;/span&gt;] ]

(a.transpose + b.transpose + c.transpose).transpose
&lt;span class="c"&gt;# =&amp;gt; [[1, 2, 5, 6, 9, 10], [3, 4, 7, 8, 11, 12]]&lt;/span&gt;&lt;/pre&gt;&lt;/div&gt;
&lt;/div&gt;

&lt;p&gt;To do the same job, but with arrays that are not necessarily equal in length:&lt;/p&gt;

&lt;div class="CodeRay"&gt;
  &lt;div class="code"&gt;&lt;pre&gt;a = [ [&lt;span class="i"&gt;1&lt;/span&gt;], [&lt;span class="i"&gt;2&lt;/span&gt;, &lt;span class="i"&gt;3&lt;/span&gt;] ]
b = [ [&lt;span class="i"&gt;4&lt;/span&gt;, &lt;span class="i"&gt;5&lt;/span&gt;], [] ]
c = [ [&lt;span class="i"&gt;6&lt;/span&gt;,&lt;span class="i"&gt;7&lt;/span&gt;,&lt;span class="i"&gt;8&lt;/span&gt;], [&lt;span class="i"&gt;9&lt;/span&gt;, &lt;span class="i"&gt;10&lt;/span&gt;, &lt;span class="i"&gt;11&lt;/span&gt;, &lt;span class="i"&gt;12&lt;/span&gt;] ]

[a, b, c].transpose.map { |x| x.reduce &lt;span class="sy"&gt;:+&lt;/span&gt; }
&lt;span class="c"&gt;# =&amp;gt; [[1, 4, 5, 6, 7, 8], [2, 3, 9, 10, 11, 12]]&lt;/span&gt;&lt;/pre&gt;&lt;/div&gt;
&lt;/div&gt;

&lt;p&gt;Check out the documentation on &lt;a href="http://www.ruby-doc.org/core-1.9.3/Array.html#method-i-transpose" title="Class: Array (Ruby 1.9.3)"&gt;Array#transpose&lt;/a&gt;, &lt;a href="http://www.ruby-doc.org/core-1.9.3/Array.html#method-i-map" title="Class: Array (Ruby 1.9.3)"&gt;Array#map&lt;/a&gt; and &lt;a href="http://www.ruby-doc.org/core-1.9.3/Enumerable.html#method-i-reduce" title="Module: Enumerable (Ruby 1.9.3)"&gt;Enumerable#reduce&lt;/a&gt;.&lt;/p&gt;

&lt;p&gt;This tip was submitted by Haitham Mohammad.&lt;/p&gt;</description><link>http://rubyquicktips.com/post/18842314838</link><guid>http://rubyquicktips.com/post/18842314838</guid><pubDate>Tue, 06 Mar 2012 11:06:41 +0100</pubDate><category>ruby</category><category>submission</category><dc:creator>danielpietzsch</dc:creator></item><item><title>Quick shortcut to load a SQL file in Rails</title><description>&lt;p&gt;You can easily load SQL files like this:&lt;/p&gt;

&lt;div class="CodeRay"&gt;
  &lt;div class="code"&gt;&lt;pre&gt;rails db &amp;lt; path_to_sql_file.sql &lt;span class="c"&gt;# Rails 3 &lt;/span&gt;
script/dbconsole &amp;lt; path_to_sql_file.sql &lt;span class="c"&gt;# Rails 2&lt;/span&gt;&lt;/pre&gt;&lt;/div&gt;
&lt;/div&gt;</description><link>http://rubyquicktips.com/post/18538210197</link><guid>http://rubyquicktips.com/post/18538210197</guid><pubDate>Thu, 01 Mar 2012 05:48:38 +0100</pubDate><category>rubyonrails</category><category>submission</category><dc:creator>offca</dc:creator></item><item><title>Around Alias </title><description>&lt;p&gt;You can write an Around Alias in three simple steps:&lt;/p&gt;

&lt;ol&gt;&lt;li&gt;You alias a method.&lt;/li&gt;
&lt;li&gt;You redefine it.&lt;/li&gt;
&lt;li&gt;You call the old method from the new method.&lt;/li&gt;
&lt;/ol&gt;&lt;p&gt;Example:&lt;/p&gt;

&lt;div class="CodeRay"&gt;
  &lt;div class="code"&gt;&lt;pre&gt;&lt;span class="r"&gt;class&lt;/span&gt; &lt;span class="cl"&gt;String&lt;/span&gt;
  &lt;span class="r"&gt;alias&lt;/span&gt; &lt;span class="sy"&gt;:orig_length&lt;/span&gt; &lt;span class="sy"&gt;:length&lt;/span&gt;

  &lt;span class="r"&gt;def&lt;/span&gt; &lt;span class="fu"&gt;length&lt;/span&gt;
    &lt;span class="s"&gt;&lt;span class="dl"&gt;"&lt;/span&gt;&lt;span class="k"&gt;Length of string '&lt;/span&gt;&lt;span class="il"&gt;&lt;span class="idl"&gt;#{&lt;/span&gt;&lt;span class="pc"&gt;self&lt;/span&gt;&lt;span class="idl"&gt;}&lt;/span&gt;&lt;/span&gt;&lt;span class="k"&gt;' is: &lt;/span&gt;&lt;span class="il"&gt;&lt;span class="idl"&gt;#{&lt;/span&gt;orig_length&lt;span class="idl"&gt;}&lt;/span&gt;&lt;/span&gt;&lt;span class="dl"&gt;"&lt;/span&gt;&lt;/span&gt;
  &lt;span class="r"&gt;end&lt;/span&gt;  
&lt;span class="r"&gt;end&lt;/span&gt;

&lt;span class="s"&gt;&lt;span class="dl"&gt;"&lt;/span&gt;&lt;span class="k"&gt;abc&lt;/span&gt;&lt;span class="dl"&gt;"&lt;/span&gt;&lt;/span&gt;.length
&lt;span class="c"&gt;#=&amp;gt; "Length of string 'abc' is: 3"&lt;/span&gt;&lt;/pre&gt;&lt;/div&gt;
&lt;/div&gt;

&lt;p&gt;This tip was submitted by Nimesh Nikum.&lt;/p&gt;</description><link>http://rubyquicktips.com/post/18427759343</link><guid>http://rubyquicktips.com/post/18427759343</guid><pubDate>Tue, 28 Feb 2012 07:28:11 +0100</pubDate><category>ruby</category><category>submission</category><dc:creator>danielpietzsch</dc:creator></item><item><title>Rails' include_root_in_json</title><description>&lt;p&gt;When rendering &lt;a href="http://www.json.org/" title="JSON"&gt;JSON&lt;/a&gt; from your controllers (or when using &lt;code&gt;to_json&lt;/code&gt; directly), Rails 3.1 and above won&amp;#8217;t include the root element in the output:&lt;/p&gt;

&lt;div class="CodeRay"&gt;
  &lt;div class="code"&gt;&lt;pre&gt;post = &lt;span class="co"&gt;Post&lt;/span&gt;.first
&lt;span class="c"&gt;# =&amp;gt; #&amp;lt;Post id: 1, title: "My first blogpost" ...&lt;/span&gt;

post.to_json
&lt;span class="c"&gt;# =&amp;gt; "{\"id\":1,\"title\":\"My first blogpost\", ...}"&lt;/span&gt;&lt;/pre&gt;&lt;/div&gt;
&lt;/div&gt;

&lt;p&gt;To include the root element (&lt;code&gt;post&lt;/code&gt; in this example), set &lt;code&gt;ActiveRecord::Base.include_root_in_json&lt;/code&gt; to &lt;code&gt;true&lt;/code&gt;:&lt;/p&gt;

&lt;div class="CodeRay"&gt;
  &lt;div class="code"&gt;&lt;pre&gt;&lt;span class="c"&gt;# wrap_paramters.rb&lt;/span&gt;
&lt;span class="r"&gt;if&lt;/span&gt; &lt;span class="r"&gt;defined?&lt;/span&gt;(&lt;span class="co"&gt;ActiveRecord&lt;/span&gt;)
  &lt;span class="co"&gt;ActiveRecord&lt;/span&gt;::&lt;span class="co"&gt;Base&lt;/span&gt;.include_root_in_json = &lt;span class="pc"&gt;true&lt;/span&gt;
&lt;span class="r"&gt;end&lt;/span&gt;&lt;/pre&gt;&lt;/div&gt;
&lt;/div&gt;

&lt;p&gt;Result:&lt;/p&gt;

&lt;div class="CodeRay"&gt;
  &lt;div class="code"&gt;&lt;pre&gt;post.to_json
&lt;span class="c"&gt;# =&amp;gt; "{\"post\":{\"id\":1,\"title\":\"My first blogpost\", ...}}"&lt;/span&gt;&lt;/pre&gt;&lt;/div&gt;
&lt;/div&gt;

&lt;p&gt;In version of Rails &amp;lt; 3.1, including the root element is the default. You can disable it by adding &lt;code&gt;ActiveRecord::Base.include_root_in_json = false&lt;/code&gt; to one of your files in &lt;code&gt;config/initializers&lt;/code&gt; or in &lt;code&gt;application.rb&lt;/code&gt;/&lt;code&gt;environment.rb&lt;/code&gt; directly.&lt;/p&gt;

&lt;p&gt;More info in the &lt;a href="http://api.rubyonrails.org/classes/ActiveModel/Serializers/JSON.html"&gt;API docs on ActiveModel::Serializers::JSON&lt;/a&gt;.&lt;/p&gt;</description><link>http://rubyquicktips.com/post/18115841886</link><guid>http://rubyquicktips.com/post/18115841886</guid><pubDate>Thu, 23 Feb 2012 06:00:05 +0100</pubDate><category>rubyonrails</category><dc:creator>danielpietzsch</dc:creator></item></channel></rss>
