<?xml version="1.0" encoding="UTF-8"?>
<?xml-stylesheet type="text/xsl" media="screen" href="/~d/styles/rss2full.xsl"?><?xml-stylesheet type="text/css" media="screen" href="http://feeds.feedburner.com/~d/styles/itemcontent.css"?><rss xmlns:atom="http://www.w3.org/2005/Atom" xmlns:openSearch="http://a9.com/-/spec/opensearch/1.1/" xmlns:georss="http://www.georss.org/georss" xmlns:gd="http://schemas.google.com/g/2005" xmlns:thr="http://purl.org/syndication/thread/1.0" xmlns:creativeCommons="http://backend.userland.com/creativeCommonsRssModule" version="2.0"><channel><atom:id>tag:blogger.com,1999:blog-664110592797971793</atom:id><lastBuildDate>Fri, 18 May 2012 12:19:09 +0000</lastBuildDate><category>rubyconf</category><category>mobile</category><category>ruby</category><category>rubyist links</category><category>snippet</category><category>ruby on rails</category><category>intermezzo</category><category>news</category><category>active record</category><category>english</category><category>tips</category><category>rails 3</category><category>security</category><category>tutorial</category><category>deployment</category><category>sinatra</category><category>railsconf</category><category>videos</category><category>testing</category><category>plugins</category><category>gems</category><category>ebook</category><category>presentations</category><title>Railsmine</title><description>Ruby and Javascript Playground</description><link>http://www.railsmine.net/</link><managingEditor>noreply@blogger.com (Kunto Aji Kristianto)</managingEditor><generator>Blogger</generator><openSearch:totalResults>112</openSearch:totalResults><openSearch:startIndex>1</openSearch:startIndex><openSearch:itemsPerPage>25</openSearch:itemsPerPage><atom10:link xmlns:atom10="http://www.w3.org/2005/Atom" rel="self" type="application/rss+xml" href="http://feeds.feedburner.com/railsmine" /><feedburner:info xmlns:feedburner="http://rssnamespace.org/feedburner/ext/1.0" uri="railsmine" /><atom10:link xmlns:atom10="http://www.w3.org/2005/Atom" rel="hub" href="http://pubsubhubbub.appspot.com/" /><image><link>http://creativecommons.org/licenses/by-nc-nd/3.0/</link><url>http://creativecommons.org/images/public/somerights20.gif</url><title>Some Rights Reserved</title></image><item><guid isPermaLink="false">tag:blogger.com,1999:blog-664110592797971793.post-1241246101269134055</guid><pubDate>Sun, 19 Feb 2012 01:47:00 +0000</pubDate><atom:updated>2012-02-20T13:10:13.761+07:00</atom:updated><category domain="http://www.blogger.com/atom/ns#">snippet</category><category domain="http://www.blogger.com/atom/ns#">ruby</category><title>Ruby Whois Script - whois.rb</title><description>Description: My old script. Client for the whois directory service.
&lt;pre class="brush: ruby"&gt;
#!/usr/bin/env ruby

# www.railsmine.net

require 'open-uri'

if ARGV.size &lt; 1
puts '[-] Usage: ruby whois.rb [domain_name]'
exit 1
end

puts '-----------------------------------------------'
puts '[+] Whois tool - whois.rb'
puts "-----------------------------------------------\n\n"

begin
 domain_name = ARGV[0]
 open("http://reports.internic.net/cgi/whois?whois_nic=#{domain_name}&amp;type=domain") {|page|
     page.each_line {|line|
      if (line =~ /Domain Name:/)
       puts "[+]#{line}"
                    end

      if (line =~ /Registrar:/)
       puts "[+]#{line}"
                    end

      if (line =~ /Name Server:/)
       puts "[+]#{line}"
                    end

      if (line =~ /Whois Server:/)
       puts "[+]#{line}"
                    end

      if (line =~ /Referral URL:/)
       puts "[+]#{line}"
                    end

      if (line =~ /Status:/)
       puts "[+]#{line}"
                    end

      if (line =~ /Updated Date:/)
       puts "[+]#{line}"
                    end

      if (line =~ /Creation Date:/)
       puts "[+]#{line}"
                    end

      if (line =~ /Expiration Date:/)
       puts "[+]#{line}"
                    end
  }
    }
rescue OpenURI::HTTPError =&gt; error_msg
        puts "[-] Oops! Bad status code: #{error_msg}. Please try again."
rescue Timeout::Error
        puts '[-] 0ops! Timeout, Check your internet connection.'
end
&lt;/pre&gt;&lt;div class="blogger-post-footer"&gt;&lt;a href="http://www.launchbit.com/az/115-212/"&gt;&lt;img width="468" height="60" src="http://www.launchbit.com/az-images/115-212/" /&gt;&lt;/a&gt;&lt;br /&gt;
&lt;small&gt;(Powered by &lt;a href="http://www.launchbit.com/lb/115-212/"&gt;LaunchBit&lt;/a&gt;)&lt;/small&gt;&lt;img width='1' height='1' src='https://blogger.googleusercontent.com/tracker/664110592797971793-1241246101269134055?l=www.railsmine.net' alt='' /&gt;&lt;/div&gt;
&lt;p&gt;&lt;a href="http://feedads.g.doubleclick.net/~a/j5VV4tw2uDXY-DoE6dP-nAB0N4U/0/da"&gt;&lt;img src="http://feedads.g.doubleclick.net/~a/j5VV4tw2uDXY-DoE6dP-nAB0N4U/0/di" border="0" ismap="true"&gt;&lt;/img&gt;&lt;/a&gt;&lt;br/&gt;
&lt;a href="http://feedads.g.doubleclick.net/~a/j5VV4tw2uDXY-DoE6dP-nAB0N4U/1/da"&gt;&lt;img src="http://feedads.g.doubleclick.net/~a/j5VV4tw2uDXY-DoE6dP-nAB0N4U/1/di" border="0" ismap="true"&gt;&lt;/img&gt;&lt;/a&gt;&lt;/p&gt;&lt;div class="feedflare"&gt;
&lt;a href="http://feeds.feedburner.com/~ff/railsmine?a=DXTYfyp_3us:Oy593bzX5XM:yIl2AUoC8zA"&gt;&lt;img src="http://feeds.feedburner.com/~ff/railsmine?d=yIl2AUoC8zA" border="0"&gt;&lt;/img&gt;&lt;/a&gt; &lt;a href="http://feeds.feedburner.com/~ff/railsmine?a=DXTYfyp_3us:Oy593bzX5XM:63t7Ie-LG7Y"&gt;&lt;img src="http://feeds.feedburner.com/~ff/railsmine?d=63t7Ie-LG7Y" border="0"&gt;&lt;/img&gt;&lt;/a&gt; &lt;a href="http://feeds.feedburner.com/~ff/railsmine?a=DXTYfyp_3us:Oy593bzX5XM:dnMXMwOfBR0"&gt;&lt;img src="http://feeds.feedburner.com/~ff/railsmine?d=dnMXMwOfBR0" border="0"&gt;&lt;/img&gt;&lt;/a&gt; &lt;a href="http://feeds.feedburner.com/~ff/railsmine?a=DXTYfyp_3us:Oy593bzX5XM:YwkR-u9nhCs"&gt;&lt;img src="http://feeds.feedburner.com/~ff/railsmine?d=YwkR-u9nhCs" border="0"&gt;&lt;/img&gt;&lt;/a&gt; &lt;a href="http://feeds.feedburner.com/~ff/railsmine?a=DXTYfyp_3us:Oy593bzX5XM:F7zBnMyn0Lo"&gt;&lt;img src="http://feeds.feedburner.com/~ff/railsmine?i=DXTYfyp_3us:Oy593bzX5XM:F7zBnMyn0Lo" border="0"&gt;&lt;/img&gt;&lt;/a&gt; &lt;a href="http://feeds.feedburner.com/~ff/railsmine?a=DXTYfyp_3us:Oy593bzX5XM:V_sGLiPBpWU"&gt;&lt;img src="http://feeds.feedburner.com/~ff/railsmine?i=DXTYfyp_3us:Oy593bzX5XM:V_sGLiPBpWU" border="0"&gt;&lt;/img&gt;&lt;/a&gt; &lt;a href="http://feeds.feedburner.com/~ff/railsmine?a=DXTYfyp_3us:Oy593bzX5XM:qj6IDK7rITs"&gt;&lt;img src="http://feeds.feedburner.com/~ff/railsmine?d=qj6IDK7rITs" border="0"&gt;&lt;/img&gt;&lt;/a&gt; &lt;a href="http://feeds.feedburner.com/~ff/railsmine?a=DXTYfyp_3us:Oy593bzX5XM:KwTdNBX3Jqk"&gt;&lt;img src="http://feeds.feedburner.com/~ff/railsmine?i=DXTYfyp_3us:Oy593bzX5XM:KwTdNBX3Jqk" border="0"&gt;&lt;/img&gt;&lt;/a&gt; &lt;a href="http://feeds.feedburner.com/~ff/railsmine?a=DXTYfyp_3us:Oy593bzX5XM:gIN9vFwOqvQ"&gt;&lt;img src="http://feeds.feedburner.com/~ff/railsmine?i=DXTYfyp_3us:Oy593bzX5XM:gIN9vFwOqvQ" border="0"&gt;&lt;/img&gt;&lt;/a&gt; &lt;a href="http://feeds.feedburner.com/~ff/railsmine?a=DXTYfyp_3us:Oy593bzX5XM:TzevzKxY174"&gt;&lt;img src="http://feeds.feedburner.com/~ff/railsmine?d=TzevzKxY174" border="0"&gt;&lt;/img&gt;&lt;/a&gt;
&lt;/div&gt;</description><link>http://www.railsmine.net/2012/02/ruby-whois-script-whoisrb.html</link><author>noreply@blogger.com (Kunto Aji Kristianto)</author><thr:total>4</thr:total><creativeCommons:license>http://creativecommons.org/licenses/by-nc-nd/3.0/</creativeCommons:license></item><item><guid isPermaLink="false">tag:blogger.com,1999:blog-664110592797971793.post-8956276048037905079</guid><pubDate>Mon, 13 Feb 2012 01:24:00 +0000</pubDate><atom:updated>2012-02-13T08:24:50.710+07:00</atom:updated><category domain="http://www.blogger.com/atom/ns#">news</category><title>ID-Ruby</title><description>&lt;a href="http://3.bp.blogspot.com/-4p2ussD8gHY/TzhlH7yZxDI/AAAAAAAAAiM/ZslHERy4B6U/s1600/id-ruby.png" imageanchor="1" style="clear: left; float: left; margin-bottom: 1em; margin-right: 1em;"&gt;&lt;img border="0" height="89" src="http://3.bp.blogspot.com/-4p2ussD8gHY/TzhlH7yZxDI/AAAAAAAAAiM/ZslHERy4B6U/s200/id-ruby.png" width="175" /&gt;&lt;/a&gt;ID-Ruby is a community of ruby users in Indonesia to learn together about ruby and to provide a place for ruby developers to meet friends and network. The group meets up at least once a month with talks, demos, hacks and discussions. ID-Ruby Meetup is informal, free, and open to public. Everyone are welcomed to participate.&lt;br /&gt;
&lt;br /&gt;
&lt;b&gt;Getting in Touch&lt;/b&gt;&lt;br /&gt;
Visit &lt;a href="http://id-ruby.org/"&gt;http://id-ruby.org&lt;/a&gt; for meetup information and join ID-Ruby mailing list &lt;a href="http://tech.groups.yahoo.com/group/id-ruby/"&gt;id-ruby@yahoogroups.com&lt;/a&gt;.&lt;br /&gt;
&lt;br /&gt;
&lt;b&gt;Getting Involved&lt;/b&gt;&lt;br /&gt;
Fork ID-Ruby repository here &lt;a href="https://github.com/id-ruby/"&gt;https://github.com/id-ruby/&lt;/a&gt;&lt;div class="blogger-post-footer"&gt;&lt;a href="http://www.launchbit.com/az/115-212/"&gt;&lt;img width="468" height="60" src="http://www.launchbit.com/az-images/115-212/" /&gt;&lt;/a&gt;&lt;br /&gt;
&lt;small&gt;(Powered by &lt;a href="http://www.launchbit.com/lb/115-212/"&gt;LaunchBit&lt;/a&gt;)&lt;/small&gt;&lt;img width='1' height='1' src='https://blogger.googleusercontent.com/tracker/664110592797971793-8956276048037905079?l=www.railsmine.net' alt='' /&gt;&lt;/div&gt;
&lt;p&gt;&lt;a href="http://feedads.g.doubleclick.net/~a/I_2eUACds92s_6tMhPUrvOo6KG0/0/da"&gt;&lt;img src="http://feedads.g.doubleclick.net/~a/I_2eUACds92s_6tMhPUrvOo6KG0/0/di" border="0" ismap="true"&gt;&lt;/img&gt;&lt;/a&gt;&lt;br/&gt;
&lt;a href="http://feedads.g.doubleclick.net/~a/I_2eUACds92s_6tMhPUrvOo6KG0/1/da"&gt;&lt;img src="http://feedads.g.doubleclick.net/~a/I_2eUACds92s_6tMhPUrvOo6KG0/1/di" border="0" ismap="true"&gt;&lt;/img&gt;&lt;/a&gt;&lt;/p&gt;&lt;div class="feedflare"&gt;
&lt;a href="http://feeds.feedburner.com/~ff/railsmine?a=bcn4pUQtLgk:Mkoo9tc9pwE:yIl2AUoC8zA"&gt;&lt;img src="http://feeds.feedburner.com/~ff/railsmine?d=yIl2AUoC8zA" border="0"&gt;&lt;/img&gt;&lt;/a&gt; &lt;a href="http://feeds.feedburner.com/~ff/railsmine?a=bcn4pUQtLgk:Mkoo9tc9pwE:63t7Ie-LG7Y"&gt;&lt;img src="http://feeds.feedburner.com/~ff/railsmine?d=63t7Ie-LG7Y" border="0"&gt;&lt;/img&gt;&lt;/a&gt; &lt;a href="http://feeds.feedburner.com/~ff/railsmine?a=bcn4pUQtLgk:Mkoo9tc9pwE:dnMXMwOfBR0"&gt;&lt;img src="http://feeds.feedburner.com/~ff/railsmine?d=dnMXMwOfBR0" border="0"&gt;&lt;/img&gt;&lt;/a&gt; &lt;a href="http://feeds.feedburner.com/~ff/railsmine?a=bcn4pUQtLgk:Mkoo9tc9pwE:YwkR-u9nhCs"&gt;&lt;img src="http://feeds.feedburner.com/~ff/railsmine?d=YwkR-u9nhCs" border="0"&gt;&lt;/img&gt;&lt;/a&gt; &lt;a href="http://feeds.feedburner.com/~ff/railsmine?a=bcn4pUQtLgk:Mkoo9tc9pwE:F7zBnMyn0Lo"&gt;&lt;img src="http://feeds.feedburner.com/~ff/railsmine?i=bcn4pUQtLgk:Mkoo9tc9pwE:F7zBnMyn0Lo" border="0"&gt;&lt;/img&gt;&lt;/a&gt; &lt;a href="http://feeds.feedburner.com/~ff/railsmine?a=bcn4pUQtLgk:Mkoo9tc9pwE:V_sGLiPBpWU"&gt;&lt;img src="http://feeds.feedburner.com/~ff/railsmine?i=bcn4pUQtLgk:Mkoo9tc9pwE:V_sGLiPBpWU" border="0"&gt;&lt;/img&gt;&lt;/a&gt; &lt;a href="http://feeds.feedburner.com/~ff/railsmine?a=bcn4pUQtLgk:Mkoo9tc9pwE:qj6IDK7rITs"&gt;&lt;img src="http://feeds.feedburner.com/~ff/railsmine?d=qj6IDK7rITs" border="0"&gt;&lt;/img&gt;&lt;/a&gt; &lt;a href="http://feeds.feedburner.com/~ff/railsmine?a=bcn4pUQtLgk:Mkoo9tc9pwE:KwTdNBX3Jqk"&gt;&lt;img src="http://feeds.feedburner.com/~ff/railsmine?i=bcn4pUQtLgk:Mkoo9tc9pwE:KwTdNBX3Jqk" border="0"&gt;&lt;/img&gt;&lt;/a&gt; &lt;a href="http://feeds.feedburner.com/~ff/railsmine?a=bcn4pUQtLgk:Mkoo9tc9pwE:gIN9vFwOqvQ"&gt;&lt;img src="http://feeds.feedburner.com/~ff/railsmine?i=bcn4pUQtLgk:Mkoo9tc9pwE:gIN9vFwOqvQ" border="0"&gt;&lt;/img&gt;&lt;/a&gt; &lt;a href="http://feeds.feedburner.com/~ff/railsmine?a=bcn4pUQtLgk:Mkoo9tc9pwE:TzevzKxY174"&gt;&lt;img src="http://feeds.feedburner.com/~ff/railsmine?d=TzevzKxY174" border="0"&gt;&lt;/img&gt;&lt;/a&gt;
&lt;/div&gt;</description><link>http://www.railsmine.net/2012/02/id-ruby.html</link><author>noreply@blogger.com (Kunto Aji Kristianto)</author><media:thumbnail xmlns:media="http://search.yahoo.com/mrss/" url="http://3.bp.blogspot.com/-4p2ussD8gHY/TzhlH7yZxDI/AAAAAAAAAiM/ZslHERy4B6U/s72-c/id-ruby.png" height="72" width="72" /><thr:total>0</thr:total><creativeCommons:license>http://creativecommons.org/licenses/by-nc-nd/3.0/</creativeCommons:license></item><item><title>Links for 2011-08-14 [del.icio.us]</title><link>http://del.icio.us/kuntoaji#2011-08-14</link><pubDate>Mon, 15 Aug 2011 00:00:00 PDT</pubDate><guid isPermaLink="true">http://del.icio.us/kuntoaji#2011-08-14</guid><description>&lt;ul&gt;
&lt;li&gt;&lt;a href="http://nathansjslessons.appspot.com/lesson?id=1000"&gt;http://nathansjslessons.appspot.com/lesson?id=1000&lt;/a&gt;&lt;/li&gt;
&lt;li&gt;&lt;a href="http://ruby.learncodethehardway.org/"&gt;http://ruby.learncodethehardway.org/&lt;/a&gt;&lt;/li&gt;
&lt;/ul&gt;</description></item><item><title>Links for 2011-08-13 [del.icio.us]</title><link>http://del.icio.us/kuntoaji#2011-08-13</link><pubDate>Sun, 14 Aug 2011 00:00:00 PDT</pubDate><guid isPermaLink="true">http://del.icio.us/kuntoaji#2011-08-13</guid><description>&lt;ul&gt;
&lt;li&gt;&lt;a href="http://www.sohtanaka.com/web-design/automatic-image-slider-w-css-jquery//web-design/automatic-image-slider-w-css-jquery/"&gt;http://www.sohtanaka.com/web-design/automatic-image-slider-w-css-jquery//web-design/automatic-image-slider-w-css-jquery/&lt;/a&gt;&lt;/li&gt;
&lt;/ul&gt;</description></item><item><guid isPermaLink="false">tag:blogger.com,1999:blog-664110592797971793.post-9189157929684448288</guid><pubDate>Sun, 17 Jul 2011 13:48:00 +0000</pubDate><atom:updated>2011-07-17T20:50:55.409+07:00</atom:updated><category domain="http://www.blogger.com/atom/ns#">ruby</category><category domain="http://www.blogger.com/atom/ns#">videos</category><title>Ruby 2.0: What We Want to Accomplish in the Near Future</title><description>Matz, the founder of Ruby, talks about Ruby 2.0 and the future of Ruby.&lt;br /&gt;
&lt;br /&gt;
&lt;iframe width="500" height="289" src="http://www.youtube.com/embed/t9LMOydfc4k" frameborder="0" allowfullscreen&gt;&lt;/iframe&gt;&lt;br /&gt;
&lt;script type="text/javascript"&gt;&lt;!--
google_ad_client = "ca-pub-6534047686299981";
google_ad_host = "pub-1556223355139109";
/* railsmine footer center */
google_ad_slot = "5063403611";
google_ad_width = 468;
google_ad_height = 15;
//--&gt;
&lt;/script&gt;&lt;br /&gt;
&lt;script type="text/javascript"
src="http://pagead2.googlesyndication.com/pagead/show_ads.js"&gt;
&lt;/script&gt;&lt;div class="blogger-post-footer"&gt;&lt;a href="http://www.launchbit.com/az/115-212/"&gt;&lt;img width="468" height="60" src="http://www.launchbit.com/az-images/115-212/" /&gt;&lt;/a&gt;&lt;br /&gt;
&lt;small&gt;(Powered by &lt;a href="http://www.launchbit.com/lb/115-212/"&gt;LaunchBit&lt;/a&gt;)&lt;/small&gt;&lt;img width='1' height='1' src='https://blogger.googleusercontent.com/tracker/664110592797971793-9189157929684448288?l=www.railsmine.net' alt='' /&gt;&lt;/div&gt;
&lt;p&gt;&lt;a href="http://feedads.g.doubleclick.net/~a/V_WXNVcFNh525PmRLXqcyYNVZLA/0/da"&gt;&lt;img src="http://feedads.g.doubleclick.net/~a/V_WXNVcFNh525PmRLXqcyYNVZLA/0/di" border="0" ismap="true"&gt;&lt;/img&gt;&lt;/a&gt;&lt;br/&gt;
&lt;a href="http://feedads.g.doubleclick.net/~a/V_WXNVcFNh525PmRLXqcyYNVZLA/1/da"&gt;&lt;img src="http://feedads.g.doubleclick.net/~a/V_WXNVcFNh525PmRLXqcyYNVZLA/1/di" border="0" ismap="true"&gt;&lt;/img&gt;&lt;/a&gt;&lt;/p&gt;&lt;div class="feedflare"&gt;
&lt;a href="http://feeds.feedburner.com/~ff/railsmine?a=NL0cnUjFzHg:S7A577BKozM:yIl2AUoC8zA"&gt;&lt;img src="http://feeds.feedburner.com/~ff/railsmine?d=yIl2AUoC8zA" border="0"&gt;&lt;/img&gt;&lt;/a&gt; &lt;a href="http://feeds.feedburner.com/~ff/railsmine?a=NL0cnUjFzHg:S7A577BKozM:63t7Ie-LG7Y"&gt;&lt;img src="http://feeds.feedburner.com/~ff/railsmine?d=63t7Ie-LG7Y" border="0"&gt;&lt;/img&gt;&lt;/a&gt; &lt;a href="http://feeds.feedburner.com/~ff/railsmine?a=NL0cnUjFzHg:S7A577BKozM:dnMXMwOfBR0"&gt;&lt;img src="http://feeds.feedburner.com/~ff/railsmine?d=dnMXMwOfBR0" border="0"&gt;&lt;/img&gt;&lt;/a&gt; &lt;a href="http://feeds.feedburner.com/~ff/railsmine?a=NL0cnUjFzHg:S7A577BKozM:YwkR-u9nhCs"&gt;&lt;img src="http://feeds.feedburner.com/~ff/railsmine?d=YwkR-u9nhCs" border="0"&gt;&lt;/img&gt;&lt;/a&gt; &lt;a href="http://feeds.feedburner.com/~ff/railsmine?a=NL0cnUjFzHg:S7A577BKozM:F7zBnMyn0Lo"&gt;&lt;img src="http://feeds.feedburner.com/~ff/railsmine?i=NL0cnUjFzHg:S7A577BKozM:F7zBnMyn0Lo" border="0"&gt;&lt;/img&gt;&lt;/a&gt; &lt;a href="http://feeds.feedburner.com/~ff/railsmine?a=NL0cnUjFzHg:S7A577BKozM:V_sGLiPBpWU"&gt;&lt;img src="http://feeds.feedburner.com/~ff/railsmine?i=NL0cnUjFzHg:S7A577BKozM:V_sGLiPBpWU" border="0"&gt;&lt;/img&gt;&lt;/a&gt; &lt;a href="http://feeds.feedburner.com/~ff/railsmine?a=NL0cnUjFzHg:S7A577BKozM:qj6IDK7rITs"&gt;&lt;img src="http://feeds.feedburner.com/~ff/railsmine?d=qj6IDK7rITs" border="0"&gt;&lt;/img&gt;&lt;/a&gt; &lt;a href="http://feeds.feedburner.com/~ff/railsmine?a=NL0cnUjFzHg:S7A577BKozM:KwTdNBX3Jqk"&gt;&lt;img src="http://feeds.feedburner.com/~ff/railsmine?i=NL0cnUjFzHg:S7A577BKozM:KwTdNBX3Jqk" border="0"&gt;&lt;/img&gt;&lt;/a&gt; &lt;a href="http://feeds.feedburner.com/~ff/railsmine?a=NL0cnUjFzHg:S7A577BKozM:gIN9vFwOqvQ"&gt;&lt;img src="http://feeds.feedburner.com/~ff/railsmine?i=NL0cnUjFzHg:S7A577BKozM:gIN9vFwOqvQ" border="0"&gt;&lt;/img&gt;&lt;/a&gt; &lt;a href="http://feeds.feedburner.com/~ff/railsmine?a=NL0cnUjFzHg:S7A577BKozM:TzevzKxY174"&gt;&lt;img src="http://feeds.feedburner.com/~ff/railsmine?d=TzevzKxY174" border="0"&gt;&lt;/img&gt;&lt;/a&gt;
&lt;/div&gt;</description><link>http://www.railsmine.net/2011/07/ruby-20-what-we-want-to-accomplish-in.html</link><author>noreply@blogger.com (Kunto Aji Kristianto)</author><media:thumbnail xmlns:media="http://search.yahoo.com/mrss/" url="http://img.youtube.com/vi/t9LMOydfc4k/default.jpg" height="72" width="72" /><thr:total>0</thr:total><creativeCommons:license>http://creativecommons.org/licenses/by-nc-nd/3.0/</creativeCommons:license></item><item><guid isPermaLink="false">tag:blogger.com,1999:blog-664110592797971793.post-2029838378451759522</guid><pubDate>Sun, 17 Jul 2011 06:03:00 +0000</pubDate><atom:updated>2011-07-17T13:20:58.149+07:00</atom:updated><category domain="http://www.blogger.com/atom/ns#">plugins</category><category domain="http://www.blogger.com/atom/ns#">ruby on rails</category><category domain="http://www.blogger.com/atom/ns#">gems</category><category domain="http://www.blogger.com/atom/ns#">tutorial</category><category domain="http://www.blogger.com/atom/ns#">rails 3</category><category domain="http://www.blogger.com/atom/ns#">english</category><title>ActiveAdmin Tutorial</title><description>&lt;b&gt;What is ActiveAdmin?&lt;/b&gt;&lt;br /&gt;
Active Admin is a Ruby on Rails plugin for generating administration sytle interfaces. The goals of this plugin are easy-to-use for non-techical users and fast for developers.&lt;br /&gt;
&lt;br /&gt;
&lt;div class="separator" style="clear: both; text-align: center;"&gt;&lt;a href="http://2.bp.blogspot.com/-P2hFAWjqATU/TiJ5I0plGBI/AAAAAAAAAgE/-hZNhZzqeQQ/s1600/activeadmin.png" imageanchor="1" style="margin-left: 1em; margin-right: 1em;"&gt;&lt;img border="0" height="206" src="http://2.bp.blogspot.com/-P2hFAWjqATU/TiJ5I0plGBI/AAAAAAAAAgE/-hZNhZzqeQQ/s400/activeadmin.png" width="400" /&gt;&lt;/a&gt;&lt;/div&gt;&lt;br /&gt;
&lt;br /&gt;
&lt;b&gt;How To Use ActiveAdmin&lt;/b&gt;&lt;br /&gt;
Suppose we are create Blog web application.&lt;br /&gt;
&lt;pre class="brush:plain"&gt;$&amp;gt; rails new blog&lt;/pre&gt;&lt;a name='more'&gt;&lt;/a&gt;&lt;br /&gt;
Add the following to your Gemfile.&lt;br /&gt;
&lt;pre class="brush:ruby"&gt;# Gemfile
gem 'activeadmin'&lt;/pre&gt;&lt;br /&gt;
Run bundle install.&lt;br /&gt;
&lt;pre class="brush:plain"&gt;$&amp;gt; bundle install&lt;/pre&gt;&lt;br /&gt;
Install ActiveAdmin.&lt;br /&gt;
&lt;pre class="brush:plain"&gt;$&amp;gt; rails generate active_admin:install&lt;/pre&gt;&lt;br /&gt;
After installation is finished, it will create:&lt;br /&gt;
1. An configuration file on config/initializers/active_admin.rb&lt;br /&gt;
2. AdminUser model on app/models/admin_user.rb&lt;br /&gt;
3. An directory called app/admin to configure the admin interface of our resource.&lt;br /&gt;
4. Migration files.&lt;br /&gt;
&lt;br /&gt;
Migrate your db and start the server.&lt;br /&gt;
&lt;pre class="brush:plain"&gt;$&amp;gt; rake db:migrate
$&amp;gt; rails server&lt;/pre&gt;&lt;br /&gt;
Visit http://localhost:3000/admin and log in using:&lt;br /&gt;
&lt;ul&gt;&lt;li&gt;Email: admin@example.com&lt;/li&gt;
&lt;li&gt;Password: password&lt;/li&gt;
&lt;/ul&gt;&lt;br /&gt;
Next, create Post model.&lt;br /&gt;
&lt;pre class="brush:plain"&gt;$&amp;gt; rails g model Post title:string content:text&lt;/pre&gt;&lt;br /&gt;
Create admin interface for Post model. Because we use ActiveAdmin, we don't need to create controller for Post model. This generator will create file on app/admin/posts.rb.&lt;br /&gt;
&lt;pre class="brush:plain"&gt;$&amp;gt; rails generate active_admin:resource Post&lt;/pre&gt;&lt;br /&gt;
Configure admin interface index page for Post model.&lt;br /&gt;
&lt;pre class="brush:ruby"&gt;ActiveAdmin.register Post do
  index do
    column :title
    column :content
  end
end
&lt;/pre&gt;&lt;br /&gt;
Visit http://localhost:3000/admin/posts to see the result.&lt;br /&gt;
&lt;br /&gt;
More information about ActiveAdmin:&lt;br /&gt;
&lt;ul&gt;&lt;li&gt;Documentation - &lt;a href="http://activeadmin.info/documentation.htm"&gt;http://activeadmin.info/documentation.htm&lt;/a&gt;l&lt;/li&gt;
&lt;li&gt;Demo - &lt;a href="http://demo.activeadmin.info/admin"&gt;http://demo.activeadmin.info/admin&lt;/a&gt;&lt;/li&gt;
&lt;li&gt;Source Code - &lt;a href="http://github.com/gregbell/active_admin"&gt;http://github.com/gregbell/active_admin&lt;/a&gt;&lt;/li&gt;
&lt;/ul&gt;&lt;br /&gt;
&lt;script type="text/javascript"&gt;&lt;!--
google_ad_client = "ca-pub-6534047686299981";
google_ad_host = "pub-1556223355139109";
/* railsmine footer center */
google_ad_slot = "5063403611";
google_ad_width = 468;
google_ad_height = 15;
//--&gt;
&lt;/script&gt;&lt;br /&gt;
&lt;script type="text/javascript"
src="http://pagead2.googlesyndication.com/pagead/show_ads.js"&gt;
&lt;/script&gt;&lt;div class="blogger-post-footer"&gt;&lt;a href="http://www.launchbit.com/az/115-212/"&gt;&lt;img width="468" height="60" src="http://www.launchbit.com/az-images/115-212/" /&gt;&lt;/a&gt;&lt;br /&gt;
&lt;small&gt;(Powered by &lt;a href="http://www.launchbit.com/lb/115-212/"&gt;LaunchBit&lt;/a&gt;)&lt;/small&gt;&lt;img width='1' height='1' src='https://blogger.googleusercontent.com/tracker/664110592797971793-2029838378451759522?l=www.railsmine.net' alt='' /&gt;&lt;/div&gt;
&lt;p&gt;&lt;a href="http://feedads.g.doubleclick.net/~a/EcdfevwMr_2P01mH88u8roLMz88/0/da"&gt;&lt;img src="http://feedads.g.doubleclick.net/~a/EcdfevwMr_2P01mH88u8roLMz88/0/di" border="0" ismap="true"&gt;&lt;/img&gt;&lt;/a&gt;&lt;br/&gt;
&lt;a href="http://feedads.g.doubleclick.net/~a/EcdfevwMr_2P01mH88u8roLMz88/1/da"&gt;&lt;img src="http://feedads.g.doubleclick.net/~a/EcdfevwMr_2P01mH88u8roLMz88/1/di" border="0" ismap="true"&gt;&lt;/img&gt;&lt;/a&gt;&lt;/p&gt;&lt;div class="feedflare"&gt;
&lt;a href="http://feeds.feedburner.com/~ff/railsmine?a=pXSHS_wHTqQ:nDsUYAs5XU4:yIl2AUoC8zA"&gt;&lt;img src="http://feeds.feedburner.com/~ff/railsmine?d=yIl2AUoC8zA" border="0"&gt;&lt;/img&gt;&lt;/a&gt; &lt;a href="http://feeds.feedburner.com/~ff/railsmine?a=pXSHS_wHTqQ:nDsUYAs5XU4:63t7Ie-LG7Y"&gt;&lt;img src="http://feeds.feedburner.com/~ff/railsmine?d=63t7Ie-LG7Y" border="0"&gt;&lt;/img&gt;&lt;/a&gt; &lt;a href="http://feeds.feedburner.com/~ff/railsmine?a=pXSHS_wHTqQ:nDsUYAs5XU4:dnMXMwOfBR0"&gt;&lt;img src="http://feeds.feedburner.com/~ff/railsmine?d=dnMXMwOfBR0" border="0"&gt;&lt;/img&gt;&lt;/a&gt; &lt;a href="http://feeds.feedburner.com/~ff/railsmine?a=pXSHS_wHTqQ:nDsUYAs5XU4:YwkR-u9nhCs"&gt;&lt;img src="http://feeds.feedburner.com/~ff/railsmine?d=YwkR-u9nhCs" border="0"&gt;&lt;/img&gt;&lt;/a&gt; &lt;a href="http://feeds.feedburner.com/~ff/railsmine?a=pXSHS_wHTqQ:nDsUYAs5XU4:F7zBnMyn0Lo"&gt;&lt;img src="http://feeds.feedburner.com/~ff/railsmine?i=pXSHS_wHTqQ:nDsUYAs5XU4:F7zBnMyn0Lo" border="0"&gt;&lt;/img&gt;&lt;/a&gt; &lt;a href="http://feeds.feedburner.com/~ff/railsmine?a=pXSHS_wHTqQ:nDsUYAs5XU4:V_sGLiPBpWU"&gt;&lt;img src="http://feeds.feedburner.com/~ff/railsmine?i=pXSHS_wHTqQ:nDsUYAs5XU4:V_sGLiPBpWU" border="0"&gt;&lt;/img&gt;&lt;/a&gt; &lt;a href="http://feeds.feedburner.com/~ff/railsmine?a=pXSHS_wHTqQ:nDsUYAs5XU4:qj6IDK7rITs"&gt;&lt;img src="http://feeds.feedburner.com/~ff/railsmine?d=qj6IDK7rITs" border="0"&gt;&lt;/img&gt;&lt;/a&gt; &lt;a href="http://feeds.feedburner.com/~ff/railsmine?a=pXSHS_wHTqQ:nDsUYAs5XU4:KwTdNBX3Jqk"&gt;&lt;img src="http://feeds.feedburner.com/~ff/railsmine?i=pXSHS_wHTqQ:nDsUYAs5XU4:KwTdNBX3Jqk" border="0"&gt;&lt;/img&gt;&lt;/a&gt; &lt;a href="http://feeds.feedburner.com/~ff/railsmine?a=pXSHS_wHTqQ:nDsUYAs5XU4:gIN9vFwOqvQ"&gt;&lt;img src="http://feeds.feedburner.com/~ff/railsmine?i=pXSHS_wHTqQ:nDsUYAs5XU4:gIN9vFwOqvQ" border="0"&gt;&lt;/img&gt;&lt;/a&gt; &lt;a href="http://feeds.feedburner.com/~ff/railsmine?a=pXSHS_wHTqQ:nDsUYAs5XU4:TzevzKxY174"&gt;&lt;img src="http://feeds.feedburner.com/~ff/railsmine?d=TzevzKxY174" border="0"&gt;&lt;/img&gt;&lt;/a&gt;
&lt;/div&gt;</description><link>http://www.railsmine.net/2011/07/activeadmin-tutorial.html</link><author>noreply@blogger.com (Kunto Aji Kristianto)</author><media:thumbnail xmlns:media="http://search.yahoo.com/mrss/" url="http://2.bp.blogspot.com/-P2hFAWjqATU/TiJ5I0plGBI/AAAAAAAAAgE/-hZNhZzqeQQ/s72-c/activeadmin.png" height="72" width="72" /><thr:total>3</thr:total><creativeCommons:license>http://creativecommons.org/licenses/by-nc-nd/3.0/</creativeCommons:license></item><item><title>Links for 2011-07-10 [del.icio.us]</title><link>http://del.icio.us/kuntoaji#2011-07-10</link><pubDate>Mon, 11 Jul 2011 00:00:00 PDT</pubDate><guid isPermaLink="true">http://del.icio.us/kuntoaji#2011-07-10</guid><description>&lt;ul&gt;
&lt;li&gt;&lt;a href="http://www.vincentcheung.ca/jsencryption/"&gt;JavaScript Encryption and Decryption&lt;/a&gt;&lt;/li&gt;
&lt;/ul&gt;</description></item><item><title>Links for 2011-06-25 [del.icio.us]</title><link>http://del.icio.us/kuntoaji#2011-06-25</link><pubDate>Sun, 26 Jun 2011 00:00:00 PDT</pubDate><guid isPermaLink="true">http://del.icio.us/kuntoaji#2011-06-25</guid><description>&lt;ul&gt;
&lt;li&gt;&lt;a href="http://getspace.org/typographic-contras-minimalist-web-design/"&gt;How to Actually Make Text Look Interesting: Minimalist Web Design &amp;mdash; Space&lt;/a&gt;&lt;/li&gt;
&lt;li&gt;&lt;a href="http://michaelnielsen.org/blog/write-your-first-mapreduce-program-in-20-minutes/"&gt;Write your first MapReduce program in 20 minutes | Michael Nielsen&lt;/a&gt;&lt;/li&gt;
&lt;li&gt;&lt;a href="http://www.slideshare.net/mbleigh/nodejs-and-ruby"&gt;Node.js and Ruby&lt;/a&gt;&lt;/li&gt;
&lt;li&gt;&lt;a href="http://kkovacs.eu/cassandra-vs-mongodb-vs-couchdb-vs-redis"&gt;Cassandra vs MongoDB vs CouchDB vs Redis vs Riak vs HBase comparison :: KKovacs&lt;/a&gt;&lt;/li&gt;
&lt;/ul&gt;</description></item><item><title>Links for 2011-06-20 [del.icio.us]</title><link>http://del.icio.us/kuntoaji#2011-06-20</link><pubDate>Tue, 21 Jun 2011 00:00:00 PDT</pubDate><guid isPermaLink="true">http://del.icio.us/kuntoaji#2011-06-20</guid><description>&lt;ul&gt;
&lt;li&gt;&lt;a href="http://alphadi.wordpress.com/2011/05/10/updating-slackware-13-1-to-13-37-operation-successful/"&gt;Upgrading slackware 13.1 to 13.37: Operation successful!&lt;/a&gt;&lt;/li&gt;
&lt;li&gt;&lt;a href="http://www.linuxquestions.org/questions/slackware-14/upgrade-from-slackware-13-1-to-13-37-a-878018/"&gt;Upgrade from slackware 13.1 to 13.37&lt;/a&gt;&lt;/li&gt;
&lt;/ul&gt;</description></item><item><guid isPermaLink="false">tag:blogger.com,1999:blog-664110592797971793.post-2139936341442715511</guid><pubDate>Sat, 30 Apr 2011 10:44:00 +0000</pubDate><atom:updated>2011-04-30T17:46:57.516+07:00</atom:updated><category domain="http://www.blogger.com/atom/ns#">rubyconf</category><category domain="http://www.blogger.com/atom/ns#">english</category><title>RedDotRubyConf 2011 links &amp; resources</title><description>&lt;div class="c5"&gt;&lt;span class="c0"&gt;This content is originally from &lt;a href="http://twitter.com/cheeaun"&gt;@cheeaun&lt;/a&gt; (Re-post from &lt;a href="https://docs.google.com/document/pub?id=1aWZqJVeTk1T7Ll2SeHchKM8X8Dj7L3kXkWMXb4lBPys&amp;pli=1"&gt;here&lt;/a&gt;).&lt;/span&gt;&lt;/div&gt;&lt;div class="c5"&gt;&lt;span class="c0"&gt;Ping &lt;/span&gt;&lt;span class="c2"&gt;&lt;a href="http://twitter.com/cheeaun"&gt;@cheeaun&lt;/a&gt;&lt;/span&gt;&lt;span class="c0"&gt; on Twitter if &lt;/span&gt;&lt;span class="c0 c3"&gt;you&lt;/span&gt;&lt;span class="c0"&gt; found some awesome stuff for &lt;/span&gt;&lt;span class="c2"&gt;&lt;a href="https://twitter.com/search/%23reddot"&gt;#reddot&lt;/a&gt;&lt;/span&gt;&lt;/div&gt;&lt;div class="c5"&gt;&lt;br /&gt;
&lt;/div&gt;&lt;div class="c5"&gt;&lt;span class="c0"&gt;Web site: &lt;/span&gt;&lt;span class="c2"&gt;&lt;a href="http://reddotrubyconf.com/"&gt;http://reddotrubyconf.com/&lt;/a&gt;&lt;/span&gt;&lt;span class="c0"&gt; &lt;/span&gt;&lt;/div&gt;&lt;h2 class="c4"&gt;&lt;a href="http://www.blogger.com/post-create.g?blogID=664110592797971793" name="h.zia2765f68rh"&gt;&lt;/a&gt;&lt;span class="c3 c10"&gt;Slides&lt;/span&gt;&lt;/h2&gt;&lt;ol class="c9" start="1"&gt;&lt;li class="c1"&gt;&lt;span class="c0"&gt;Ryan Bigg - How to be awesome at Rails &lt;/span&gt;&lt;span class="c2"&gt;&lt;a href="http://ryanbigg.com/presentations/awesome.pdf"&gt;http://ryanbigg.com/presentations/awesome.pdf&lt;/a&gt;&lt;/span&gt;&lt;/li&gt;
&lt;li class="c1"&gt;&lt;span class="c0"&gt;Paul Gallagher - Multi-tenancy with Rails &lt;/span&gt;&lt;span class="c2"&gt;&lt;a href="http://tardate.blogspot.com/2011/04/multi-tenancy-with-rails.html"&gt;http://tardate.blogspot.com/2011/04/multi-tenancy-with-rails.html&lt;/a&gt;&lt;/span&gt;&lt;/li&gt;
&lt;li class="c1"&gt;&lt;span class="c0"&gt;Mikel Lindsaar - Ruby can haz everyone &lt;/span&gt;&lt;span class="c2"&gt;&lt;a href="http://speakerrate.com/talks/7315-ruby-can-haz-everyone"&gt;http://speakerrate.com/talks/7315-ruby-can-haz-everyone&lt;/a&gt;&lt;/span&gt;&lt;/li&gt;
&lt;li class="c1"&gt;&lt;span class="c0"&gt;Robert Berger - Deploying Infrastructure with Opscode Chef &lt;/span&gt;&lt;span class="c2"&gt;&lt;a href="http://speakerrate.com/talks/7319-deploying-infrastructure-with-opscode-chef"&gt;http://speakerrate.com/talks/7319-deploying-infrastructure-with-opscode-chef&lt;/a&gt;&lt;/span&gt;&lt;/li&gt;
&lt;li class="c1"&gt;&lt;span class="c0"&gt;Alex Nguyen - Benefits of using MongoDB: Reduce Complexity &amp;amp; Adapt to Changes &lt;/span&gt;&lt;span class="c2"&gt;&lt;a href="http://www.slideshare.net/tiendung/benefits-of-using-mongodb-reduce-complexity-adapt-to-changes"&gt;http://www.slideshare.net/tiendung/benefits-of-using-mongodb-reduce-complexity-adapt-to-changes&lt;/a&gt;&lt;/span&gt;&lt;/li&gt;
&lt;li class="c1"&gt;&lt;span class="c0"&gt;Gregg Pollack - Under the cover with Rails 3 &lt;/span&gt;&lt;span class="c2"&gt;&lt;a href="http://blog.envylabs.com/reddot/"&gt;http://blog.envylabs.com/reddot/&lt;/a&gt;&lt;/span&gt;&lt;span class="c2"&gt; &lt;/span&gt;&lt;/li&gt;
&lt;li class="c1"&gt;&lt;span class="c0"&gt;Matt Jacobs - Building a Financial App in Rails &lt;/span&gt;&lt;span class="c2"&gt;&lt;a href="http://matthewrudy-at-reddot.heroku.com/"&gt;http://matthewrudy-at-reddot.heroku.com/&lt;/a&gt;&lt;/span&gt;&lt;span class="c2"&gt; &lt;/span&gt;&lt;/li&gt;
&lt;li class="c1"&gt;&lt;span class="c0"&gt;Sau Sheong - Ruby and R &lt;/span&gt;&lt;span class="c2"&gt;&lt;a href="http://www.slideshare.net/sausheong/rubyand-r"&gt;http://www.slideshare.net/sausheong/rubyand-r&lt;/a&gt;&lt;/span&gt;&lt;/li&gt;
&lt;li class="c1"&gt;&lt;span class="c0"&gt;Tom Preston-Werner - Unlocking the Secrets of Git (video *) &lt;/span&gt;&lt;span class="c2"&gt;&lt;a href="http://sea.ucar.edu/event/unlocking-secrets-git"&gt;http://sea.ucar.edu/event/unlocking-secrets-git&lt;/a&gt;&lt;/span&gt;&lt;/li&gt;
&lt;li class="c1"&gt;&lt;span class="c0"&gt;Gautam Rege - Outsourcing &amp;amp; Rails &lt;/span&gt;&lt;span class="c2"&gt;&lt;a href="http://outsourcing-rails-reddot.heroku.com/"&gt;http://outsourcing-rails-reddot.heroku.com/&lt;/a&gt;&lt;/span&gt;&lt;span class="c0"&gt; &lt;/span&gt;&lt;/li&gt;
&lt;li class="c1"&gt;&lt;span class="c0"&gt;Andras Kristof - Agile Development in Real Life &lt;/span&gt;&lt;span class="c2"&gt;&lt;a href="http://public.iwork.com/document/?d=Agile_Development_IRL.key&amp;amp;a=p198572054"&gt;http://public.iwork.com/document/?d=Agile_Development_IRL.key&amp;amp;a=p198572054&lt;/a&gt;&lt;/span&gt;&lt;span class="c0"&gt; &lt;/span&gt;&lt;/li&gt;
&lt;li class="c1"&gt;&lt;span class="c0"&gt;Ian McFarland - Agile the Pivotal Way (video *) &lt;/span&gt;&lt;span class="c2"&gt;&lt;a href="http://pivotallabs.com/talks/103-agile-the-pivotal-way"&gt;http://pivotallabs.com/talks/103-agile-the-pivotal-way&lt;/a&gt;&lt;/span&gt;&lt;span class="c0"&gt; &lt;/span&gt;&lt;/li&gt;
&lt;li class="c1"&gt;&lt;span class="c0"&gt;Tze Yang Ng - A Rubyist’s guide to Smalltalk &lt;/span&gt;&lt;span class="c2"&gt;&lt;a href="https://github.com/ngty/levelo"&gt;https://github.com/ngty/levelo&lt;/a&gt;&lt;/span&gt;&lt;span class="c0"&gt; &lt;/span&gt;&lt;/li&gt;
&lt;/ol&gt;&lt;div class="c5 c6"&gt;&lt;span class="c0"&gt;&lt;/span&gt;&lt;/div&gt;&lt;div class="c5"&gt;&lt;span class="c0"&gt;* Presented on #reddot as well&lt;/span&gt;&lt;/div&gt;&lt;h3 class="c5 c8"&gt;&lt;a href="http://www.blogger.com/post-create.g?blogID=664110592797971793" name="h.d0l437ffcum5"&gt;&lt;/a&gt;&lt;/h3&gt;&lt;h2 class="c4"&gt;&lt;span class="c10 c3"&gt;PechaKucha&lt;/span&gt;&lt;/h2&gt;&lt;ol class="c9" start="1"&gt;&lt;li class="c1"&gt;&lt;span class="c0"&gt;Bryan Bibat - Sowing the Seeds &lt;/span&gt;&lt;span class="c2"&gt;&lt;a href="http://blog.bryanbibat.net/2011/04/23/sowing-the-seeds/"&gt;http://blog.bryanbibat.net/2011/04/23/sowing-the-seeds/&lt;/a&gt;&lt;/span&gt;&lt;/li&gt;
&lt;li class="c1"&gt;&lt;span class="c0"&gt;Chung Shin Yee - GPU Computing with Ruby &lt;/span&gt;&lt;span class="c2"&gt;&lt;a href="http://blog.speedgocomputing.com/2011/04/gpu-computing-with-ruby.html"&gt;http://blog.speedgocomputing.com/2011/04/gpu-computing-with-ruby.html&lt;/a&gt;&lt;/span&gt;&lt;/li&gt;
&lt;/ol&gt;&lt;h2 class="c4"&gt;&lt;a href="http://www.blogger.com/post-create.g?blogID=664110592797971793" name="h.5k4rwkt1zpbp"&gt;&lt;/a&gt;&lt;span class="c10 c3"&gt;Blog posts&lt;/span&gt;&lt;/h2&gt;&lt;ol class="c9" start="1"&gt;&lt;li class="c1"&gt;&lt;span class="c2"&gt;&lt;a href="http://ryanbigg.com/reddot-day-one"&gt;http://ryanbigg.com/reddot-day-one&lt;/a&gt;&lt;/span&gt;&lt;/li&gt;
&lt;li class="c1"&gt;&lt;span class="c2"&gt;&lt;a href="http://ryanbigg.com/reddot-day-two"&gt;http://ryanbigg.com/reddot-day-two&lt;/a&gt;&lt;/span&gt;&lt;/li&gt;
&lt;li class="c1"&gt;&lt;span class="c2"&gt;&lt;a href="http://www.spong.org/2011/04/red-dot-ruby-conf-2011.html"&gt;http://www.spong.org/2011/04/red-dot-ruby-conf-2011.html&lt;/a&gt;&lt;/span&gt;&lt;/li&gt;
&lt;li class="c1"&gt;&lt;span class="c2"&gt;&lt;a href="http://ru05team.blogspot.com/2011/04/red-dot-ruby-conf-2011.html"&gt;http://ru05team.blogspot.com/2011/04/red-dot-ruby-conf-2011.html&lt;/a&gt;&lt;/span&gt;&lt;/li&gt;
&lt;li class="c1"&gt;&lt;span class="c2"&gt;&lt;a href="http://www.hoeg.com/archives/81"&gt;http://www.hoeg.com/archives/81&lt;/a&gt;&lt;/span&gt;&lt;/li&gt;
&lt;li class="c1"&gt;&lt;span class="c2"&gt;&lt;a href="http://www.prateekdayal.net/2011/04/25/reddot-rubyconf-2011-and-github-drinkup/"&gt;http://www.prateekdayal.net/2011/04/25/reddot-rubyconf-2011-and-github-drinkup/&lt;/a&gt;&lt;/span&gt;&lt;/li&gt;
&lt;li class="c1"&gt;&lt;span class="c2"&gt;&lt;a href="http://blog.chillmoz.com/post/4838035213/reddotrubyconf-2011-day-one"&gt;http://blog.chillmoz.com/post/4838035213/reddotrubyconf-2011-day-one&lt;/a&gt;&lt;/span&gt;&lt;/li&gt;
&lt;li class="c1"&gt;&lt;span class="c2"&gt;&lt;a href="http://blog.chillmoz.com/post/4867195669/reddotrubyconf-day-two"&gt;http://blog.chillmoz.com/post/4867195669/reddotrubyconf-day-two&lt;/a&gt;&lt;/span&gt;&lt;/li&gt;
&lt;li class="c1"&gt;&lt;span class="c2"&gt;&lt;a href="http://blog.joshsoftware.com/2011/04/26/reddotrubyconf-fun-times-ahead/"&gt;http://blog.joshsoftware.com/2011/04/26/reddotrubyconf-fun-times-ahead/&lt;/a&gt;&lt;/span&gt;&lt;/li&gt;
&lt;li class="c1"&gt;&lt;span class="c2"&gt;&lt;a href="http://jasonong.tumblr.com/post/4977431136/reddotrubyconf-2011-review"&gt;http://jasonong.tumblr.com/post/4977431136/reddotrubyconf-2011-review&lt;/a&gt;&lt;/span&gt;&lt;/li&gt;
&lt;li class="c1"&gt;&lt;span class="c2"&gt;&lt;a href="http://coderkitty.sweetperceptions.com/2011/4/27/what-makes-a-developer-successful"&gt;http://coderkitty.sweetperceptions.com/2011/4/27/what-makes-a-developer-successful&lt;/a&gt;&lt;/span&gt;&lt;/li&gt;
&lt;/ol&gt;&lt;h2 class="c4"&gt;&lt;a href="http://www.blogger.com/post-create.g?blogID=664110592797971793" name="h.h7ou8dqg8hst"&gt;&lt;/a&gt;&lt;span class="c10 c3"&gt;Photos&lt;/span&gt;&lt;/h2&gt;&lt;ol class="c9" start="1"&gt;&lt;li class="c1"&gt;&lt;span class="c2"&gt;&lt;a href="http://www.flickr.com/photos/pragdave/5645947976/in/set-72157626530646466"&gt;http://www.flickr.com/photos/pragdave/5645947976/in/set-72157626530646466&lt;/a&gt;&lt;/span&gt;&lt;/li&gt;
&lt;li class="c1"&gt;&lt;span class="c2"&gt;&lt;a href="http://snapfinch.com/all/reddot"&gt;http://snapfinch.com/all/reddot&lt;/a&gt;&lt;/span&gt;&lt;/li&gt;
&lt;li class="c1"&gt;&lt;span class="c2"&gt;&lt;a href="https://picasaweb.google.com/sunpech/2011RedDotRubyConf"&gt;https://picasaweb.google.com/sunpech/2011RedDotRubyConf&lt;/a&gt;&lt;/span&gt;&lt;/li&gt;
&lt;li class="c1"&gt;&lt;span class="c2"&gt;&lt;a href="http://www.flickr.com/photos/jldbasa/sets/72157626433682503/"&gt;http://www.flickr.com/photos/jldbasa/sets/72157626433682503/&lt;/a&gt;&lt;/span&gt;&lt;/li&gt;
&lt;li class="c1"&gt;&lt;span class="c2"&gt;&lt;a href="http://www.flickr.com/photos/51035757366@N01/"&gt;http://www.flickr.com/photos/51035757366@N01/&lt;/a&gt;&lt;/span&gt;&lt;/li&gt;
&lt;li class="c1"&gt;&lt;span class="c2"&gt;&lt;a href="http://www.flickr.com/photos/sourfamily/sets/72157626550006578/"&gt;http://www.flickr.com/photos/sourfamily/sets/72157626550006578/&lt;/a&gt;&lt;/span&gt;&lt;/li&gt;
&lt;li class="c1"&gt;&lt;span class="c2"&gt;&lt;a href="http://www.flickr.com/photos/chillmoz/sets/72157626582119694/"&gt;http://www.flickr.com/photos/chillmoz/sets/72157626582119694/&lt;/a&gt;&lt;/span&gt;&lt;/li&gt;
&lt;li class="c1"&gt;&lt;span class="c2"&gt;&lt;a href="http://www.flickr.com/photos/chillmoz/sets/72157626457320967/"&gt;http://www.flickr.com/photos/chillmoz/sets/72157626457320967/&lt;/a&gt;&lt;/span&gt;&lt;/li&gt;
&lt;li class="c1"&gt;&lt;span class="c2"&gt;&lt;a href="http://www.flickr.com/photos/prateekdayal/sets/72157626573667910/"&gt;http://www.flickr.com/photos/prateekdayal/sets/72157626573667910/&lt;/a&gt;&lt;/span&gt;&lt;/li&gt;
&lt;/ol&gt;&lt;h2 class="c4"&gt;&lt;a href="http://www.blogger.com/post-create.g?blogID=664110592797971793" name="h.1y5cs2nyzvcg"&gt;&lt;/a&gt;&lt;span class="c10 c3"&gt;Videos&lt;/span&gt;&lt;/h2&gt;&lt;ol class="c9" start="1"&gt;&lt;li class="c1"&gt;&lt;span class="c0"&gt;Yukihiro Matsumuto &lt;/span&gt;&lt;span class="c2"&gt;&lt;a href="http://vimeo.com/22849955"&gt;http://vimeo.com/22849955&lt;/a&gt;&lt;/span&gt;&lt;span class="c0"&gt; &lt;/span&gt;&lt;span class="c2"&gt;&lt;a href="http://vimeo.com/22847604"&gt;http://vimeo.com/22847604&lt;/a&gt;&lt;/span&gt;&lt;/li&gt;
&lt;/ol&gt;&lt;h2 class="c4"&gt;&lt;a href="http://www.blogger.com/post-create.g?blogID=664110592797971793" name="h.ac6sb46d3bcj"&gt;&lt;/a&gt;&lt;span class="c10 c3"&gt;Mailing list (for attendees)&lt;/span&gt;&lt;/h2&gt;&lt;div class="c5"&gt;&lt;span class="c2"&gt;&lt;a href="https://groups.google.com/group/reddot-list"&gt;https://groups.google.com/group/reddot-list&lt;/a&gt;&lt;/span&gt;&lt;/div&gt;&lt;h2 class="c4"&gt;&lt;a href="http://www.blogger.com/post-create.g?blogID=664110592797971793" name="h.d84tao6ivbwn"&gt;&lt;/a&gt;&lt;span class="c10 c3"&gt;History&lt;/span&gt;&lt;/h2&gt;&lt;div class="c5"&gt;&lt;span class="c2"&gt;&lt;a href="https://groups.google.com/d/topic/singapore-rb/o5Oj8ypWV6g/discussion"&gt;https://groups.google.com/d/topic/singapore-rb/o5Oj8ypWV6g/discussion&lt;/a&gt;&lt;/span&gt;&lt;/div&gt;&lt;div class="blogger-post-footer"&gt;&lt;a href="http://www.launchbit.com/az/115-212/"&gt;&lt;img width="468" height="60" src="http://www.launchbit.com/az-images/115-212/" /&gt;&lt;/a&gt;&lt;br /&gt;
&lt;small&gt;(Powered by &lt;a href="http://www.launchbit.com/lb/115-212/"&gt;LaunchBit&lt;/a&gt;)&lt;/small&gt;&lt;img width='1' height='1' src='https://blogger.googleusercontent.com/tracker/664110592797971793-2139936341442715511?l=www.railsmine.net' alt='' /&gt;&lt;/div&gt;
&lt;p&gt;&lt;a href="http://feedads.g.doubleclick.net/~a/hglI4p-u9OOvqwGY3IBdzPSKq2E/0/da"&gt;&lt;img src="http://feedads.g.doubleclick.net/~a/hglI4p-u9OOvqwGY3IBdzPSKq2E/0/di" border="0" ismap="true"&gt;&lt;/img&gt;&lt;/a&gt;&lt;br/&gt;
&lt;a href="http://feedads.g.doubleclick.net/~a/hglI4p-u9OOvqwGY3IBdzPSKq2E/1/da"&gt;&lt;img src="http://feedads.g.doubleclick.net/~a/hglI4p-u9OOvqwGY3IBdzPSKq2E/1/di" border="0" ismap="true"&gt;&lt;/img&gt;&lt;/a&gt;&lt;/p&gt;&lt;div class="feedflare"&gt;
&lt;a href="http://feeds.feedburner.com/~ff/railsmine?a=BC7KyI21l74:y2r18WlfoMc:yIl2AUoC8zA"&gt;&lt;img src="http://feeds.feedburner.com/~ff/railsmine?d=yIl2AUoC8zA" border="0"&gt;&lt;/img&gt;&lt;/a&gt; &lt;a href="http://feeds.feedburner.com/~ff/railsmine?a=BC7KyI21l74:y2r18WlfoMc:63t7Ie-LG7Y"&gt;&lt;img src="http://feeds.feedburner.com/~ff/railsmine?d=63t7Ie-LG7Y" border="0"&gt;&lt;/img&gt;&lt;/a&gt; &lt;a href="http://feeds.feedburner.com/~ff/railsmine?a=BC7KyI21l74:y2r18WlfoMc:dnMXMwOfBR0"&gt;&lt;img src="http://feeds.feedburner.com/~ff/railsmine?d=dnMXMwOfBR0" border="0"&gt;&lt;/img&gt;&lt;/a&gt; &lt;a href="http://feeds.feedburner.com/~ff/railsmine?a=BC7KyI21l74:y2r18WlfoMc:YwkR-u9nhCs"&gt;&lt;img src="http://feeds.feedburner.com/~ff/railsmine?d=YwkR-u9nhCs" border="0"&gt;&lt;/img&gt;&lt;/a&gt; &lt;a href="http://feeds.feedburner.com/~ff/railsmine?a=BC7KyI21l74:y2r18WlfoMc:F7zBnMyn0Lo"&gt;&lt;img src="http://feeds.feedburner.com/~ff/railsmine?i=BC7KyI21l74:y2r18WlfoMc:F7zBnMyn0Lo" border="0"&gt;&lt;/img&gt;&lt;/a&gt; &lt;a href="http://feeds.feedburner.com/~ff/railsmine?a=BC7KyI21l74:y2r18WlfoMc:V_sGLiPBpWU"&gt;&lt;img src="http://feeds.feedburner.com/~ff/railsmine?i=BC7KyI21l74:y2r18WlfoMc:V_sGLiPBpWU" border="0"&gt;&lt;/img&gt;&lt;/a&gt; &lt;a href="http://feeds.feedburner.com/~ff/railsmine?a=BC7KyI21l74:y2r18WlfoMc:qj6IDK7rITs"&gt;&lt;img src="http://feeds.feedburner.com/~ff/railsmine?d=qj6IDK7rITs" border="0"&gt;&lt;/img&gt;&lt;/a&gt; &lt;a href="http://feeds.feedburner.com/~ff/railsmine?a=BC7KyI21l74:y2r18WlfoMc:KwTdNBX3Jqk"&gt;&lt;img src="http://feeds.feedburner.com/~ff/railsmine?i=BC7KyI21l74:y2r18WlfoMc:KwTdNBX3Jqk" border="0"&gt;&lt;/img&gt;&lt;/a&gt; &lt;a href="http://feeds.feedburner.com/~ff/railsmine?a=BC7KyI21l74:y2r18WlfoMc:gIN9vFwOqvQ"&gt;&lt;img src="http://feeds.feedburner.com/~ff/railsmine?i=BC7KyI21l74:y2r18WlfoMc:gIN9vFwOqvQ" border="0"&gt;&lt;/img&gt;&lt;/a&gt; &lt;a href="http://feeds.feedburner.com/~ff/railsmine?a=BC7KyI21l74:y2r18WlfoMc:TzevzKxY174"&gt;&lt;img src="http://feeds.feedburner.com/~ff/railsmine?d=TzevzKxY174" border="0"&gt;&lt;/img&gt;&lt;/a&gt;
&lt;/div&gt;</description><link>http://www.railsmine.net/2011/04/reddotrubyconf-2011-links-resources.html</link><author>noreply@blogger.com (Kunto Aji Kristianto)</author><thr:total>0</thr:total><creativeCommons:license>http://creativecommons.org/licenses/by-nc-nd/3.0/</creativeCommons:license></item><item><guid isPermaLink="false">tag:blogger.com,1999:blog-664110592797971793.post-3728940137382092354</guid><pubDate>Tue, 21 Sep 2010 09:38:00 +0000</pubDate><atom:updated>2010-09-21T16:38:59.713+07:00</atom:updated><category domain="http://www.blogger.com/atom/ns#">snippet</category><category domain="http://www.blogger.com/atom/ns#">ruby</category><category domain="http://www.blogger.com/atom/ns#">english</category><title>Ruby Script to Count a Twitter Hashtag</title><description>&lt;script src="http://gist.github.com/589329.js?file=hashtag_counter.rb"&gt;&lt;/script&gt;&lt;div class="blogger-post-footer"&gt;&lt;a href="http://www.launchbit.com/az/115-212/"&gt;&lt;img width="468" height="60" src="http://www.launchbit.com/az-images/115-212/" /&gt;&lt;/a&gt;&lt;br /&gt;
&lt;small&gt;(Powered by &lt;a href="http://www.launchbit.com/lb/115-212/"&gt;LaunchBit&lt;/a&gt;)&lt;/small&gt;&lt;img width='1' height='1' src='https://blogger.googleusercontent.com/tracker/664110592797971793-3728940137382092354?l=www.railsmine.net' alt='' /&gt;&lt;/div&gt;
&lt;p&gt;&lt;a href="http://feedads.g.doubleclick.net/~a/RfB92KPtHMY30SQNT9397XBr0ZE/0/da"&gt;&lt;img src="http://feedads.g.doubleclick.net/~a/RfB92KPtHMY30SQNT9397XBr0ZE/0/di" border="0" ismap="true"&gt;&lt;/img&gt;&lt;/a&gt;&lt;br/&gt;
&lt;a href="http://feedads.g.doubleclick.net/~a/RfB92KPtHMY30SQNT9397XBr0ZE/1/da"&gt;&lt;img src="http://feedads.g.doubleclick.net/~a/RfB92KPtHMY30SQNT9397XBr0ZE/1/di" border="0" ismap="true"&gt;&lt;/img&gt;&lt;/a&gt;&lt;/p&gt;&lt;div class="feedflare"&gt;
&lt;a href="http://feeds.feedburner.com/~ff/railsmine?a=YYQ_v5cQPCo:poFghE4v9nI:yIl2AUoC8zA"&gt;&lt;img src="http://feeds.feedburner.com/~ff/railsmine?d=yIl2AUoC8zA" border="0"&gt;&lt;/img&gt;&lt;/a&gt; &lt;a href="http://feeds.feedburner.com/~ff/railsmine?a=YYQ_v5cQPCo:poFghE4v9nI:63t7Ie-LG7Y"&gt;&lt;img src="http://feeds.feedburner.com/~ff/railsmine?d=63t7Ie-LG7Y" border="0"&gt;&lt;/img&gt;&lt;/a&gt; &lt;a href="http://feeds.feedburner.com/~ff/railsmine?a=YYQ_v5cQPCo:poFghE4v9nI:dnMXMwOfBR0"&gt;&lt;img src="http://feeds.feedburner.com/~ff/railsmine?d=dnMXMwOfBR0" border="0"&gt;&lt;/img&gt;&lt;/a&gt; &lt;a href="http://feeds.feedburner.com/~ff/railsmine?a=YYQ_v5cQPCo:poFghE4v9nI:YwkR-u9nhCs"&gt;&lt;img src="http://feeds.feedburner.com/~ff/railsmine?d=YwkR-u9nhCs" border="0"&gt;&lt;/img&gt;&lt;/a&gt; &lt;a href="http://feeds.feedburner.com/~ff/railsmine?a=YYQ_v5cQPCo:poFghE4v9nI:F7zBnMyn0Lo"&gt;&lt;img src="http://feeds.feedburner.com/~ff/railsmine?i=YYQ_v5cQPCo:poFghE4v9nI:F7zBnMyn0Lo" border="0"&gt;&lt;/img&gt;&lt;/a&gt; &lt;a href="http://feeds.feedburner.com/~ff/railsmine?a=YYQ_v5cQPCo:poFghE4v9nI:V_sGLiPBpWU"&gt;&lt;img src="http://feeds.feedburner.com/~ff/railsmine?i=YYQ_v5cQPCo:poFghE4v9nI:V_sGLiPBpWU" border="0"&gt;&lt;/img&gt;&lt;/a&gt; &lt;a href="http://feeds.feedburner.com/~ff/railsmine?a=YYQ_v5cQPCo:poFghE4v9nI:qj6IDK7rITs"&gt;&lt;img src="http://feeds.feedburner.com/~ff/railsmine?d=qj6IDK7rITs" border="0"&gt;&lt;/img&gt;&lt;/a&gt; &lt;a href="http://feeds.feedburner.com/~ff/railsmine?a=YYQ_v5cQPCo:poFghE4v9nI:KwTdNBX3Jqk"&gt;&lt;img src="http://feeds.feedburner.com/~ff/railsmine?i=YYQ_v5cQPCo:poFghE4v9nI:KwTdNBX3Jqk" border="0"&gt;&lt;/img&gt;&lt;/a&gt; &lt;a href="http://feeds.feedburner.com/~ff/railsmine?a=YYQ_v5cQPCo:poFghE4v9nI:gIN9vFwOqvQ"&gt;&lt;img src="http://feeds.feedburner.com/~ff/railsmine?i=YYQ_v5cQPCo:poFghE4v9nI:gIN9vFwOqvQ" border="0"&gt;&lt;/img&gt;&lt;/a&gt; &lt;a href="http://feeds.feedburner.com/~ff/railsmine?a=YYQ_v5cQPCo:poFghE4v9nI:TzevzKxY174"&gt;&lt;img src="http://feeds.feedburner.com/~ff/railsmine?d=TzevzKxY174" border="0"&gt;&lt;/img&gt;&lt;/a&gt;
&lt;/div&gt;</description><link>http://www.railsmine.net/2010/09/ruby-script-to-count-twitter-hashtag.html</link><author>noreply@blogger.com (Kunto Aji Kristianto)</author><thr:total>2</thr:total><creativeCommons:license>http://creativecommons.org/licenses/by-nc-nd/3.0/</creativeCommons:license></item><item><guid isPermaLink="false">tag:blogger.com,1999:blog-664110592797971793.post-5678625276094159241</guid><pubDate>Sun, 05 Sep 2010 03:27:00 +0000</pubDate><atom:updated>2011-07-17T09:37:26.461+07:00</atom:updated><category domain="http://www.blogger.com/atom/ns#">ruby</category><category domain="http://www.blogger.com/atom/ns#">ruby on rails</category><category domain="http://www.blogger.com/atom/ns#">active record</category><category domain="http://www.blogger.com/atom/ns#">tips</category><category domain="http://www.blogger.com/atom/ns#">english</category><title>The Ruby Way to do URL Validation</title><description>As we know, to do URL validation we can use regular expression such as:&lt;br /&gt;
&lt;pre class="brush: ruby"&gt;my_url =~ /^(http|https):\/\/[a-z0-9]+([\-\.]{1}[a-z0-9]+)*\.[a-z]{2,5}(([0-9]{1,5})?\/.*)?$/ix
&lt;/pre&gt;&lt;br /&gt;
After I read blog post from &lt;a href="http://intridea.com/2009/2/18/quick-tip-url-validation-in-rails?blog=company"&gt;Michael Bleigh&lt;/a&gt;, I realized that there is a Ruby way to do URL validation. The secret is &lt;span class="Apple-style-span" style="font-family: 'Courier New', Courier, monospace;"&gt;regexp&lt;/span&gt; method of &lt;span class="Apple-style-span" style="font-family: 'Courier New', Courier, monospace;"&gt;URI&lt;/span&gt; module. It will regenerate a regular expression based on the protocol name parameter that you pass in. &lt;span class="Apple-style-span" style="font-family: 'Courier New', Courier, monospace;"&gt;URI::regexp&lt;/span&gt; will return 0 if URL is valid and return nil if URL is not valid.&lt;br /&gt;
&lt;pre class="brush: ruby"&gt;require 'open-uri'
"http://google.com" =~ URI::regexp("ftp") # =&amp;gt; nil
"http://google.com" =~ URI::regexp("http") # =&amp;gt; 0
"google.com" =~ URI::regexp("ftp") # =&amp;gt; nil
"google.com" =~ URI::regexp(%w(ftp http)) # =&amp;gt; nil
"http://google.com" =~ URI::regexp(["ftp", "http", "https"]) # =&amp;gt; 0
&lt;/pre&gt;&lt;br /&gt;
If you use Rails, URI::regexp can be plugged directly into your model validation.&lt;br /&gt;
&lt;pre class="brush: ruby"&gt;class ExampleModel &amp;lt; ActiveRecord::Base
  validates_format_of :site, :with =&amp;gt; URI::regexp(%w(http https))
end
&lt;/pre&gt;Thank You Michael Bleigh for sharing this.&lt;br /&gt;
&lt;br /&gt;
&lt;i&gt;&lt;b&gt;Update:&lt;/b&gt;&lt;br /&gt;
This approach seems flawed. When pass "http://" =~ URI::regexp("http") it will returns 0 indicating the URL to be valid. So, I recommend to use the regular expression provided at the beginning of the post.&lt;/i&gt;&lt;br /&gt;
&lt;pre class="brush: ruby"&gt;"http://" =~ URI::regexp("http") # =&amp;gt; 0
"http://" =~ /^(http|https):\/\/[a-z0-9]+([\-\.]{1}[a-z0-9]+)*\.[a-z]{2,5}(([0-9]{1,5})?\/.*)?$/ix # =&amp;gt; nil
&lt;/pre&gt;&lt;i&gt;Thanks to Losk, who points out in the comments below.&lt;/i&gt;&lt;div class="blogger-post-footer"&gt;&lt;a href="http://www.launchbit.com/az/115-212/"&gt;&lt;img width="468" height="60" src="http://www.launchbit.com/az-images/115-212/" /&gt;&lt;/a&gt;&lt;br /&gt;
&lt;small&gt;(Powered by &lt;a href="http://www.launchbit.com/lb/115-212/"&gt;LaunchBit&lt;/a&gt;)&lt;/small&gt;&lt;img width='1' height='1' src='https://blogger.googleusercontent.com/tracker/664110592797971793-5678625276094159241?l=www.railsmine.net' alt='' /&gt;&lt;/div&gt;
&lt;p&gt;&lt;a href="http://feedads.g.doubleclick.net/~a/wY8KeV02OX87rE-XexUTKcGQTzM/0/da"&gt;&lt;img src="http://feedads.g.doubleclick.net/~a/wY8KeV02OX87rE-XexUTKcGQTzM/0/di" border="0" ismap="true"&gt;&lt;/img&gt;&lt;/a&gt;&lt;br/&gt;
&lt;a href="http://feedads.g.doubleclick.net/~a/wY8KeV02OX87rE-XexUTKcGQTzM/1/da"&gt;&lt;img src="http://feedads.g.doubleclick.net/~a/wY8KeV02OX87rE-XexUTKcGQTzM/1/di" border="0" ismap="true"&gt;&lt;/img&gt;&lt;/a&gt;&lt;/p&gt;&lt;div class="feedflare"&gt;
&lt;a href="http://feeds.feedburner.com/~ff/railsmine?a=TCWM8M71gV4:n3XNFRs7Nvw:yIl2AUoC8zA"&gt;&lt;img src="http://feeds.feedburner.com/~ff/railsmine?d=yIl2AUoC8zA" border="0"&gt;&lt;/img&gt;&lt;/a&gt; &lt;a href="http://feeds.feedburner.com/~ff/railsmine?a=TCWM8M71gV4:n3XNFRs7Nvw:63t7Ie-LG7Y"&gt;&lt;img src="http://feeds.feedburner.com/~ff/railsmine?d=63t7Ie-LG7Y" border="0"&gt;&lt;/img&gt;&lt;/a&gt; &lt;a href="http://feeds.feedburner.com/~ff/railsmine?a=TCWM8M71gV4:n3XNFRs7Nvw:dnMXMwOfBR0"&gt;&lt;img src="http://feeds.feedburner.com/~ff/railsmine?d=dnMXMwOfBR0" border="0"&gt;&lt;/img&gt;&lt;/a&gt; &lt;a href="http://feeds.feedburner.com/~ff/railsmine?a=TCWM8M71gV4:n3XNFRs7Nvw:YwkR-u9nhCs"&gt;&lt;img src="http://feeds.feedburner.com/~ff/railsmine?d=YwkR-u9nhCs" border="0"&gt;&lt;/img&gt;&lt;/a&gt; &lt;a href="http://feeds.feedburner.com/~ff/railsmine?a=TCWM8M71gV4:n3XNFRs7Nvw:F7zBnMyn0Lo"&gt;&lt;img src="http://feeds.feedburner.com/~ff/railsmine?i=TCWM8M71gV4:n3XNFRs7Nvw:F7zBnMyn0Lo" border="0"&gt;&lt;/img&gt;&lt;/a&gt; &lt;a href="http://feeds.feedburner.com/~ff/railsmine?a=TCWM8M71gV4:n3XNFRs7Nvw:V_sGLiPBpWU"&gt;&lt;img src="http://feeds.feedburner.com/~ff/railsmine?i=TCWM8M71gV4:n3XNFRs7Nvw:V_sGLiPBpWU" border="0"&gt;&lt;/img&gt;&lt;/a&gt; &lt;a href="http://feeds.feedburner.com/~ff/railsmine?a=TCWM8M71gV4:n3XNFRs7Nvw:qj6IDK7rITs"&gt;&lt;img src="http://feeds.feedburner.com/~ff/railsmine?d=qj6IDK7rITs" border="0"&gt;&lt;/img&gt;&lt;/a&gt; &lt;a href="http://feeds.feedburner.com/~ff/railsmine?a=TCWM8M71gV4:n3XNFRs7Nvw:KwTdNBX3Jqk"&gt;&lt;img src="http://feeds.feedburner.com/~ff/railsmine?i=TCWM8M71gV4:n3XNFRs7Nvw:KwTdNBX3Jqk" border="0"&gt;&lt;/img&gt;&lt;/a&gt; &lt;a href="http://feeds.feedburner.com/~ff/railsmine?a=TCWM8M71gV4:n3XNFRs7Nvw:gIN9vFwOqvQ"&gt;&lt;img src="http://feeds.feedburner.com/~ff/railsmine?i=TCWM8M71gV4:n3XNFRs7Nvw:gIN9vFwOqvQ" border="0"&gt;&lt;/img&gt;&lt;/a&gt; &lt;a href="http://feeds.feedburner.com/~ff/railsmine?a=TCWM8M71gV4:n3XNFRs7Nvw:TzevzKxY174"&gt;&lt;img src="http://feeds.feedburner.com/~ff/railsmine?d=TzevzKxY174" border="0"&gt;&lt;/img&gt;&lt;/a&gt;
&lt;/div&gt;</description><link>http://www.railsmine.net/2010/09/ruby-way-to-do-url-validation.html</link><author>noreply@blogger.com (Kunto Aji Kristianto)</author><thr:total>3</thr:total><creativeCommons:license>http://creativecommons.org/licenses/by-nc-nd/3.0/</creativeCommons:license></item><item><guid isPermaLink="false">tag:blogger.com,1999:blog-664110592797971793.post-3064284417312159295</guid><pubDate>Wed, 18 Aug 2010 17:08:00 +0000</pubDate><atom:updated>2010-10-02T14:32:44.701+07:00</atom:updated><category domain="http://www.blogger.com/atom/ns#">ruby</category><category domain="http://www.blogger.com/atom/ns#">active record</category><category domain="http://www.blogger.com/atom/ns#">tutorial</category><category domain="http://www.blogger.com/atom/ns#">sinatra</category><category domain="http://www.blogger.com/atom/ns#">english</category><title>Active Record And Will Paginate for Non-Rails Application</title><description>I'm new to Sinatra and I want to use it together with Active Record and Will Paginate. After hours searching, I've finally found out to use active_record and will_paginate for non Rails application. Before I explain use Active Record and Will Paginate for non-Rails app, I assume that you use bundler and your database migration is already setup and working.&lt;br /&gt;
&lt;br /&gt;
&lt;b&gt;Step 1. Gemfile&lt;/b&gt;&lt;br /&gt;
First thing first, edit your Gemfile.&lt;br /&gt;
&lt;pre class="brush: ruby"&gt;# Gemfile
source :rubygems
gem 'sinatra', '1.0.0', :require =&amp;gt; 'sinatra/base'
gem 'activerecord', '3.0.0.rc', :require =&amp;gt; 'active_record'
gem 'haml'
gem 'will_paginate', :git =&amp;gt; 'git://github.com/mislav/will_paginate.git', 
  :tag =&amp;gt; 'v3.0.pre2', 
  :require =&amp;gt; 'will_paginate/finders/base'
&lt;/pre&gt;&lt;br /&gt;
&lt;b&gt;Step 2. Edit Your Model&lt;/b&gt;&lt;br /&gt;
You must extend your class model with Will Paginate module.&lt;br /&gt;
&lt;pre class="brush: ruby"&gt;# your_model.rb
class Article &amp;lt; ActiveRecord::Base
  extend WillPaginate::Finders::Base
end
&lt;/pre&gt;&lt;a name='more'&gt;&lt;/a&gt;&lt;b&gt;Step 3. Edit your Sinatra Application&lt;/b&gt; Because Will Paginate helper does not work with Sinatra Application, so you need to write your own helper. &lt;br /&gt;
&lt;pre class="brush: ruby"&gt;# your_sinatra_app.rb
require 'rubygems'
require 'bundler/setup'
Bundler.require :default
require 'your_model.rb'

class Application &amp;lt; Sinatra::Base
  get '/' do
    @articles = Article.order("created_at desc").
      paginate :page =&amp;gt; params[:page], :per_page =&amp;gt; 10
    haml :articles
  end

  helpers do
    # helper for pagination
    def paginate(resources)
      if !resources.next_page.nil? and !resources.previous_page.nil?
        html = "&lt;a href="http://www.blogger.com/post-edit.g?blogID=664110592797971793&amp;amp;postID=3064284417312159295#{request.path_info}?page=#{resources.previous_page}"&gt;« Prev&lt;/a&gt; "
        html += "#{params[:page]} of #{resources.total_pages} "
        html += "&lt;a href="http://www.blogger.com/post-edit.g?blogID=664110592797971793&amp;amp;postID=3064284417312159295#{request.path_info}?page=#{resources.next_page}"&gt;Next »&lt;/a&gt;"
      elsif !resources.next_page.nil? and resources.previous_page.nil?
        html = "&lt;a href="http://www.blogger.com/post-edit.g?blogID=664110592797971793&amp;amp;postID=3064284417312159295#{request.path_info}?page=#{resources.next_page}"&gt;Next »&lt;/a&gt;"
      elsif resources.next_page.nil? and !resources.previous_page.nil?
        html = "&lt;a href="http://www.blogger.com/post-edit.g?blogID=664110592797971793&amp;amp;postID=3064284417312159295#{request.path_info}?page=#{resources.previous_page}"&gt;« Prev&lt;/a&gt; "
        html += "#{params[:page]} of #{resources.total_pages}"
      end
      return html
    end
  end
end
&lt;/pre&gt;&lt;b&gt;Step 4. Edit Your View&lt;/b&gt; &lt;br /&gt;
&lt;pre class="brush: ruby"&gt;# views/articles.haml
%div
  %header
    %h2
      Article list
  .content
    %table
      %thead
        %tr
          %th
            Title
          %th
            Content
          %th
            Author
      %tbody
        - @articles.each do |article|
          %tr
            %td
              = article.title
            %td
              = article.content
            %td
              = article.author
        = paginate @articles
&lt;/pre&gt;Done. Sinatra, Will Paginate, and Active Record are ready to use.   Note: The above code is extracted from my &lt;a href="http://github.com/kuntoaji/sinatrails"&gt;Sinatrails project&lt;/a&gt;, feel free to use it.&lt;br /&gt;
&lt;br /&gt;
&lt;b&gt;Update:&lt;/b&gt;&lt;br /&gt;
&lt;i&gt;Here is an update for step 3:&lt;/i&gt;&lt;br /&gt;
&lt;a href="http://pastie.org/1194928"&gt;http://pastie.org/1194928&lt;/a&gt;&lt;div class="blogger-post-footer"&gt;&lt;a href="http://www.launchbit.com/az/115-212/"&gt;&lt;img width="468" height="60" src="http://www.launchbit.com/az-images/115-212/" /&gt;&lt;/a&gt;&lt;br /&gt;
&lt;small&gt;(Powered by &lt;a href="http://www.launchbit.com/lb/115-212/"&gt;LaunchBit&lt;/a&gt;)&lt;/small&gt;&lt;img width='1' height='1' src='https://blogger.googleusercontent.com/tracker/664110592797971793-3064284417312159295?l=www.railsmine.net' alt='' /&gt;&lt;/div&gt;
&lt;p&gt;&lt;a href="http://feedads.g.doubleclick.net/~a/6fqp5FXcgDIripb7y9-pTEgUwZQ/0/da"&gt;&lt;img src="http://feedads.g.doubleclick.net/~a/6fqp5FXcgDIripb7y9-pTEgUwZQ/0/di" border="0" ismap="true"&gt;&lt;/img&gt;&lt;/a&gt;&lt;br/&gt;
&lt;a href="http://feedads.g.doubleclick.net/~a/6fqp5FXcgDIripb7y9-pTEgUwZQ/1/da"&gt;&lt;img src="http://feedads.g.doubleclick.net/~a/6fqp5FXcgDIripb7y9-pTEgUwZQ/1/di" border="0" ismap="true"&gt;&lt;/img&gt;&lt;/a&gt;&lt;/p&gt;&lt;div class="feedflare"&gt;
&lt;a href="http://feeds.feedburner.com/~ff/railsmine?a=FY-oxPUG5Qg:a8B4cT3io8E:yIl2AUoC8zA"&gt;&lt;img src="http://feeds.feedburner.com/~ff/railsmine?d=yIl2AUoC8zA" border="0"&gt;&lt;/img&gt;&lt;/a&gt; &lt;a href="http://feeds.feedburner.com/~ff/railsmine?a=FY-oxPUG5Qg:a8B4cT3io8E:63t7Ie-LG7Y"&gt;&lt;img src="http://feeds.feedburner.com/~ff/railsmine?d=63t7Ie-LG7Y" border="0"&gt;&lt;/img&gt;&lt;/a&gt; &lt;a href="http://feeds.feedburner.com/~ff/railsmine?a=FY-oxPUG5Qg:a8B4cT3io8E:dnMXMwOfBR0"&gt;&lt;img src="http://feeds.feedburner.com/~ff/railsmine?d=dnMXMwOfBR0" border="0"&gt;&lt;/img&gt;&lt;/a&gt; &lt;a href="http://feeds.feedburner.com/~ff/railsmine?a=FY-oxPUG5Qg:a8B4cT3io8E:YwkR-u9nhCs"&gt;&lt;img src="http://feeds.feedburner.com/~ff/railsmine?d=YwkR-u9nhCs" border="0"&gt;&lt;/img&gt;&lt;/a&gt; &lt;a href="http://feeds.feedburner.com/~ff/railsmine?a=FY-oxPUG5Qg:a8B4cT3io8E:F7zBnMyn0Lo"&gt;&lt;img src="http://feeds.feedburner.com/~ff/railsmine?i=FY-oxPUG5Qg:a8B4cT3io8E:F7zBnMyn0Lo" border="0"&gt;&lt;/img&gt;&lt;/a&gt; &lt;a href="http://feeds.feedburner.com/~ff/railsmine?a=FY-oxPUG5Qg:a8B4cT3io8E:V_sGLiPBpWU"&gt;&lt;img src="http://feeds.feedburner.com/~ff/railsmine?i=FY-oxPUG5Qg:a8B4cT3io8E:V_sGLiPBpWU" border="0"&gt;&lt;/img&gt;&lt;/a&gt; &lt;a href="http://feeds.feedburner.com/~ff/railsmine?a=FY-oxPUG5Qg:a8B4cT3io8E:qj6IDK7rITs"&gt;&lt;img src="http://feeds.feedburner.com/~ff/railsmine?d=qj6IDK7rITs" border="0"&gt;&lt;/img&gt;&lt;/a&gt; &lt;a href="http://feeds.feedburner.com/~ff/railsmine?a=FY-oxPUG5Qg:a8B4cT3io8E:KwTdNBX3Jqk"&gt;&lt;img src="http://feeds.feedburner.com/~ff/railsmine?i=FY-oxPUG5Qg:a8B4cT3io8E:KwTdNBX3Jqk" border="0"&gt;&lt;/img&gt;&lt;/a&gt; &lt;a href="http://feeds.feedburner.com/~ff/railsmine?a=FY-oxPUG5Qg:a8B4cT3io8E:gIN9vFwOqvQ"&gt;&lt;img src="http://feeds.feedburner.com/~ff/railsmine?i=FY-oxPUG5Qg:a8B4cT3io8E:gIN9vFwOqvQ" border="0"&gt;&lt;/img&gt;&lt;/a&gt; &lt;a href="http://feeds.feedburner.com/~ff/railsmine?a=FY-oxPUG5Qg:a8B4cT3io8E:TzevzKxY174"&gt;&lt;img src="http://feeds.feedburner.com/~ff/railsmine?d=TzevzKxY174" border="0"&gt;&lt;/img&gt;&lt;/a&gt;
&lt;/div&gt;</description><link>http://www.railsmine.net/2010/08/active-record-and-will-paginate-for-non.html</link><author>noreply@blogger.com (Kunto Aji Kristianto)</author><thr:total>5</thr:total><creativeCommons:license>http://creativecommons.org/licenses/by-nc-nd/3.0/</creativeCommons:license></item><item><guid isPermaLink="false">tag:blogger.com,1999:blog-664110592797971793.post-8118893214933381437</guid><pubDate>Tue, 27 Jul 2010 04:18:00 +0000</pubDate><atom:updated>2010-07-27T11:18:59.128+07:00</atom:updated><category domain="http://www.blogger.com/atom/ns#">ruby on rails</category><category domain="http://www.blogger.com/atom/ns#">tips</category><title>Returning</title><description>Returning merupakan method dari kelas Object yang berfungsi untuk mengembalikan suatu &lt;i&gt;value&lt;/i&gt; setelah melakukan &lt;i&gt;yield&lt;/i&gt; suatu &lt;i&gt;value&lt;/i&gt; pada block. Dengan &lt;a href="http://api.rubyonrails.org/classes/Object.html#M000020"&gt;Object#returning&lt;/a&gt; memudahkan untuk membangun, memanipulasi, serta mengembalikan suatu &lt;i&gt;value&lt;/i&gt; apabila dipanggil dalam &lt;i&gt;method&lt;/i&gt;. Method ini jika menggunakan framework Ruby on Rails. Contoh:&lt;br /&gt;
&lt;pre class="brush: ruby"&gt; # Tanpa returning
 def foo
   my_array = []
   my_array &lt;&lt; "bar"
   my_array &lt;&lt; "baz"
   return my_array
 end

 foo # =&gt; ['bar', 'baz']

 # returning dengan sebuah variabel lokal
 def foo
   returning my_array = [] do
     my_array &lt;&lt; 'bar2'
     my_array &lt;&lt; 'baz2'
   end
 end

 foo # =&gt; ['bar2', 'baz2']

 # returning dengan sebuah argument dalam block
 def foo
   returning [] do |my_array|
     my_array &lt;&lt; 'bar3'
     my_array &lt;&lt; 'baz3'
   end
 end

 foo # =&gt; ['bar3', 'baz3']
&lt;/pre&gt;&lt;br /&gt;
[via &lt;a href="http://rubyquicktips.tumblr.com/post/856496968/returning"&gt;Ruby Quicktips&lt;/a&gt;]&lt;div class="blogger-post-footer"&gt;&lt;a href="http://www.launchbit.com/az/115-212/"&gt;&lt;img width="468" height="60" src="http://www.launchbit.com/az-images/115-212/" /&gt;&lt;/a&gt;&lt;br /&gt;
&lt;small&gt;(Powered by &lt;a href="http://www.launchbit.com/lb/115-212/"&gt;LaunchBit&lt;/a&gt;)&lt;/small&gt;&lt;img width='1' height='1' src='https://blogger.googleusercontent.com/tracker/664110592797971793-8118893214933381437?l=www.railsmine.net' alt='' /&gt;&lt;/div&gt;
&lt;p&gt;&lt;a href="http://feedads.g.doubleclick.net/~a/0_FKKFwxUwT9HwWtkKQj8nLhNUQ/0/da"&gt;&lt;img src="http://feedads.g.doubleclick.net/~a/0_FKKFwxUwT9HwWtkKQj8nLhNUQ/0/di" border="0" ismap="true"&gt;&lt;/img&gt;&lt;/a&gt;&lt;br/&gt;
&lt;a href="http://feedads.g.doubleclick.net/~a/0_FKKFwxUwT9HwWtkKQj8nLhNUQ/1/da"&gt;&lt;img src="http://feedads.g.doubleclick.net/~a/0_FKKFwxUwT9HwWtkKQj8nLhNUQ/1/di" border="0" ismap="true"&gt;&lt;/img&gt;&lt;/a&gt;&lt;/p&gt;&lt;div class="feedflare"&gt;
&lt;a href="http://feeds.feedburner.com/~ff/railsmine?a=Oex9Gd6xs0M:GvaT8QFwV64:yIl2AUoC8zA"&gt;&lt;img src="http://feeds.feedburner.com/~ff/railsmine?d=yIl2AUoC8zA" border="0"&gt;&lt;/img&gt;&lt;/a&gt; &lt;a href="http://feeds.feedburner.com/~ff/railsmine?a=Oex9Gd6xs0M:GvaT8QFwV64:63t7Ie-LG7Y"&gt;&lt;img src="http://feeds.feedburner.com/~ff/railsmine?d=63t7Ie-LG7Y" border="0"&gt;&lt;/img&gt;&lt;/a&gt; &lt;a href="http://feeds.feedburner.com/~ff/railsmine?a=Oex9Gd6xs0M:GvaT8QFwV64:dnMXMwOfBR0"&gt;&lt;img src="http://feeds.feedburner.com/~ff/railsmine?d=dnMXMwOfBR0" border="0"&gt;&lt;/img&gt;&lt;/a&gt; &lt;a href="http://feeds.feedburner.com/~ff/railsmine?a=Oex9Gd6xs0M:GvaT8QFwV64:YwkR-u9nhCs"&gt;&lt;img src="http://feeds.feedburner.com/~ff/railsmine?d=YwkR-u9nhCs" border="0"&gt;&lt;/img&gt;&lt;/a&gt; &lt;a href="http://feeds.feedburner.com/~ff/railsmine?a=Oex9Gd6xs0M:GvaT8QFwV64:F7zBnMyn0Lo"&gt;&lt;img src="http://feeds.feedburner.com/~ff/railsmine?i=Oex9Gd6xs0M:GvaT8QFwV64:F7zBnMyn0Lo" border="0"&gt;&lt;/img&gt;&lt;/a&gt; &lt;a href="http://feeds.feedburner.com/~ff/railsmine?a=Oex9Gd6xs0M:GvaT8QFwV64:V_sGLiPBpWU"&gt;&lt;img src="http://feeds.feedburner.com/~ff/railsmine?i=Oex9Gd6xs0M:GvaT8QFwV64:V_sGLiPBpWU" border="0"&gt;&lt;/img&gt;&lt;/a&gt; &lt;a href="http://feeds.feedburner.com/~ff/railsmine?a=Oex9Gd6xs0M:GvaT8QFwV64:qj6IDK7rITs"&gt;&lt;img src="http://feeds.feedburner.com/~ff/railsmine?d=qj6IDK7rITs" border="0"&gt;&lt;/img&gt;&lt;/a&gt; &lt;a href="http://feeds.feedburner.com/~ff/railsmine?a=Oex9Gd6xs0M:GvaT8QFwV64:KwTdNBX3Jqk"&gt;&lt;img src="http://feeds.feedburner.com/~ff/railsmine?i=Oex9Gd6xs0M:GvaT8QFwV64:KwTdNBX3Jqk" border="0"&gt;&lt;/img&gt;&lt;/a&gt; &lt;a href="http://feeds.feedburner.com/~ff/railsmine?a=Oex9Gd6xs0M:GvaT8QFwV64:gIN9vFwOqvQ"&gt;&lt;img src="http://feeds.feedburner.com/~ff/railsmine?i=Oex9Gd6xs0M:GvaT8QFwV64:gIN9vFwOqvQ" border="0"&gt;&lt;/img&gt;&lt;/a&gt; &lt;a href="http://feeds.feedburner.com/~ff/railsmine?a=Oex9Gd6xs0M:GvaT8QFwV64:TzevzKxY174"&gt;&lt;img src="http://feeds.feedburner.com/~ff/railsmine?d=TzevzKxY174" border="0"&gt;&lt;/img&gt;&lt;/a&gt;
&lt;/div&gt;</description><link>http://www.railsmine.net/2010/07/returning.html</link><author>noreply@blogger.com (Kunto Aji Kristianto)</author><thr:total>0</thr:total><creativeCommons:license>http://creativecommons.org/licenses/by-nc-nd/3.0/</creativeCommons:license></item><item><guid isPermaLink="false">tag:blogger.com,1999:blog-664110592797971793.post-4457022313272884147</guid><pubDate>Mon, 26 Jul 2010 16:16:00 +0000</pubDate><atom:updated>2010-07-26T23:16:58.477+07:00</atom:updated><category domain="http://www.blogger.com/atom/ns#">presentations</category><category domain="http://www.blogger.com/atom/ns#">ruby on rails</category><title>Rails Performance</title><description>&lt;div style="width:425px" id="__ss_3299364"&gt;&lt;strong style="display:block;margin:12px 0 4px"&gt;&lt;a href="http://www.slideshare.net/ihower/rails-performance" title="Rails Performance"&gt;Rails Performance&lt;/a&gt;&lt;/strong&gt;&lt;object id="__sse3299364" width="425" height="355"&gt;&lt;param name="movie" value="http://static.slidesharecdn.com/swf/ssplayer2.swf?doc=rails-performance-2010226-100228083842-phpapp01&amp;stripped_title=rails-performance" /&gt;&lt;param name="allowFullScreen" value="true"/&gt;&lt;param name="allowScriptAccess" value="always"/&gt;&lt;embed name="__sse3299364" src="http://static.slidesharecdn.com/swf/ssplayer2.swf?doc=rails-performance-2010226-100228083842-phpapp01&amp;stripped_title=rails-performance" type="application/x-shockwave-flash" allowscriptaccess="always" allowfullscreen="true" width="425" height="355"&gt;&lt;/embed&gt;&lt;/object&gt;&lt;div style="padding:5px 0 12px"&gt;View more &lt;a href="http://www.slideshare.net/"&gt;presentations&lt;/a&gt; from &lt;a href="http://www.slideshare.net/ihower"&gt;Wen-Tien Chang&lt;/a&gt;.&lt;/div&gt;&lt;/div&gt;&lt;div class="blogger-post-footer"&gt;&lt;a href="http://www.launchbit.com/az/115-212/"&gt;&lt;img width="468" height="60" src="http://www.launchbit.com/az-images/115-212/" /&gt;&lt;/a&gt;&lt;br /&gt;
&lt;small&gt;(Powered by &lt;a href="http://www.launchbit.com/lb/115-212/"&gt;LaunchBit&lt;/a&gt;)&lt;/small&gt;&lt;img width='1' height='1' src='https://blogger.googleusercontent.com/tracker/664110592797971793-4457022313272884147?l=www.railsmine.net' alt='' /&gt;&lt;/div&gt;
&lt;p&gt;&lt;a href="http://feedads.g.doubleclick.net/~a/Pj3JDh01ifyvV8uWs_uKhIAVGSQ/0/da"&gt;&lt;img src="http://feedads.g.doubleclick.net/~a/Pj3JDh01ifyvV8uWs_uKhIAVGSQ/0/di" border="0" ismap="true"&gt;&lt;/img&gt;&lt;/a&gt;&lt;br/&gt;
&lt;a href="http://feedads.g.doubleclick.net/~a/Pj3JDh01ifyvV8uWs_uKhIAVGSQ/1/da"&gt;&lt;img src="http://feedads.g.doubleclick.net/~a/Pj3JDh01ifyvV8uWs_uKhIAVGSQ/1/di" border="0" ismap="true"&gt;&lt;/img&gt;&lt;/a&gt;&lt;/p&gt;&lt;div class="feedflare"&gt;
&lt;a href="http://feeds.feedburner.com/~ff/railsmine?a=BvUEo6wBSB0:vnKa8bhigQM:yIl2AUoC8zA"&gt;&lt;img src="http://feeds.feedburner.com/~ff/railsmine?d=yIl2AUoC8zA" border="0"&gt;&lt;/img&gt;&lt;/a&gt; &lt;a href="http://feeds.feedburner.com/~ff/railsmine?a=BvUEo6wBSB0:vnKa8bhigQM:63t7Ie-LG7Y"&gt;&lt;img src="http://feeds.feedburner.com/~ff/railsmine?d=63t7Ie-LG7Y" border="0"&gt;&lt;/img&gt;&lt;/a&gt; &lt;a href="http://feeds.feedburner.com/~ff/railsmine?a=BvUEo6wBSB0:vnKa8bhigQM:dnMXMwOfBR0"&gt;&lt;img src="http://feeds.feedburner.com/~ff/railsmine?d=dnMXMwOfBR0" border="0"&gt;&lt;/img&gt;&lt;/a&gt; &lt;a href="http://feeds.feedburner.com/~ff/railsmine?a=BvUEo6wBSB0:vnKa8bhigQM:YwkR-u9nhCs"&gt;&lt;img src="http://feeds.feedburner.com/~ff/railsmine?d=YwkR-u9nhCs" border="0"&gt;&lt;/img&gt;&lt;/a&gt; &lt;a href="http://feeds.feedburner.com/~ff/railsmine?a=BvUEo6wBSB0:vnKa8bhigQM:F7zBnMyn0Lo"&gt;&lt;img src="http://feeds.feedburner.com/~ff/railsmine?i=BvUEo6wBSB0:vnKa8bhigQM:F7zBnMyn0Lo" border="0"&gt;&lt;/img&gt;&lt;/a&gt; &lt;a href="http://feeds.feedburner.com/~ff/railsmine?a=BvUEo6wBSB0:vnKa8bhigQM:V_sGLiPBpWU"&gt;&lt;img src="http://feeds.feedburner.com/~ff/railsmine?i=BvUEo6wBSB0:vnKa8bhigQM:V_sGLiPBpWU" border="0"&gt;&lt;/img&gt;&lt;/a&gt; &lt;a href="http://feeds.feedburner.com/~ff/railsmine?a=BvUEo6wBSB0:vnKa8bhigQM:qj6IDK7rITs"&gt;&lt;img src="http://feeds.feedburner.com/~ff/railsmine?d=qj6IDK7rITs" border="0"&gt;&lt;/img&gt;&lt;/a&gt; &lt;a href="http://feeds.feedburner.com/~ff/railsmine?a=BvUEo6wBSB0:vnKa8bhigQM:KwTdNBX3Jqk"&gt;&lt;img src="http://feeds.feedburner.com/~ff/railsmine?i=BvUEo6wBSB0:vnKa8bhigQM:KwTdNBX3Jqk" border="0"&gt;&lt;/img&gt;&lt;/a&gt; &lt;a href="http://feeds.feedburner.com/~ff/railsmine?a=BvUEo6wBSB0:vnKa8bhigQM:gIN9vFwOqvQ"&gt;&lt;img src="http://feeds.feedburner.com/~ff/railsmine?i=BvUEo6wBSB0:vnKa8bhigQM:gIN9vFwOqvQ" border="0"&gt;&lt;/img&gt;&lt;/a&gt; &lt;a href="http://feeds.feedburner.com/~ff/railsmine?a=BvUEo6wBSB0:vnKa8bhigQM:TzevzKxY174"&gt;&lt;img src="http://feeds.feedburner.com/~ff/railsmine?d=TzevzKxY174" border="0"&gt;&lt;/img&gt;&lt;/a&gt;
&lt;/div&gt;</description><link>http://www.railsmine.net/2010/07/rails-performance.html</link><author>noreply@blogger.com (Kunto Aji Kristianto)</author><thr:total>0</thr:total><creativeCommons:license>http://creativecommons.org/licenses/by-nc-nd/3.0/</creativeCommons:license></item><item><guid isPermaLink="false">tag:blogger.com,1999:blog-664110592797971793.post-4802802731693656110</guid><pubDate>Mon, 26 Jul 2010 15:50:00 +0000</pubDate><atom:updated>2010-07-26T23:16:58.478+07:00</atom:updated><category domain="http://www.blogger.com/atom/ns#">presentations</category><category domain="http://www.blogger.com/atom/ns#">ruby on rails</category><title>Rails Best Practices</title><description>&lt;div style="width:425px" id="__ss_2334123"&gt;&lt;strong style="display:block;margin:12px 0 4px"&gt;&lt;a href="http://www.slideshare.net/ihower/rails-best-practices" title="Rails Best Practices"&gt;Rails Best Practices&lt;/a&gt;&lt;/strong&gt;&lt;object id="__sse2334123" width="425" height="355"&gt;&lt;param name="movie" value="http://static.slidesharecdn.com/swf/ssplayer2.swf?doc=rails-best-practices-091024015011-phpapp01&amp;stripped_title=rails-best-practices" /&gt;&lt;param name="allowFullScreen" value="true"/&gt;&lt;param name="allowScriptAccess" value="always"/&gt;&lt;embed name="__sse2334123" src="http://static.slidesharecdn.com/swf/ssplayer2.swf?doc=rails-best-practices-091024015011-phpapp01&amp;stripped_title=rails-best-practices" type="application/x-shockwave-flash" allowscriptaccess="always" allowfullscreen="true" width="425" height="355"&gt;&lt;/embed&gt;&lt;/object&gt;&lt;div style="padding:5px 0 12px"&gt;View more &lt;a href="http://www.slideshare.net/"&gt;presentations&lt;/a&gt; from &lt;a href="http://www.slideshare.net/ihower"&gt;Wen-Tien Chang&lt;/a&gt;.&lt;/div&gt;&lt;/div&gt;&lt;div class="blogger-post-footer"&gt;&lt;a href="http://www.launchbit.com/az/115-212/"&gt;&lt;img width="468" height="60" src="http://www.launchbit.com/az-images/115-212/" /&gt;&lt;/a&gt;&lt;br /&gt;
&lt;small&gt;(Powered by &lt;a href="http://www.launchbit.com/lb/115-212/"&gt;LaunchBit&lt;/a&gt;)&lt;/small&gt;&lt;img width='1' height='1' src='https://blogger.googleusercontent.com/tracker/664110592797971793-4802802731693656110?l=www.railsmine.net' alt='' /&gt;&lt;/div&gt;
&lt;p&gt;&lt;a href="http://feedads.g.doubleclick.net/~a/_JBwITEHOiAZBZsEdNW_wcsClm0/0/da"&gt;&lt;img src="http://feedads.g.doubleclick.net/~a/_JBwITEHOiAZBZsEdNW_wcsClm0/0/di" border="0" ismap="true"&gt;&lt;/img&gt;&lt;/a&gt;&lt;br/&gt;
&lt;a href="http://feedads.g.doubleclick.net/~a/_JBwITEHOiAZBZsEdNW_wcsClm0/1/da"&gt;&lt;img src="http://feedads.g.doubleclick.net/~a/_JBwITEHOiAZBZsEdNW_wcsClm0/1/di" border="0" ismap="true"&gt;&lt;/img&gt;&lt;/a&gt;&lt;/p&gt;&lt;div class="feedflare"&gt;
&lt;a href="http://feeds.feedburner.com/~ff/railsmine?a=kDJK4vWt4v4:0y8njH8HHOk:yIl2AUoC8zA"&gt;&lt;img src="http://feeds.feedburner.com/~ff/railsmine?d=yIl2AUoC8zA" border="0"&gt;&lt;/img&gt;&lt;/a&gt; &lt;a href="http://feeds.feedburner.com/~ff/railsmine?a=kDJK4vWt4v4:0y8njH8HHOk:63t7Ie-LG7Y"&gt;&lt;img src="http://feeds.feedburner.com/~ff/railsmine?d=63t7Ie-LG7Y" border="0"&gt;&lt;/img&gt;&lt;/a&gt; &lt;a href="http://feeds.feedburner.com/~ff/railsmine?a=kDJK4vWt4v4:0y8njH8HHOk:dnMXMwOfBR0"&gt;&lt;img src="http://feeds.feedburner.com/~ff/railsmine?d=dnMXMwOfBR0" border="0"&gt;&lt;/img&gt;&lt;/a&gt; &lt;a href="http://feeds.feedburner.com/~ff/railsmine?a=kDJK4vWt4v4:0y8njH8HHOk:YwkR-u9nhCs"&gt;&lt;img src="http://feeds.feedburner.com/~ff/railsmine?d=YwkR-u9nhCs" border="0"&gt;&lt;/img&gt;&lt;/a&gt; &lt;a href="http://feeds.feedburner.com/~ff/railsmine?a=kDJK4vWt4v4:0y8njH8HHOk:F7zBnMyn0Lo"&gt;&lt;img src="http://feeds.feedburner.com/~ff/railsmine?i=kDJK4vWt4v4:0y8njH8HHOk:F7zBnMyn0Lo" border="0"&gt;&lt;/img&gt;&lt;/a&gt; &lt;a href="http://feeds.feedburner.com/~ff/railsmine?a=kDJK4vWt4v4:0y8njH8HHOk:V_sGLiPBpWU"&gt;&lt;img src="http://feeds.feedburner.com/~ff/railsmine?i=kDJK4vWt4v4:0y8njH8HHOk:V_sGLiPBpWU" border="0"&gt;&lt;/img&gt;&lt;/a&gt; &lt;a href="http://feeds.feedburner.com/~ff/railsmine?a=kDJK4vWt4v4:0y8njH8HHOk:qj6IDK7rITs"&gt;&lt;img src="http://feeds.feedburner.com/~ff/railsmine?d=qj6IDK7rITs" border="0"&gt;&lt;/img&gt;&lt;/a&gt; &lt;a href="http://feeds.feedburner.com/~ff/railsmine?a=kDJK4vWt4v4:0y8njH8HHOk:KwTdNBX3Jqk"&gt;&lt;img src="http://feeds.feedburner.com/~ff/railsmine?i=kDJK4vWt4v4:0y8njH8HHOk:KwTdNBX3Jqk" border="0"&gt;&lt;/img&gt;&lt;/a&gt; &lt;a href="http://feeds.feedburner.com/~ff/railsmine?a=kDJK4vWt4v4:0y8njH8HHOk:gIN9vFwOqvQ"&gt;&lt;img src="http://feeds.feedburner.com/~ff/railsmine?i=kDJK4vWt4v4:0y8njH8HHOk:gIN9vFwOqvQ" border="0"&gt;&lt;/img&gt;&lt;/a&gt; &lt;a href="http://feeds.feedburner.com/~ff/railsmine?a=kDJK4vWt4v4:0y8njH8HHOk:TzevzKxY174"&gt;&lt;img src="http://feeds.feedburner.com/~ff/railsmine?d=TzevzKxY174" border="0"&gt;&lt;/img&gt;&lt;/a&gt;
&lt;/div&gt;</description><link>http://www.railsmine.net/2010/07/rails-best-practices.html</link><author>noreply@blogger.com (Kunto Aji Kristianto)</author><thr:total>0</thr:total><creativeCommons:license>http://creativecommons.org/licenses/by-nc-nd/3.0/</creativeCommons:license></item><item><guid isPermaLink="false">tag:blogger.com,1999:blog-664110592797971793.post-4087506738720318808</guid><pubDate>Sat, 24 Jul 2010 15:01:00 +0000</pubDate><atom:updated>2010-07-24T22:01:23.970+07:00</atom:updated><category domain="http://www.blogger.com/atom/ns#">ruby</category><category domain="http://www.blogger.com/atom/ns#">tips</category><title>Inisialisasi Array Multidimensi</title><description>Array.new memungkinkan untuk menerima block sehingga memungkinkan untuk melakukan inisialisasi Array multidimensi:&lt;br /&gt;
&lt;pre class="brush: ruby"&gt;a = Array.new(4) { Array.new(4) }&lt;/pre&gt;Kode diatas akan menghasilkan Array dua dimensi dengan banyak elemen 4 x 4.&lt;br /&gt;
&lt;br /&gt;
[via &lt;a href="http://rubyquicktips.tumblr.com/post/844746058/how-to-initialize-a-multidimensional-array"&gt;Ruby Quicktips&lt;/a&gt;]&lt;div class="blogger-post-footer"&gt;&lt;a href="http://www.launchbit.com/az/115-212/"&gt;&lt;img width="468" height="60" src="http://www.launchbit.com/az-images/115-212/" /&gt;&lt;/a&gt;&lt;br /&gt;
&lt;small&gt;(Powered by &lt;a href="http://www.launchbit.com/lb/115-212/"&gt;LaunchBit&lt;/a&gt;)&lt;/small&gt;&lt;img width='1' height='1' src='https://blogger.googleusercontent.com/tracker/664110592797971793-4087506738720318808?l=www.railsmine.net' alt='' /&gt;&lt;/div&gt;
&lt;p&gt;&lt;a href="http://feedads.g.doubleclick.net/~a/SR2X4KyBCVRZptxFz9c0GyjGQcc/0/da"&gt;&lt;img src="http://feedads.g.doubleclick.net/~a/SR2X4KyBCVRZptxFz9c0GyjGQcc/0/di" border="0" ismap="true"&gt;&lt;/img&gt;&lt;/a&gt;&lt;br/&gt;
&lt;a href="http://feedads.g.doubleclick.net/~a/SR2X4KyBCVRZptxFz9c0GyjGQcc/1/da"&gt;&lt;img src="http://feedads.g.doubleclick.net/~a/SR2X4KyBCVRZptxFz9c0GyjGQcc/1/di" border="0" ismap="true"&gt;&lt;/img&gt;&lt;/a&gt;&lt;/p&gt;&lt;div class="feedflare"&gt;
&lt;a href="http://feeds.feedburner.com/~ff/railsmine?a=nrYay2BcGVI:wAKwyw9PD2A:yIl2AUoC8zA"&gt;&lt;img src="http://feeds.feedburner.com/~ff/railsmine?d=yIl2AUoC8zA" border="0"&gt;&lt;/img&gt;&lt;/a&gt; &lt;a href="http://feeds.feedburner.com/~ff/railsmine?a=nrYay2BcGVI:wAKwyw9PD2A:63t7Ie-LG7Y"&gt;&lt;img src="http://feeds.feedburner.com/~ff/railsmine?d=63t7Ie-LG7Y" border="0"&gt;&lt;/img&gt;&lt;/a&gt; &lt;a href="http://feeds.feedburner.com/~ff/railsmine?a=nrYay2BcGVI:wAKwyw9PD2A:dnMXMwOfBR0"&gt;&lt;img src="http://feeds.feedburner.com/~ff/railsmine?d=dnMXMwOfBR0" border="0"&gt;&lt;/img&gt;&lt;/a&gt; &lt;a href="http://feeds.feedburner.com/~ff/railsmine?a=nrYay2BcGVI:wAKwyw9PD2A:YwkR-u9nhCs"&gt;&lt;img src="http://feeds.feedburner.com/~ff/railsmine?d=YwkR-u9nhCs" border="0"&gt;&lt;/img&gt;&lt;/a&gt; &lt;a href="http://feeds.feedburner.com/~ff/railsmine?a=nrYay2BcGVI:wAKwyw9PD2A:F7zBnMyn0Lo"&gt;&lt;img src="http://feeds.feedburner.com/~ff/railsmine?i=nrYay2BcGVI:wAKwyw9PD2A:F7zBnMyn0Lo" border="0"&gt;&lt;/img&gt;&lt;/a&gt; &lt;a href="http://feeds.feedburner.com/~ff/railsmine?a=nrYay2BcGVI:wAKwyw9PD2A:V_sGLiPBpWU"&gt;&lt;img src="http://feeds.feedburner.com/~ff/railsmine?i=nrYay2BcGVI:wAKwyw9PD2A:V_sGLiPBpWU" border="0"&gt;&lt;/img&gt;&lt;/a&gt; &lt;a href="http://feeds.feedburner.com/~ff/railsmine?a=nrYay2BcGVI:wAKwyw9PD2A:qj6IDK7rITs"&gt;&lt;img src="http://feeds.feedburner.com/~ff/railsmine?d=qj6IDK7rITs" border="0"&gt;&lt;/img&gt;&lt;/a&gt; &lt;a href="http://feeds.feedburner.com/~ff/railsmine?a=nrYay2BcGVI:wAKwyw9PD2A:KwTdNBX3Jqk"&gt;&lt;img src="http://feeds.feedburner.com/~ff/railsmine?i=nrYay2BcGVI:wAKwyw9PD2A:KwTdNBX3Jqk" border="0"&gt;&lt;/img&gt;&lt;/a&gt; &lt;a href="http://feeds.feedburner.com/~ff/railsmine?a=nrYay2BcGVI:wAKwyw9PD2A:gIN9vFwOqvQ"&gt;&lt;img src="http://feeds.feedburner.com/~ff/railsmine?i=nrYay2BcGVI:wAKwyw9PD2A:gIN9vFwOqvQ" border="0"&gt;&lt;/img&gt;&lt;/a&gt; &lt;a href="http://feeds.feedburner.com/~ff/railsmine?a=nrYay2BcGVI:wAKwyw9PD2A:TzevzKxY174"&gt;&lt;img src="http://feeds.feedburner.com/~ff/railsmine?d=TzevzKxY174" border="0"&gt;&lt;/img&gt;&lt;/a&gt;
&lt;/div&gt;</description><link>http://www.railsmine.net/2010/07/inisialisasi-array-multidimensi.html</link><author>noreply@blogger.com (Kunto Aji Kristianto)</author><thr:total>0</thr:total><creativeCommons:license>http://creativecommons.org/licenses/by-nc-nd/3.0/</creativeCommons:license></item><item><guid isPermaLink="false">tag:blogger.com,1999:blog-664110592797971793.post-2741405977080360825</guid><pubDate>Sat, 24 Jul 2010 14:29:00 +0000</pubDate><atom:updated>2010-07-24T21:34:27.700+07:00</atom:updated><category domain="http://www.blogger.com/atom/ns#">ruby on rails</category><category domain="http://www.blogger.com/atom/ns#">active record</category><category domain="http://www.blogger.com/atom/ns#">rails 3</category><title>Arel Pada Rails 3</title><description>&lt;i&gt;Catatan: Artikel ini bersumber pada &lt;a href="http://stackoverflow.com/questions/2770415/what-exactly-is-arel-in-rails-3-0"&gt;Stackoverflow&lt;/a&gt; dimana terdapat pertanyaan mengenai Arel. Artikel ini diringkas dan ditranslasikan sedemikian rupa ke Bahasa Indonesia agar mudah dimengerti.&lt;br /&gt;
&lt;/i&gt;&lt;br /&gt;
&lt;b&gt;Apa itu Arel?&lt;/b&gt;&lt;br /&gt;
Arel adalah sebuah objek dari model untuk aljabar operator query relasional.&lt;br /&gt;
&lt;br /&gt;
&lt;b&gt;Apakah Arel merupakan pengganti dari ActiveRecord?&lt;/b&gt;&lt;br /&gt;
Arel tidak menggantikan ActiveRecord. Arel merupakan pengganti dari pembuatan query SQL secara manual dan merupakan layer query yang berada dibawah ActiveRecord, tetapi dapat digunakan oleh ORM selain ActiveRecord seperti DataMapper. Arel diinspirasi oleh SQLAlchemy yang ditulis dalam bahasa Python serta LINQ. Karen Arel berangkat dari ide bahwa "setiap query merupakan named_scope", Arel sering disebut juga sebagai pengganti dari named_scope.&lt;br /&gt;
&lt;a name='more'&gt;&lt;/a&gt;&lt;br /&gt;
&lt;b&gt;Apakah Arel menggunakan objek sebagai pengganti query?&lt;/b&gt;&lt;br /&gt;
Tidak, Arel menggunakan objek sebagai query.&lt;br /&gt;
&lt;br /&gt;
&lt;b&gt;Kenapa dengan Arel menjadi lebih baik?&lt;/b&gt;&lt;br /&gt;
&lt;div&gt;Ruby adalah bahasa object-oriented dan bukan sebuah bahasa string-oriented. Oleh karena alasan itulah menjadi hal yang wajar jika setiap query direpresentasikan sebagai objek, bukan string. Arel mengimplementasi aljabar dalam setiap operator query-nya. Dengan kata lain, Arel dapat mengetahui tentang aturan matematika untuk membangun dan menyusun query. Misal, jika menggabungkan dua buah string dimana masing-masing string terdiri dari query SQL yang valid, hasil dari penggabungan tersebut terdapat kemungkinan menjadi query SQL yang tidak valid. Atau lebih buruk, akan menjadi SQL query yang valid, tetapi tidak menghasilkan sesuatu sesuai harapan. Dengan Arel, kedua hal tersebut tidak akan pernah terjadi.&lt;/div&gt;&lt;div&gt;&lt;br /&gt;
&lt;div&gt;&lt;b&gt;Apakah akan lebih mudah untuk membangun query?&lt;/b&gt;&lt;/div&gt;&lt;div&gt;Ya, sebagaimana yang telah disebutkan diatas, akan lebih mudah membangun query yang bersifat kompleks dari bagian-bagian yang sederhana.&lt;/div&gt;&lt;div&gt;&lt;br /&gt;
&lt;/div&gt;&lt;div&gt;&lt;b&gt;Apakah dengan Arel akan membuat query SQL yang lebih efisien?&lt;/b&gt;&lt;/div&gt;&lt;div&gt;Ya, karena Arel memiliki model objek yang tepat untuk setiap query, dengan begitu Arel dapat melakukan optimisasi untuk setiap query tersebut jauh sebelum melakukan generate aktual query SQl yang digunakan untuk manipulasi tabel SQL.&lt;/div&gt;&lt;div&gt;&lt;br /&gt;
&lt;/div&gt;&lt;div&gt;&lt;b&gt;Apakah kompatibel dengan Database yang umum digunakan?&lt;/b&gt;&lt;/div&gt;&lt;div&gt;Ya, selain SQL Arel dapat melakukan generate query untuk segala hal. Contoh, LINQ atau Ambition, keduanya dapat melakukan generate query SQL LDAP, ActiveResource, CouchDB, Amazon, Google dengan sintaks yang sama.&lt;/div&gt;&lt;/div&gt;&lt;div&gt;&lt;br /&gt;
&lt;/div&gt;&lt;div&gt;&lt;b&gt;Lebih Lanjut:&lt;/b&gt; &lt;a href="http://magicscalingsprinkles.wordpress.com/2010/01/28/why-i-wrote-arel/"&gt;Why Arel?&lt;/a&gt; - Nick Kallen&lt;/div&gt;&lt;div class="blogger-post-footer"&gt;&lt;a href="http://www.launchbit.com/az/115-212/"&gt;&lt;img width="468" height="60" src="http://www.launchbit.com/az-images/115-212/" /&gt;&lt;/a&gt;&lt;br /&gt;
&lt;small&gt;(Powered by &lt;a href="http://www.launchbit.com/lb/115-212/"&gt;LaunchBit&lt;/a&gt;)&lt;/small&gt;&lt;img width='1' height='1' src='https://blogger.googleusercontent.com/tracker/664110592797971793-2741405977080360825?l=www.railsmine.net' alt='' /&gt;&lt;/div&gt;
&lt;p&gt;&lt;a href="http://feedads.g.doubleclick.net/~a/id-D1MpD8thYGwFZFzRS-s7bhNE/0/da"&gt;&lt;img src="http://feedads.g.doubleclick.net/~a/id-D1MpD8thYGwFZFzRS-s7bhNE/0/di" border="0" ismap="true"&gt;&lt;/img&gt;&lt;/a&gt;&lt;br/&gt;
&lt;a href="http://feedads.g.doubleclick.net/~a/id-D1MpD8thYGwFZFzRS-s7bhNE/1/da"&gt;&lt;img src="http://feedads.g.doubleclick.net/~a/id-D1MpD8thYGwFZFzRS-s7bhNE/1/di" border="0" ismap="true"&gt;&lt;/img&gt;&lt;/a&gt;&lt;/p&gt;&lt;div class="feedflare"&gt;
&lt;a href="http://feeds.feedburner.com/~ff/railsmine?a=kEoRjw867io:CY7Ky10-oZQ:yIl2AUoC8zA"&gt;&lt;img src="http://feeds.feedburner.com/~ff/railsmine?d=yIl2AUoC8zA" border="0"&gt;&lt;/img&gt;&lt;/a&gt; &lt;a href="http://feeds.feedburner.com/~ff/railsmine?a=kEoRjw867io:CY7Ky10-oZQ:63t7Ie-LG7Y"&gt;&lt;img src="http://feeds.feedburner.com/~ff/railsmine?d=63t7Ie-LG7Y" border="0"&gt;&lt;/img&gt;&lt;/a&gt; &lt;a href="http://feeds.feedburner.com/~ff/railsmine?a=kEoRjw867io:CY7Ky10-oZQ:dnMXMwOfBR0"&gt;&lt;img src="http://feeds.feedburner.com/~ff/railsmine?d=dnMXMwOfBR0" border="0"&gt;&lt;/img&gt;&lt;/a&gt; &lt;a href="http://feeds.feedburner.com/~ff/railsmine?a=kEoRjw867io:CY7Ky10-oZQ:YwkR-u9nhCs"&gt;&lt;img src="http://feeds.feedburner.com/~ff/railsmine?d=YwkR-u9nhCs" border="0"&gt;&lt;/img&gt;&lt;/a&gt; &lt;a href="http://feeds.feedburner.com/~ff/railsmine?a=kEoRjw867io:CY7Ky10-oZQ:F7zBnMyn0Lo"&gt;&lt;img src="http://feeds.feedburner.com/~ff/railsmine?i=kEoRjw867io:CY7Ky10-oZQ:F7zBnMyn0Lo" border="0"&gt;&lt;/img&gt;&lt;/a&gt; &lt;a href="http://feeds.feedburner.com/~ff/railsmine?a=kEoRjw867io:CY7Ky10-oZQ:V_sGLiPBpWU"&gt;&lt;img src="http://feeds.feedburner.com/~ff/railsmine?i=kEoRjw867io:CY7Ky10-oZQ:V_sGLiPBpWU" border="0"&gt;&lt;/img&gt;&lt;/a&gt; &lt;a href="http://feeds.feedburner.com/~ff/railsmine?a=kEoRjw867io:CY7Ky10-oZQ:qj6IDK7rITs"&gt;&lt;img src="http://feeds.feedburner.com/~ff/railsmine?d=qj6IDK7rITs" border="0"&gt;&lt;/img&gt;&lt;/a&gt; &lt;a href="http://feeds.feedburner.com/~ff/railsmine?a=kEoRjw867io:CY7Ky10-oZQ:KwTdNBX3Jqk"&gt;&lt;img src="http://feeds.feedburner.com/~ff/railsmine?i=kEoRjw867io:CY7Ky10-oZQ:KwTdNBX3Jqk" border="0"&gt;&lt;/img&gt;&lt;/a&gt; &lt;a href="http://feeds.feedburner.com/~ff/railsmine?a=kEoRjw867io:CY7Ky10-oZQ:gIN9vFwOqvQ"&gt;&lt;img src="http://feeds.feedburner.com/~ff/railsmine?i=kEoRjw867io:CY7Ky10-oZQ:gIN9vFwOqvQ" border="0"&gt;&lt;/img&gt;&lt;/a&gt; &lt;a href="http://feeds.feedburner.com/~ff/railsmine?a=kEoRjw867io:CY7Ky10-oZQ:TzevzKxY174"&gt;&lt;img src="http://feeds.feedburner.com/~ff/railsmine?d=TzevzKxY174" border="0"&gt;&lt;/img&gt;&lt;/a&gt;
&lt;/div&gt;</description><link>http://www.railsmine.net/2010/07/arel-pada-rails-3.html</link><author>noreply@blogger.com (Kunto Aji Kristianto)</author><thr:total>0</thr:total><creativeCommons:license>http://creativecommons.org/licenses/by-nc-nd/3.0/</creativeCommons:license></item><item><guid isPermaLink="false">tag:blogger.com,1999:blog-664110592797971793.post-6200477529930709252</guid><pubDate>Sun, 20 Jun 2010 01:44:00 +0000</pubDate><atom:updated>2010-06-20T08:44:40.644+07:00</atom:updated><category domain="http://www.blogger.com/atom/ns#">ruby on rails</category><category domain="http://www.blogger.com/atom/ns#">tutorial</category><category domain="http://www.blogger.com/atom/ns#">rails 3</category><title>Kustom Template Erb Rails 3</title><description>Setelah sebelumnya mengenai kustom scaffold controller, sekarang akan dijelaskan bagaimana melakukan kustomisasi template Erb pada Ruby on Rails 3 yang dipanggil saat menjalankan generator. Misal:&lt;br /&gt;
bundle exec rails g scaffold Item name:string price:integer&lt;br /&gt;
&lt;pre class="brush: plain"&gt;--- CUT ---
invoke    erb
create      app/views/items
create      app/views/items/index.html.erb
create      app/views/items/edit.html.erb
create      app/views/items/show.html.erb
create      app/views/items/new.html.erb
create      app/views/items/_form.html.erb
--- CUT ---
&lt;/pre&gt;&lt;a name='more'&gt;&lt;/a&gt;&lt;br /&gt;
saat menjalankan scaffold generator, maka engine erb akan dipanggil dan menghasilkan lima buah berkas template di dalam direktori items yang di dalam masing-masing berkas tersebut sudah terdapat kode-kode yang diperlukan. Untuk melakukan kustomisasi / pengubahan pada masing-masing berkas template erb tersebut, tempatkan berkas erb di dalam direktori lib/templates/erb. &lt;br /&gt;
&lt;pre class="brush: plain"&gt;lib/templates/erb/index.html.erb
lib/templates/erb/edit.html.erb
lib/templates/erb/show.html.erb
lib/templates/erb/new.html.erb
lib/templates/erb/_form.html.erb
&lt;/pre&gt;Sehingga nanti saat menjalankan generator scaffold, generator akan melihat terlebih dahulu pada direktori lib/templates/erb sebelum menggunakan template default dimana template default tersebut terletak di &lt;a href="http://github.com/rails/rails/tree/master/railties/lib/rails/generators/erb/scaffold/templates/"&gt;erb/scaffold/templates/&lt;/a&gt;. Untuk memudahkan kustomisasi, salin berkas erb dari template default tersebut dan lakukan perubahan sesuai kebutuhan. Setelah selesai melakukan kustomisasi, lakukan scaffolding, maka akan terlihat perubahannya.&lt;div class="blogger-post-footer"&gt;&lt;a href="http://www.launchbit.com/az/115-212/"&gt;&lt;img width="468" height="60" src="http://www.launchbit.com/az-images/115-212/" /&gt;&lt;/a&gt;&lt;br /&gt;
&lt;small&gt;(Powered by &lt;a href="http://www.launchbit.com/lb/115-212/"&gt;LaunchBit&lt;/a&gt;)&lt;/small&gt;&lt;img width='1' height='1' src='https://blogger.googleusercontent.com/tracker/664110592797971793-6200477529930709252?l=www.railsmine.net' alt='' /&gt;&lt;/div&gt;
&lt;p&gt;&lt;a href="http://feedads.g.doubleclick.net/~a/s_QwJOXWOZRUmJJni7MFaVOWagY/0/da"&gt;&lt;img src="http://feedads.g.doubleclick.net/~a/s_QwJOXWOZRUmJJni7MFaVOWagY/0/di" border="0" ismap="true"&gt;&lt;/img&gt;&lt;/a&gt;&lt;br/&gt;
&lt;a href="http://feedads.g.doubleclick.net/~a/s_QwJOXWOZRUmJJni7MFaVOWagY/1/da"&gt;&lt;img src="http://feedads.g.doubleclick.net/~a/s_QwJOXWOZRUmJJni7MFaVOWagY/1/di" border="0" ismap="true"&gt;&lt;/img&gt;&lt;/a&gt;&lt;/p&gt;&lt;div class="feedflare"&gt;
&lt;a href="http://feeds.feedburner.com/~ff/railsmine?a=VzKJFA2aBzA:CWO97IrPDtA:yIl2AUoC8zA"&gt;&lt;img src="http://feeds.feedburner.com/~ff/railsmine?d=yIl2AUoC8zA" border="0"&gt;&lt;/img&gt;&lt;/a&gt; &lt;a href="http://feeds.feedburner.com/~ff/railsmine?a=VzKJFA2aBzA:CWO97IrPDtA:63t7Ie-LG7Y"&gt;&lt;img src="http://feeds.feedburner.com/~ff/railsmine?d=63t7Ie-LG7Y" border="0"&gt;&lt;/img&gt;&lt;/a&gt; &lt;a href="http://feeds.feedburner.com/~ff/railsmine?a=VzKJFA2aBzA:CWO97IrPDtA:dnMXMwOfBR0"&gt;&lt;img src="http://feeds.feedburner.com/~ff/railsmine?d=dnMXMwOfBR0" border="0"&gt;&lt;/img&gt;&lt;/a&gt; &lt;a href="http://feeds.feedburner.com/~ff/railsmine?a=VzKJFA2aBzA:CWO97IrPDtA:YwkR-u9nhCs"&gt;&lt;img src="http://feeds.feedburner.com/~ff/railsmine?d=YwkR-u9nhCs" border="0"&gt;&lt;/img&gt;&lt;/a&gt; &lt;a href="http://feeds.feedburner.com/~ff/railsmine?a=VzKJFA2aBzA:CWO97IrPDtA:F7zBnMyn0Lo"&gt;&lt;img src="http://feeds.feedburner.com/~ff/railsmine?i=VzKJFA2aBzA:CWO97IrPDtA:F7zBnMyn0Lo" border="0"&gt;&lt;/img&gt;&lt;/a&gt; &lt;a href="http://feeds.feedburner.com/~ff/railsmine?a=VzKJFA2aBzA:CWO97IrPDtA:V_sGLiPBpWU"&gt;&lt;img src="http://feeds.feedburner.com/~ff/railsmine?i=VzKJFA2aBzA:CWO97IrPDtA:V_sGLiPBpWU" border="0"&gt;&lt;/img&gt;&lt;/a&gt; &lt;a href="http://feeds.feedburner.com/~ff/railsmine?a=VzKJFA2aBzA:CWO97IrPDtA:qj6IDK7rITs"&gt;&lt;img src="http://feeds.feedburner.com/~ff/railsmine?d=qj6IDK7rITs" border="0"&gt;&lt;/img&gt;&lt;/a&gt; &lt;a href="http://feeds.feedburner.com/~ff/railsmine?a=VzKJFA2aBzA:CWO97IrPDtA:KwTdNBX3Jqk"&gt;&lt;img src="http://feeds.feedburner.com/~ff/railsmine?i=VzKJFA2aBzA:CWO97IrPDtA:KwTdNBX3Jqk" border="0"&gt;&lt;/img&gt;&lt;/a&gt; &lt;a href="http://feeds.feedburner.com/~ff/railsmine?a=VzKJFA2aBzA:CWO97IrPDtA:gIN9vFwOqvQ"&gt;&lt;img src="http://feeds.feedburner.com/~ff/railsmine?i=VzKJFA2aBzA:CWO97IrPDtA:gIN9vFwOqvQ" border="0"&gt;&lt;/img&gt;&lt;/a&gt; &lt;a href="http://feeds.feedburner.com/~ff/railsmine?a=VzKJFA2aBzA:CWO97IrPDtA:TzevzKxY174"&gt;&lt;img src="http://feeds.feedburner.com/~ff/railsmine?d=TzevzKxY174" border="0"&gt;&lt;/img&gt;&lt;/a&gt;
&lt;/div&gt;</description><link>http://www.railsmine.net/2010/06/kustom-template-erb-rails-3.html</link><author>noreply@blogger.com (Kunto Aji Kristianto)</author><thr:total>0</thr:total><creativeCommons:license>http://creativecommons.org/licenses/by-nc-nd/3.0/</creativeCommons:license></item><item><guid isPermaLink="false">tag:blogger.com,1999:blog-664110592797971793.post-4726256779207109488</guid><pubDate>Sun, 13 Jun 2010 10:05:00 +0000</pubDate><atom:updated>2010-06-13T17:22:01.057+07:00</atom:updated><category domain="http://www.blogger.com/atom/ns#">ruby on rails</category><category domain="http://www.blogger.com/atom/ns#">tutorial</category><category domain="http://www.blogger.com/atom/ns#">rails 3</category><title>Kustom Scaffold Controller pada Rails 3</title><description>Pada Rails 3 memungkinkan untuk dilakukan kustomisasi controller yang dihasilkkan saat melakukan scaffolding. Secara default, saat melakukan scaffolding, controller yang dihasilkan adalah sebagai berikut:&lt;br /&gt;
&lt;pre class="brush: plain"&gt;bundle exec rails g scaffold Item name:string price:integer&lt;/pre&gt;&lt;pre class="brush: ruby"&gt;class ItemsController &lt; ApplicationController
  # GET /items
  # GET /items.xml
  def index
    @items = Item.all

    respond_to do |format|
      format.html # index.html.erb
      format.xml  { render :xml =&gt; @items }
    end
  end
# ----- CUT ------
  # DELETE /items/1
  # DELETE /items/1.xml
  def destroy
    @item = Item.find(params[:id])
    @item.destroy

    respond_to do |format|
      format.html { redirect_to(items_url) }
      format.xml  { head :ok }
    end
  end
end
&lt;/pre&gt;&lt;a name='more'&gt;&lt;/a&gt;&lt;br /&gt;
Untuk mengubahnya, menurut &lt;a href="http://zigzag.github.com/2010/01/18/customizing-your-scaffold-template-become-easier-in-rails3.html"&gt;Jose Valim saat menjawab pertanyaan tentang scaffold controller dari ZigZag&lt;/a&gt;, cukup salin &lt;b&gt;rails/railties/lib/generators/rails/scaffold_controller/templates&lt;/b&gt; (&lt;a href="http://github.com/rails/rails/blob/master/railties/lib/generators/rails/scaffold_controller/templates/controller.rb"&gt;github link&lt;/a&gt;) ke &lt;b&gt;RAILS_ROOT/lib/templates/rails/scaffold_controller/controller.rb&lt;/b&gt;&lt;br /&gt;
dan lakukan perubahaan sesuai kebutuhan. Contoh:&lt;br /&gt;
&lt;pre class="brush: ruby"&gt;# RAILS_ROOT/lib/templates/rails/scaffold_controller/controller.rb
class &amp;lt;%= controller_class_name %&amp;gt;Controller &amp;lt; ApplicationController
  before_filter :find_&amp;lt;%= file_name %&amp;gt;, :only =&amp;gt; [:show, :edit, :update, :destroy]

&amp;lt;% unless options[:singleton] -%&amp;gt;
  def index
    @&amp;lt;%= table_name %&amp;gt; = &amp;lt;%= orm_class.all(class_name) %&amp;gt;
    end
  end
&amp;lt;% end -%&amp;gt;

  def show
  end

  def new
    @&amp;lt;%= file_name %&amp;gt; = &amp;lt;%= orm_class.build(class_name) %&amp;gt;
  end

  def edit
  end

  def create
    @&amp;lt;%= file_name %&amp;gt; = &amp;lt;%= orm_class.build(class_name, &amp;quot;params[:#{file_name}]&amp;quot;) %&amp;gt;

    if @&amp;lt;%= orm_instance.save %&amp;gt;
      redirect_to(@&amp;lt;%= file_name %&amp;gt;, :notice =&amp;gt; &amp;quot;&amp;lt;%= human_name %&amp;gt; was successfully created.&amp;quot;)
    else
      render :action =&amp;gt; &amp;quot;new&amp;quot;
    end
  end

  def update
    if @&amp;lt;%= orm_instance.update_attributes(&amp;quot;params[:#{file_name}]&amp;quot;) %&amp;gt;
      redirect_to(@&amp;lt;%= file_name %&amp;gt;, :notice =&amp;gt; &amp;quot;&amp;lt;%= human_name %&amp;gt; was successfully updated.&amp;quot;)
    else
      render :action =&amp;gt; &amp;quot;edit&amp;quot;
    end
  end

  def destroy
    @&amp;lt;%= orm_instance.destroy %&amp;gt;

    redirect_to(&amp;lt;%= table_name %&amp;gt;_url)
  end

  private

  def find_&amp;lt;%= file_name %&amp;gt;
    @&amp;lt;%= file_name %&amp;gt; = &amp;lt;%= orm_class.find(class_name, &amp;quot;params[:id]&amp;quot;) %&amp;gt;
  end
end
&lt;/pre&gt;Jalankan scaffold, maka controller yang dihasilkan akan berubah. &lt;pre class="brush: plain"&gt;bundle exec rails g scaffold Post title:string content:string&lt;/pre&gt;&lt;div class="blogger-post-footer"&gt;&lt;a href="http://www.launchbit.com/az/115-212/"&gt;&lt;img width="468" height="60" src="http://www.launchbit.com/az-images/115-212/" /&gt;&lt;/a&gt;&lt;br /&gt;
&lt;small&gt;(Powered by &lt;a href="http://www.launchbit.com/lb/115-212/"&gt;LaunchBit&lt;/a&gt;)&lt;/small&gt;&lt;img width='1' height='1' src='https://blogger.googleusercontent.com/tracker/664110592797971793-4726256779207109488?l=www.railsmine.net' alt='' /&gt;&lt;/div&gt;
&lt;p&gt;&lt;a href="http://feedads.g.doubleclick.net/~a/ZB_6V8a2odnEOvG1Hs20CwPPy4E/0/da"&gt;&lt;img src="http://feedads.g.doubleclick.net/~a/ZB_6V8a2odnEOvG1Hs20CwPPy4E/0/di" border="0" ismap="true"&gt;&lt;/img&gt;&lt;/a&gt;&lt;br/&gt;
&lt;a href="http://feedads.g.doubleclick.net/~a/ZB_6V8a2odnEOvG1Hs20CwPPy4E/1/da"&gt;&lt;img src="http://feedads.g.doubleclick.net/~a/ZB_6V8a2odnEOvG1Hs20CwPPy4E/1/di" border="0" ismap="true"&gt;&lt;/img&gt;&lt;/a&gt;&lt;/p&gt;&lt;div class="feedflare"&gt;
&lt;a href="http://feeds.feedburner.com/~ff/railsmine?a=oN7w5Oz07DY:yrQd3iVXudk:yIl2AUoC8zA"&gt;&lt;img src="http://feeds.feedburner.com/~ff/railsmine?d=yIl2AUoC8zA" border="0"&gt;&lt;/img&gt;&lt;/a&gt; &lt;a href="http://feeds.feedburner.com/~ff/railsmine?a=oN7w5Oz07DY:yrQd3iVXudk:63t7Ie-LG7Y"&gt;&lt;img src="http://feeds.feedburner.com/~ff/railsmine?d=63t7Ie-LG7Y" border="0"&gt;&lt;/img&gt;&lt;/a&gt; &lt;a href="http://feeds.feedburner.com/~ff/railsmine?a=oN7w5Oz07DY:yrQd3iVXudk:dnMXMwOfBR0"&gt;&lt;img src="http://feeds.feedburner.com/~ff/railsmine?d=dnMXMwOfBR0" border="0"&gt;&lt;/img&gt;&lt;/a&gt; &lt;a href="http://feeds.feedburner.com/~ff/railsmine?a=oN7w5Oz07DY:yrQd3iVXudk:YwkR-u9nhCs"&gt;&lt;img src="http://feeds.feedburner.com/~ff/railsmine?d=YwkR-u9nhCs" border="0"&gt;&lt;/img&gt;&lt;/a&gt; &lt;a href="http://feeds.feedburner.com/~ff/railsmine?a=oN7w5Oz07DY:yrQd3iVXudk:F7zBnMyn0Lo"&gt;&lt;img src="http://feeds.feedburner.com/~ff/railsmine?i=oN7w5Oz07DY:yrQd3iVXudk:F7zBnMyn0Lo" border="0"&gt;&lt;/img&gt;&lt;/a&gt; &lt;a href="http://feeds.feedburner.com/~ff/railsmine?a=oN7w5Oz07DY:yrQd3iVXudk:V_sGLiPBpWU"&gt;&lt;img src="http://feeds.feedburner.com/~ff/railsmine?i=oN7w5Oz07DY:yrQd3iVXudk:V_sGLiPBpWU" border="0"&gt;&lt;/img&gt;&lt;/a&gt; &lt;a href="http://feeds.feedburner.com/~ff/railsmine?a=oN7w5Oz07DY:yrQd3iVXudk:qj6IDK7rITs"&gt;&lt;img src="http://feeds.feedburner.com/~ff/railsmine?d=qj6IDK7rITs" border="0"&gt;&lt;/img&gt;&lt;/a&gt; &lt;a href="http://feeds.feedburner.com/~ff/railsmine?a=oN7w5Oz07DY:yrQd3iVXudk:KwTdNBX3Jqk"&gt;&lt;img src="http://feeds.feedburner.com/~ff/railsmine?i=oN7w5Oz07DY:yrQd3iVXudk:KwTdNBX3Jqk" border="0"&gt;&lt;/img&gt;&lt;/a&gt; &lt;a href="http://feeds.feedburner.com/~ff/railsmine?a=oN7w5Oz07DY:yrQd3iVXudk:gIN9vFwOqvQ"&gt;&lt;img src="http://feeds.feedburner.com/~ff/railsmine?i=oN7w5Oz07DY:yrQd3iVXudk:gIN9vFwOqvQ" border="0"&gt;&lt;/img&gt;&lt;/a&gt; &lt;a href="http://feeds.feedburner.com/~ff/railsmine?a=oN7w5Oz07DY:yrQd3iVXudk:TzevzKxY174"&gt;&lt;img src="http://feeds.feedburner.com/~ff/railsmine?d=TzevzKxY174" border="0"&gt;&lt;/img&gt;&lt;/a&gt;
&lt;/div&gt;</description><link>http://www.railsmine.net/2010/06/kustom-scaffold-controller-pada-rails-3.html</link><author>noreply@blogger.com (Kunto Aji Kristianto)</author><thr:total>0</thr:total><creativeCommons:license>http://creativecommons.org/licenses/by-nc-nd/3.0/</creativeCommons:license></item><item><guid isPermaLink="false">tag:blogger.com,1999:blog-664110592797971793.post-4357312639959244771</guid><pubDate>Wed, 09 Jun 2010 15:00:00 +0000</pubDate><atom:updated>2010-06-09T22:00:02.966+07:00</atom:updated><category domain="http://www.blogger.com/atom/ns#">rubyist links</category><title>Rubyist Links 2010-06-09</title><description>&lt;ul&gt;&lt;li&gt;&lt;a href="http://weblog.rubyonrails.org/2010/6/8/rails-3-0-beta-4-now-rc-in-days"&gt;Ruby on Rails 3 Beta 4&lt;/a&gt;&lt;/li&gt;
&lt;li&gt;&lt;a href="http://bowlineapp.com/"&gt;Bowline is a framework for making cross platform desktop applications in Ruby, HTML and JavaScript.&lt;/a&gt;&lt;/li&gt;
&lt;li&gt;&lt;a href="http://groups.google.com/group/datamapper/browse_thread/thread/6e3d51520cb63d9c?pli=1"&gt;DataMapper 1.0 Released&lt;/a&gt;&lt;/li&gt;
&lt;/ul&gt;&lt;div class="blogger-post-footer"&gt;&lt;a href="http://www.launchbit.com/az/115-212/"&gt;&lt;img width="468" height="60" src="http://www.launchbit.com/az-images/115-212/" /&gt;&lt;/a&gt;&lt;br /&gt;
&lt;small&gt;(Powered by &lt;a href="http://www.launchbit.com/lb/115-212/"&gt;LaunchBit&lt;/a&gt;)&lt;/small&gt;&lt;img width='1' height='1' src='https://blogger.googleusercontent.com/tracker/664110592797971793-4357312639959244771?l=www.railsmine.net' alt='' /&gt;&lt;/div&gt;
&lt;p&gt;&lt;a href="http://feedads.g.doubleclick.net/~a/ittTlRorRfXxl6C6URwu0jsykPo/0/da"&gt;&lt;img src="http://feedads.g.doubleclick.net/~a/ittTlRorRfXxl6C6URwu0jsykPo/0/di" border="0" ismap="true"&gt;&lt;/img&gt;&lt;/a&gt;&lt;br/&gt;
&lt;a href="http://feedads.g.doubleclick.net/~a/ittTlRorRfXxl6C6URwu0jsykPo/1/da"&gt;&lt;img src="http://feedads.g.doubleclick.net/~a/ittTlRorRfXxl6C6URwu0jsykPo/1/di" border="0" ismap="true"&gt;&lt;/img&gt;&lt;/a&gt;&lt;/p&gt;&lt;div class="feedflare"&gt;
&lt;a href="http://feeds.feedburner.com/~ff/railsmine?a=xpNvP4BbImg:qFAak2iGWVw:yIl2AUoC8zA"&gt;&lt;img src="http://feeds.feedburner.com/~ff/railsmine?d=yIl2AUoC8zA" border="0"&gt;&lt;/img&gt;&lt;/a&gt; &lt;a href="http://feeds.feedburner.com/~ff/railsmine?a=xpNvP4BbImg:qFAak2iGWVw:63t7Ie-LG7Y"&gt;&lt;img src="http://feeds.feedburner.com/~ff/railsmine?d=63t7Ie-LG7Y" border="0"&gt;&lt;/img&gt;&lt;/a&gt; &lt;a href="http://feeds.feedburner.com/~ff/railsmine?a=xpNvP4BbImg:qFAak2iGWVw:dnMXMwOfBR0"&gt;&lt;img src="http://feeds.feedburner.com/~ff/railsmine?d=dnMXMwOfBR0" border="0"&gt;&lt;/img&gt;&lt;/a&gt; &lt;a href="http://feeds.feedburner.com/~ff/railsmine?a=xpNvP4BbImg:qFAak2iGWVw:YwkR-u9nhCs"&gt;&lt;img src="http://feeds.feedburner.com/~ff/railsmine?d=YwkR-u9nhCs" border="0"&gt;&lt;/img&gt;&lt;/a&gt; &lt;a href="http://feeds.feedburner.com/~ff/railsmine?a=xpNvP4BbImg:qFAak2iGWVw:F7zBnMyn0Lo"&gt;&lt;img src="http://feeds.feedburner.com/~ff/railsmine?i=xpNvP4BbImg:qFAak2iGWVw:F7zBnMyn0Lo" border="0"&gt;&lt;/img&gt;&lt;/a&gt; &lt;a href="http://feeds.feedburner.com/~ff/railsmine?a=xpNvP4BbImg:qFAak2iGWVw:V_sGLiPBpWU"&gt;&lt;img src="http://feeds.feedburner.com/~ff/railsmine?i=xpNvP4BbImg:qFAak2iGWVw:V_sGLiPBpWU" border="0"&gt;&lt;/img&gt;&lt;/a&gt; &lt;a href="http://feeds.feedburner.com/~ff/railsmine?a=xpNvP4BbImg:qFAak2iGWVw:qj6IDK7rITs"&gt;&lt;img src="http://feeds.feedburner.com/~ff/railsmine?d=qj6IDK7rITs" border="0"&gt;&lt;/img&gt;&lt;/a&gt; &lt;a href="http://feeds.feedburner.com/~ff/railsmine?a=xpNvP4BbImg:qFAak2iGWVw:KwTdNBX3Jqk"&gt;&lt;img src="http://feeds.feedburner.com/~ff/railsmine?i=xpNvP4BbImg:qFAak2iGWVw:KwTdNBX3Jqk" border="0"&gt;&lt;/img&gt;&lt;/a&gt; &lt;a href="http://feeds.feedburner.com/~ff/railsmine?a=xpNvP4BbImg:qFAak2iGWVw:gIN9vFwOqvQ"&gt;&lt;img src="http://feeds.feedburner.com/~ff/railsmine?i=xpNvP4BbImg:qFAak2iGWVw:gIN9vFwOqvQ" border="0"&gt;&lt;/img&gt;&lt;/a&gt; &lt;a href="http://feeds.feedburner.com/~ff/railsmine?a=xpNvP4BbImg:qFAak2iGWVw:TzevzKxY174"&gt;&lt;img src="http://feeds.feedburner.com/~ff/railsmine?d=TzevzKxY174" border="0"&gt;&lt;/img&gt;&lt;/a&gt;
&lt;/div&gt;</description><link>http://www.railsmine.net/2010/06/rubyist-links-2010-06-09.html</link><author>noreply@blogger.com (Kunto Aji Kristianto)</author><thr:total>0</thr:total><creativeCommons:license>http://creativecommons.org/licenses/by-nc-nd/3.0/</creativeCommons:license></item><item><guid isPermaLink="false">tag:blogger.com,1999:blog-664110592797971793.post-5823134314762872057</guid><pubDate>Tue, 25 May 2010 03:18:00 +0000</pubDate><atom:updated>2010-05-25T10:18:19.769+07:00</atom:updated><category domain="http://www.blogger.com/atom/ns#">ruby on rails</category><title>Ruby on Rails 2.3.6 Dirilis</title><description>Dua hari lalu, tepatnya pada tanggal 25 Mei 2010, &lt;a href="http://weblog.rubyonrails.org/2010/5/23/ruby-on-rails-2-3-6-released"&gt;Ruby on Rails 2.3.6 telah dirilis&lt;/a&gt;. Proses untuk merilis versi ini memakan waktu 6 bulan untuk melakukan bug fix, menambahkan fitur-fitur baru serta sebagai jembatan untuk Rails 3.&lt;br /&gt;
&lt;br /&gt;
Beberapa perubahan yang ada di versi &lt;a href="http://rubygems.org/gems/rails/versions/2.3.6"&gt;2.3.6&lt;/a&gt; ini diantaranya adalah upgrade Rack dari 1.0.1 ke 1.1.0, Rails XSS plugin menjadi official plugin, serta perubahan pada flash message yaitu diperkenalkannya flash[:alert]. Untuk informasi lebih mendetail mengenai Rails 2.3.6, dapat dilihat melalui &lt;a href="http://github.com/rails/rails/compare/v2.3.5...v2.3.6"&gt;commit log&lt;/a&gt;.&lt;div class="blogger-post-footer"&gt;&lt;a href="http://www.launchbit.com/az/115-212/"&gt;&lt;img width="468" height="60" src="http://www.launchbit.com/az-images/115-212/" /&gt;&lt;/a&gt;&lt;br /&gt;
&lt;small&gt;(Powered by &lt;a href="http://www.launchbit.com/lb/115-212/"&gt;LaunchBit&lt;/a&gt;)&lt;/small&gt;&lt;img width='1' height='1' src='https://blogger.googleusercontent.com/tracker/664110592797971793-5823134314762872057?l=www.railsmine.net' alt='' /&gt;&lt;/div&gt;
&lt;p&gt;&lt;a href="http://feedads.g.doubleclick.net/~a/fxW8gdij-_PdqzAiFnnsaVbfj3k/0/da"&gt;&lt;img src="http://feedads.g.doubleclick.net/~a/fxW8gdij-_PdqzAiFnnsaVbfj3k/0/di" border="0" ismap="true"&gt;&lt;/img&gt;&lt;/a&gt;&lt;br/&gt;
&lt;a href="http://feedads.g.doubleclick.net/~a/fxW8gdij-_PdqzAiFnnsaVbfj3k/1/da"&gt;&lt;img src="http://feedads.g.doubleclick.net/~a/fxW8gdij-_PdqzAiFnnsaVbfj3k/1/di" border="0" ismap="true"&gt;&lt;/img&gt;&lt;/a&gt;&lt;/p&gt;&lt;div class="feedflare"&gt;
&lt;a href="http://feeds.feedburner.com/~ff/railsmine?a=mL-rOYSedKQ:W99nwRo_3xM:yIl2AUoC8zA"&gt;&lt;img src="http://feeds.feedburner.com/~ff/railsmine?d=yIl2AUoC8zA" border="0"&gt;&lt;/img&gt;&lt;/a&gt; &lt;a href="http://feeds.feedburner.com/~ff/railsmine?a=mL-rOYSedKQ:W99nwRo_3xM:63t7Ie-LG7Y"&gt;&lt;img src="http://feeds.feedburner.com/~ff/railsmine?d=63t7Ie-LG7Y" border="0"&gt;&lt;/img&gt;&lt;/a&gt; &lt;a href="http://feeds.feedburner.com/~ff/railsmine?a=mL-rOYSedKQ:W99nwRo_3xM:dnMXMwOfBR0"&gt;&lt;img src="http://feeds.feedburner.com/~ff/railsmine?d=dnMXMwOfBR0" border="0"&gt;&lt;/img&gt;&lt;/a&gt; &lt;a href="http://feeds.feedburner.com/~ff/railsmine?a=mL-rOYSedKQ:W99nwRo_3xM:YwkR-u9nhCs"&gt;&lt;img src="http://feeds.feedburner.com/~ff/railsmine?d=YwkR-u9nhCs" border="0"&gt;&lt;/img&gt;&lt;/a&gt; &lt;a href="http://feeds.feedburner.com/~ff/railsmine?a=mL-rOYSedKQ:W99nwRo_3xM:F7zBnMyn0Lo"&gt;&lt;img src="http://feeds.feedburner.com/~ff/railsmine?i=mL-rOYSedKQ:W99nwRo_3xM:F7zBnMyn0Lo" border="0"&gt;&lt;/img&gt;&lt;/a&gt; &lt;a href="http://feeds.feedburner.com/~ff/railsmine?a=mL-rOYSedKQ:W99nwRo_3xM:V_sGLiPBpWU"&gt;&lt;img src="http://feeds.feedburner.com/~ff/railsmine?i=mL-rOYSedKQ:W99nwRo_3xM:V_sGLiPBpWU" border="0"&gt;&lt;/img&gt;&lt;/a&gt; &lt;a href="http://feeds.feedburner.com/~ff/railsmine?a=mL-rOYSedKQ:W99nwRo_3xM:qj6IDK7rITs"&gt;&lt;img src="http://feeds.feedburner.com/~ff/railsmine?d=qj6IDK7rITs" border="0"&gt;&lt;/img&gt;&lt;/a&gt; &lt;a href="http://feeds.feedburner.com/~ff/railsmine?a=mL-rOYSedKQ:W99nwRo_3xM:KwTdNBX3Jqk"&gt;&lt;img src="http://feeds.feedburner.com/~ff/railsmine?i=mL-rOYSedKQ:W99nwRo_3xM:KwTdNBX3Jqk" border="0"&gt;&lt;/img&gt;&lt;/a&gt; &lt;a href="http://feeds.feedburner.com/~ff/railsmine?a=mL-rOYSedKQ:W99nwRo_3xM:gIN9vFwOqvQ"&gt;&lt;img src="http://feeds.feedburner.com/~ff/railsmine?i=mL-rOYSedKQ:W99nwRo_3xM:gIN9vFwOqvQ" border="0"&gt;&lt;/img&gt;&lt;/a&gt; &lt;a href="http://feeds.feedburner.com/~ff/railsmine?a=mL-rOYSedKQ:W99nwRo_3xM:TzevzKxY174"&gt;&lt;img src="http://feeds.feedburner.com/~ff/railsmine?d=TzevzKxY174" border="0"&gt;&lt;/img&gt;&lt;/a&gt;
&lt;/div&gt;</description><link>http://www.railsmine.net/2010/05/ruby-on-rails-236-dirilis.html</link><author>noreply@blogger.com (Kunto Aji Kristianto)</author><thr:total>0</thr:total><creativeCommons:license>http://creativecommons.org/licenses/by-nc-nd/3.0/</creativeCommons:license></item><item><guid isPermaLink="false">tag:blogger.com,1999:blog-664110592797971793.post-6972009631676473649</guid><pubDate>Sat, 15 May 2010 04:17:00 +0000</pubDate><atom:updated>2010-05-15T11:17:28.816+07:00</atom:updated><category domain="http://www.blogger.com/atom/ns#">ruby</category><title>Rubinius 1.0 Dirilis</title><description>&lt;a href="http://rubini.us/about/one_point_oh"&gt;Rubinius 1.0&lt;/a&gt;, dengan code name Fabius, pada bulan ini dirilis setelah 3,5 tahun sejak proyek ini dikerjakan. Sebagai informasi tambahan bagi yang belum mengetahui, Rubinius merupakan implementasi dari bahasa pemrograman Ruby. Dengan kata lain, Rubinius merupakan intepreter alternatif untuk membaca kode Ruby selain dari intepreter dari pembuat bahasa Ruby yang bernama MRI (Matz Ruby Intepreter) dan digadang-gadang memiliki performansi yang lebih baik dibandingkan dengan MRI.&lt;br /&gt;
&lt;br /&gt;
&lt;b&gt;Fitur-fitur Utama Rubinius 1.0:&lt;/b&gt;&lt;br /&gt;
&lt;br /&gt;
&lt;ol&gt;&lt;li&gt;Telah banyak mendukung sebagian besar kode-kode Ruby dan ekstensi C yang populer seperti Rails (2.3.4 &amp;amp; 3), Sinatra, sqlite3, mysql, nokogiri, yajl-ruby dan lain-lain&lt;/li&gt;
&lt;li&gt;Memiliki JIT compiler yang membuat kode Ruby lebih cepat dijalankan.&lt;/li&gt;
&lt;li&gt;Generational Garbage Collector&lt;/li&gt;
&lt;li&gt;Integrated profiler&lt;/li&gt;
&lt;/ol&gt;&lt;b&gt;Cara Instalasi:&lt;/b&gt; &lt;a href="http://rubini.us/about/download"&gt;http://rubini.us/about/download&lt;/a&gt;&lt;div class="blogger-post-footer"&gt;&lt;a href="http://www.launchbit.com/az/115-212/"&gt;&lt;img width="468" height="60" src="http://www.launchbit.com/az-images/115-212/" /&gt;&lt;/a&gt;&lt;br /&gt;
&lt;small&gt;(Powered by &lt;a href="http://www.launchbit.com/lb/115-212/"&gt;LaunchBit&lt;/a&gt;)&lt;/small&gt;&lt;img width='1' height='1' src='https://blogger.googleusercontent.com/tracker/664110592797971793-6972009631676473649?l=www.railsmine.net' alt='' /&gt;&lt;/div&gt;
&lt;p&gt;&lt;a href="http://feedads.g.doubleclick.net/~a/d4IMxi64lDrX_cUVBchGHpo0oro/0/da"&gt;&lt;img src="http://feedads.g.doubleclick.net/~a/d4IMxi64lDrX_cUVBchGHpo0oro/0/di" border="0" ismap="true"&gt;&lt;/img&gt;&lt;/a&gt;&lt;br/&gt;
&lt;a href="http://feedads.g.doubleclick.net/~a/d4IMxi64lDrX_cUVBchGHpo0oro/1/da"&gt;&lt;img src="http://feedads.g.doubleclick.net/~a/d4IMxi64lDrX_cUVBchGHpo0oro/1/di" border="0" ismap="true"&gt;&lt;/img&gt;&lt;/a&gt;&lt;/p&gt;&lt;div class="feedflare"&gt;
&lt;a href="http://feeds.feedburner.com/~ff/railsmine?a=t57ERe7F5Qk:Fdd5XoHoAlY:yIl2AUoC8zA"&gt;&lt;img src="http://feeds.feedburner.com/~ff/railsmine?d=yIl2AUoC8zA" border="0"&gt;&lt;/img&gt;&lt;/a&gt; &lt;a href="http://feeds.feedburner.com/~ff/railsmine?a=t57ERe7F5Qk:Fdd5XoHoAlY:63t7Ie-LG7Y"&gt;&lt;img src="http://feeds.feedburner.com/~ff/railsmine?d=63t7Ie-LG7Y" border="0"&gt;&lt;/img&gt;&lt;/a&gt; &lt;a href="http://feeds.feedburner.com/~ff/railsmine?a=t57ERe7F5Qk:Fdd5XoHoAlY:dnMXMwOfBR0"&gt;&lt;img src="http://feeds.feedburner.com/~ff/railsmine?d=dnMXMwOfBR0" border="0"&gt;&lt;/img&gt;&lt;/a&gt; &lt;a href="http://feeds.feedburner.com/~ff/railsmine?a=t57ERe7F5Qk:Fdd5XoHoAlY:YwkR-u9nhCs"&gt;&lt;img src="http://feeds.feedburner.com/~ff/railsmine?d=YwkR-u9nhCs" border="0"&gt;&lt;/img&gt;&lt;/a&gt; &lt;a href="http://feeds.feedburner.com/~ff/railsmine?a=t57ERe7F5Qk:Fdd5XoHoAlY:F7zBnMyn0Lo"&gt;&lt;img src="http://feeds.feedburner.com/~ff/railsmine?i=t57ERe7F5Qk:Fdd5XoHoAlY:F7zBnMyn0Lo" border="0"&gt;&lt;/img&gt;&lt;/a&gt; &lt;a href="http://feeds.feedburner.com/~ff/railsmine?a=t57ERe7F5Qk:Fdd5XoHoAlY:V_sGLiPBpWU"&gt;&lt;img src="http://feeds.feedburner.com/~ff/railsmine?i=t57ERe7F5Qk:Fdd5XoHoAlY:V_sGLiPBpWU" border="0"&gt;&lt;/img&gt;&lt;/a&gt; &lt;a href="http://feeds.feedburner.com/~ff/railsmine?a=t57ERe7F5Qk:Fdd5XoHoAlY:qj6IDK7rITs"&gt;&lt;img src="http://feeds.feedburner.com/~ff/railsmine?d=qj6IDK7rITs" border="0"&gt;&lt;/img&gt;&lt;/a&gt; &lt;a href="http://feeds.feedburner.com/~ff/railsmine?a=t57ERe7F5Qk:Fdd5XoHoAlY:KwTdNBX3Jqk"&gt;&lt;img src="http://feeds.feedburner.com/~ff/railsmine?i=t57ERe7F5Qk:Fdd5XoHoAlY:KwTdNBX3Jqk" border="0"&gt;&lt;/img&gt;&lt;/a&gt; &lt;a href="http://feeds.feedburner.com/~ff/railsmine?a=t57ERe7F5Qk:Fdd5XoHoAlY:gIN9vFwOqvQ"&gt;&lt;img src="http://feeds.feedburner.com/~ff/railsmine?i=t57ERe7F5Qk:Fdd5XoHoAlY:gIN9vFwOqvQ" border="0"&gt;&lt;/img&gt;&lt;/a&gt; &lt;a href="http://feeds.feedburner.com/~ff/railsmine?a=t57ERe7F5Qk:Fdd5XoHoAlY:TzevzKxY174"&gt;&lt;img src="http://feeds.feedburner.com/~ff/railsmine?d=TzevzKxY174" border="0"&gt;&lt;/img&gt;&lt;/a&gt;
&lt;/div&gt;</description><link>http://www.railsmine.net/2010/05/rubinius-10-dirilis.html</link><author>noreply@blogger.com (Kunto Aji Kristianto)</author><thr:total>0</thr:total><creativeCommons:license>http://creativecommons.org/licenses/by-nc-nd/3.0/</creativeCommons:license></item><item><guid isPermaLink="false">tag:blogger.com,1999:blog-664110592797971793.post-1327957566218418533</guid><pubDate>Thu, 13 May 2010 00:32:00 +0000</pubDate><atom:updated>2010-05-13T07:33:31.238+07:00</atom:updated><category domain="http://www.blogger.com/atom/ns#">ruby</category><category domain="http://www.blogger.com/atom/ns#">ruby on rails</category><category domain="http://www.blogger.com/atom/ns#">tutorial</category><title>Perbedaan Method nil?, empty?, dan blank?</title><description>&lt;b&gt;Method nil?&lt;/b&gt;&lt;br /&gt;
Method nil? digunakan untuk mengecek apakah suatu objek bernilai nil atau merupakan instance dari NilClass. Contoh penggunaan:&lt;br /&gt;
&lt;pre class="brush: ruby"&gt;nil.nil? #=&gt; true
false.nil? #=&gt; false
true.nil? #=&gt; false
[].nil? #=&gt; false
"".nil? #=&gt; false
0.nil? #=&gt; false

my_arr = Array.new #=&gt; []
my_arr.nil? #=&gt; false

s = String.new #=&gt; ""
s.nil? #=&gt; false

my_var.nil? #=&gt; NameError: undefined local variable or method `my_var' for main:Object
my_var = nil #=&gt; nil
my_var.nil? #=&gt; true&lt;/pre&gt;&lt;a name='more'&gt;&lt;/a&gt;&lt;br /&gt;
&lt;b&gt;Method empty?&lt;/b&gt;&lt;br /&gt;
Method empty? adalah method yang dimiliki hanya oleh objek-objek tertentu sehingga tidak semua objek memiliki method ini. Sebagai contoh, array kosong dan string kosong. Array kosong bukan nil karena merupakan objek atau instance dari kelas Array yang tidak memiliki elemen. Sedangkan string kosong juga bukan nil karena merupakan objek atau instance dari kelas String yang memiliki nol bytes didalamnya. Contoh penggunaan:&lt;br /&gt;
&lt;pre class="brush: ruby"&gt;nil.empty? #=&gt; NoMethodError: undefined method `empty?' for nil:NilClass
false.empty? #=&gt; NoMethodError: undefined method `empty?' for false:FalseClass
true.empty? #=&gt; NoMethodError: undefined method `empty?' for true:TrueClass
[].empty? #=&gt; true
"".empty? #=&gt; true
0.empty? #=&gt; NoMethodError: undefined method `empty?' for 0:Fixnum

my_arr = Array.new #=&gt; []
my_arr.empty? #=&gt; true

s = String.new #=&gt; ""
s.empty? #=&gt; true

my_var.empty? #=&gt; NameError: undefined local variable or method `my_var' for main:Object
my_var = [] #=&gt; []
my_var.empty? #=&gt; true
&lt;/pre&gt;&lt;b&gt;Method blank?&lt;/b&gt;&lt;br /&gt;
Method blank? bukan merupakan method dari Ruby, melainkan &lt;a href="http://api.rubyonrails.org/classes/Object.html#M000279"&gt;method pada framework Ruby on Rails&lt;/a&gt;. Sebuah objek dianggap blank jika false, empty atau berisi sebuah karakter spasi. Contoh, "", " ", nil, [], dan {} adalah blank. Salah satu tujuannya adalah menyederhanakan pengecekan apakah suatu objek nil dan empty.&lt;br /&gt;
&lt;pre class="brush: ruby"&gt;if my_var.nil? &amp;&amp; my_var.empty?&lt;/pre&gt;menjadi&lt;br /&gt;
&lt;pre class="brush: ruby"&gt;if my_var.blank?&lt;/pre&gt;[via &lt;a href="http://www.ruby-forum.com/topic/160638"&gt;ruby-forum&lt;/a&gt;]&lt;div class="blogger-post-footer"&gt;&lt;a href="http://www.launchbit.com/az/115-212/"&gt;&lt;img width="468" height="60" src="http://www.launchbit.com/az-images/115-212/" /&gt;&lt;/a&gt;&lt;br /&gt;
&lt;small&gt;(Powered by &lt;a href="http://www.launchbit.com/lb/115-212/"&gt;LaunchBit&lt;/a&gt;)&lt;/small&gt;&lt;img width='1' height='1' src='https://blogger.googleusercontent.com/tracker/664110592797971793-1327957566218418533?l=www.railsmine.net' alt='' /&gt;&lt;/div&gt;
&lt;p&gt;&lt;a href="http://feedads.g.doubleclick.net/~a/C1irSVe81xQH9Etamv83Oth0yVQ/0/da"&gt;&lt;img src="http://feedads.g.doubleclick.net/~a/C1irSVe81xQH9Etamv83Oth0yVQ/0/di" border="0" ismap="true"&gt;&lt;/img&gt;&lt;/a&gt;&lt;br/&gt;
&lt;a href="http://feedads.g.doubleclick.net/~a/C1irSVe81xQH9Etamv83Oth0yVQ/1/da"&gt;&lt;img src="http://feedads.g.doubleclick.net/~a/C1irSVe81xQH9Etamv83Oth0yVQ/1/di" border="0" ismap="true"&gt;&lt;/img&gt;&lt;/a&gt;&lt;/p&gt;&lt;div class="feedflare"&gt;
&lt;a href="http://feeds.feedburner.com/~ff/railsmine?a=PX3xbPxXPOc:bZOe74i6-GA:yIl2AUoC8zA"&gt;&lt;img src="http://feeds.feedburner.com/~ff/railsmine?d=yIl2AUoC8zA" border="0"&gt;&lt;/img&gt;&lt;/a&gt; &lt;a href="http://feeds.feedburner.com/~ff/railsmine?a=PX3xbPxXPOc:bZOe74i6-GA:63t7Ie-LG7Y"&gt;&lt;img src="http://feeds.feedburner.com/~ff/railsmine?d=63t7Ie-LG7Y" border="0"&gt;&lt;/img&gt;&lt;/a&gt; &lt;a href="http://feeds.feedburner.com/~ff/railsmine?a=PX3xbPxXPOc:bZOe74i6-GA:dnMXMwOfBR0"&gt;&lt;img src="http://feeds.feedburner.com/~ff/railsmine?d=dnMXMwOfBR0" border="0"&gt;&lt;/img&gt;&lt;/a&gt; &lt;a href="http://feeds.feedburner.com/~ff/railsmine?a=PX3xbPxXPOc:bZOe74i6-GA:YwkR-u9nhCs"&gt;&lt;img src="http://feeds.feedburner.com/~ff/railsmine?d=YwkR-u9nhCs" border="0"&gt;&lt;/img&gt;&lt;/a&gt; &lt;a href="http://feeds.feedburner.com/~ff/railsmine?a=PX3xbPxXPOc:bZOe74i6-GA:F7zBnMyn0Lo"&gt;&lt;img src="http://feeds.feedburner.com/~ff/railsmine?i=PX3xbPxXPOc:bZOe74i6-GA:F7zBnMyn0Lo" border="0"&gt;&lt;/img&gt;&lt;/a&gt; &lt;a href="http://feeds.feedburner.com/~ff/railsmine?a=PX3xbPxXPOc:bZOe74i6-GA:V_sGLiPBpWU"&gt;&lt;img src="http://feeds.feedburner.com/~ff/railsmine?i=PX3xbPxXPOc:bZOe74i6-GA:V_sGLiPBpWU" border="0"&gt;&lt;/img&gt;&lt;/a&gt; &lt;a href="http://feeds.feedburner.com/~ff/railsmine?a=PX3xbPxXPOc:bZOe74i6-GA:qj6IDK7rITs"&gt;&lt;img src="http://feeds.feedburner.com/~ff/railsmine?d=qj6IDK7rITs" border="0"&gt;&lt;/img&gt;&lt;/a&gt; &lt;a href="http://feeds.feedburner.com/~ff/railsmine?a=PX3xbPxXPOc:bZOe74i6-GA:KwTdNBX3Jqk"&gt;&lt;img src="http://feeds.feedburner.com/~ff/railsmine?i=PX3xbPxXPOc:bZOe74i6-GA:KwTdNBX3Jqk" border="0"&gt;&lt;/img&gt;&lt;/a&gt; &lt;a href="http://feeds.feedburner.com/~ff/railsmine?a=PX3xbPxXPOc:bZOe74i6-GA:gIN9vFwOqvQ"&gt;&lt;img src="http://feeds.feedburner.com/~ff/railsmine?i=PX3xbPxXPOc:bZOe74i6-GA:gIN9vFwOqvQ" border="0"&gt;&lt;/img&gt;&lt;/a&gt; &lt;a href="http://feeds.feedburner.com/~ff/railsmine?a=PX3xbPxXPOc:bZOe74i6-GA:TzevzKxY174"&gt;&lt;img src="http://feeds.feedburner.com/~ff/railsmine?d=TzevzKxY174" border="0"&gt;&lt;/img&gt;&lt;/a&gt;
&lt;/div&gt;</description><link>http://www.railsmine.net/2010/05/perbedaan-method-nil-empty-dan-blank.html</link><author>noreply@blogger.com (Kunto Aji Kristianto)</author><thr:total>0</thr:total><creativeCommons:license>http://creativecommons.org/licenses/by-nc-nd/3.0/</creativeCommons:license></item><item><guid isPermaLink="false">tag:blogger.com,1999:blog-664110592797971793.post-7774637248972430775</guid><pubDate>Wed, 12 May 2010 23:47:00 +0000</pubDate><atom:updated>2010-05-13T06:50:56.201+07:00</atom:updated><category domain="http://www.blogger.com/atom/ns#">ruby</category><category domain="http://www.blogger.com/atom/ns#">presentations</category><title>Practical Ruby Projects With Mongo Db</title><description>&lt;div style="width:490px" id="__ss_3671482"&gt;&lt;strong style="display:block;margin:12px 0 4px"&gt;&lt;a href="http://www.slideshare.net/drumwurzel/practical-ruby-projects-with-mongo-db" title="Practical Ruby Projects With Mongo Db"&gt;Practical Ruby Projects With Mongo Db&lt;/a&gt;&lt;/strong&gt;&lt;object id="__sse3671482" width="490" height="355"&gt;&lt;param name="movie" value="http://static.slidesharecdn.com/swf/ssplayer2.swf?doc=practicalrubyprojectswithmongodb-100408221143-phpapp01&amp;rel=0&amp;stripped_title=practical-ruby-projects-with-mongo-db" /&gt;&lt;param name="allowFullScreen" value="true"/&gt;&lt;param name="allowScriptAccess" value="always"/&gt;&lt;embed name="__sse3671482" src="http://static.slidesharecdn.com/swf/ssplayer2.swf?doc=practicalrubyprojectswithmongodb-100408221143-phpapp01&amp;rel=0&amp;stripped_title=practical-ruby-projects-with-mongo-db" type="application/x-shockwave-flash" allowscriptaccess="always" allowfullscreen="true" width="490" height="355"&gt;&lt;/embed&gt;&lt;/object&gt;&lt;div style="padding:5px 0 12px"&gt;View more &lt;a href="http://www.slideshare.net/"&gt;presentations&lt;/a&gt; from &lt;a href="http://www.slideshare.net/drumwurzel"&gt;Alex Sharp&lt;/a&gt;.&lt;/div&gt;&lt;/div&gt;&lt;div class="blogger-post-footer"&gt;&lt;a href="http://www.launchbit.com/az/115-212/"&gt;&lt;img width="468" height="60" src="http://www.launchbit.com/az-images/115-212/" /&gt;&lt;/a&gt;&lt;br /&gt;
&lt;small&gt;(Powered by &lt;a href="http://www.launchbit.com/lb/115-212/"&gt;LaunchBit&lt;/a&gt;)&lt;/small&gt;&lt;img width='1' height='1' src='https://blogger.googleusercontent.com/tracker/664110592797971793-7774637248972430775?l=www.railsmine.net' alt='' /&gt;&lt;/div&gt;
&lt;p&gt;&lt;a href="http://feedads.g.doubleclick.net/~a/NJ_xezXTAgobXmD6veXxRR2HNjw/0/da"&gt;&lt;img src="http://feedads.g.doubleclick.net/~a/NJ_xezXTAgobXmD6veXxRR2HNjw/0/di" border="0" ismap="true"&gt;&lt;/img&gt;&lt;/a&gt;&lt;br/&gt;
&lt;a href="http://feedads.g.doubleclick.net/~a/NJ_xezXTAgobXmD6veXxRR2HNjw/1/da"&gt;&lt;img src="http://feedads.g.doubleclick.net/~a/NJ_xezXTAgobXmD6veXxRR2HNjw/1/di" border="0" ismap="true"&gt;&lt;/img&gt;&lt;/a&gt;&lt;/p&gt;&lt;div class="feedflare"&gt;
&lt;a href="http://feeds.feedburner.com/~ff/railsmine?a=C0H_zs2-rOY:QIIK2kB-Zbw:yIl2AUoC8zA"&gt;&lt;img src="http://feeds.feedburner.com/~ff/railsmine?d=yIl2AUoC8zA" border="0"&gt;&lt;/img&gt;&lt;/a&gt; &lt;a href="http://feeds.feedburner.com/~ff/railsmine?a=C0H_zs2-rOY:QIIK2kB-Zbw:63t7Ie-LG7Y"&gt;&lt;img src="http://feeds.feedburner.com/~ff/railsmine?d=63t7Ie-LG7Y" border="0"&gt;&lt;/img&gt;&lt;/a&gt; &lt;a href="http://feeds.feedburner.com/~ff/railsmine?a=C0H_zs2-rOY:QIIK2kB-Zbw:dnMXMwOfBR0"&gt;&lt;img src="http://feeds.feedburner.com/~ff/railsmine?d=dnMXMwOfBR0" border="0"&gt;&lt;/img&gt;&lt;/a&gt; &lt;a href="http://feeds.feedburner.com/~ff/railsmine?a=C0H_zs2-rOY:QIIK2kB-Zbw:YwkR-u9nhCs"&gt;&lt;img src="http://feeds.feedburner.com/~ff/railsmine?d=YwkR-u9nhCs" border="0"&gt;&lt;/img&gt;&lt;/a&gt; &lt;a href="http://feeds.feedburner.com/~ff/railsmine?a=C0H_zs2-rOY:QIIK2kB-Zbw:F7zBnMyn0Lo"&gt;&lt;img src="http://feeds.feedburner.com/~ff/railsmine?i=C0H_zs2-rOY:QIIK2kB-Zbw:F7zBnMyn0Lo" border="0"&gt;&lt;/img&gt;&lt;/a&gt; &lt;a href="http://feeds.feedburner.com/~ff/railsmine?a=C0H_zs2-rOY:QIIK2kB-Zbw:V_sGLiPBpWU"&gt;&lt;img src="http://feeds.feedburner.com/~ff/railsmine?i=C0H_zs2-rOY:QIIK2kB-Zbw:V_sGLiPBpWU" border="0"&gt;&lt;/img&gt;&lt;/a&gt; &lt;a href="http://feeds.feedburner.com/~ff/railsmine?a=C0H_zs2-rOY:QIIK2kB-Zbw:qj6IDK7rITs"&gt;&lt;img src="http://feeds.feedburner.com/~ff/railsmine?d=qj6IDK7rITs" border="0"&gt;&lt;/img&gt;&lt;/a&gt; &lt;a href="http://feeds.feedburner.com/~ff/railsmine?a=C0H_zs2-rOY:QIIK2kB-Zbw:KwTdNBX3Jqk"&gt;&lt;img src="http://feeds.feedburner.com/~ff/railsmine?i=C0H_zs2-rOY:QIIK2kB-Zbw:KwTdNBX3Jqk" border="0"&gt;&lt;/img&gt;&lt;/a&gt; &lt;a href="http://feeds.feedburner.com/~ff/railsmine?a=C0H_zs2-rOY:QIIK2kB-Zbw:gIN9vFwOqvQ"&gt;&lt;img src="http://feeds.feedburner.com/~ff/railsmine?i=C0H_zs2-rOY:QIIK2kB-Zbw:gIN9vFwOqvQ" border="0"&gt;&lt;/img&gt;&lt;/a&gt; &lt;a href="http://feeds.feedburner.com/~ff/railsmine?a=C0H_zs2-rOY:QIIK2kB-Zbw:TzevzKxY174"&gt;&lt;img src="http://feeds.feedburner.com/~ff/railsmine?d=TzevzKxY174" border="0"&gt;&lt;/img&gt;&lt;/a&gt;
&lt;/div&gt;</description><link>http://www.railsmine.net/2010/05/practical-ruby-projects-with-mongo-db.html</link><author>noreply@blogger.com (Kunto Aji Kristianto)</author><thr:total>0</thr:total><creativeCommons:license>http://creativecommons.org/licenses/by-nc-nd/3.0/</creativeCommons:license></item><item><guid isPermaLink="false">tag:blogger.com,1999:blog-664110592797971793.post-5458650984158684745</guid><pubDate>Sat, 01 May 2010 00:19:00 +0000</pubDate><atom:updated>2010-05-01T07:20:29.486+07:00</atom:updated><category domain="http://www.blogger.com/atom/ns#">ruby</category><category domain="http://www.blogger.com/atom/ns#">presentations</category><title>Debugging Ruby with MongoDB</title><description>&lt;a title="View Debugging Ruby with MongoDB on Scribd" href="http://www.scribd.com/doc/30739474/Debugging-Ruby-with-MongoDB" style="margin: 12px auto 6px auto; font-family: Helvetica,Arial,Sans-serif; font-style: normal; font-variant: normal; font-weight: normal; font-size: 14px; line-height: normal; font-size-adjust: none; font-stretch: normal; -x-system-font: none; display: block; text-decoration: underline;"&gt;Debugging Ruby with MongoDB&lt;/a&gt; &lt;object id="doc_6029" name="doc_6029" height="600" width="490" type="application/x-shockwave-flash" data="http://d1.scribdassets.com/ScribdViewer.swf" style="outline:none;" &gt;                &lt;param name="movie" value="http://d1.scribdassets.com/ScribdViewer.swf"&gt;&lt;param name="wmode" value="opaque"&gt;&lt;param name="bgcolor" value="#ffffff"&gt;&lt;param name="allowFullScreen" value="true"&gt;&lt;param name="allowScriptAccess" value="always"&gt;&lt;param name="FlashVars" value="document_id=30739474&amp;access_key=key-1qz5f6tzrx1tzovhld97&amp;page=1&amp;viewMode=slideshow"&gt;&lt;embed id="doc_6029" name="doc_6029" src="http://d1.scribdassets.com/ScribdViewer.swf?document_id=30739474&amp;access_key=key-1qz5f6tzrx1tzovhld97&amp;page=1&amp;viewMode=slideshow" type="application/x-shockwave-flash" allowscriptaccess="always" allowfullscreen="true" height="600" width="490" wmode="opaque" bgcolor="#ffffff"&gt;&lt;/embed&gt;             &lt;/object&gt;&lt;div class="blogger-post-footer"&gt;&lt;a href="http://www.launchbit.com/az/115-212/"&gt;&lt;img width="468" height="60" src="http://www.launchbit.com/az-images/115-212/" /&gt;&lt;/a&gt;&lt;br /&gt;
&lt;small&gt;(Powered by &lt;a href="http://www.launchbit.com/lb/115-212/"&gt;LaunchBit&lt;/a&gt;)&lt;/small&gt;&lt;img width='1' height='1' src='https://blogger.googleusercontent.com/tracker/664110592797971793-5458650984158684745?l=www.railsmine.net' alt='' /&gt;&lt;/div&gt;
&lt;p&gt;&lt;a href="http://feedads.g.doubleclick.net/~a/IZLYQzs4CMCW3nZJ_VqONpN4qRo/0/da"&gt;&lt;img src="http://feedads.g.doubleclick.net/~a/IZLYQzs4CMCW3nZJ_VqONpN4qRo/0/di" border="0" ismap="true"&gt;&lt;/img&gt;&lt;/a&gt;&lt;br/&gt;
&lt;a href="http://feedads.g.doubleclick.net/~a/IZLYQzs4CMCW3nZJ_VqONpN4qRo/1/da"&gt;&lt;img src="http://feedads.g.doubleclick.net/~a/IZLYQzs4CMCW3nZJ_VqONpN4qRo/1/di" border="0" ismap="true"&gt;&lt;/img&gt;&lt;/a&gt;&lt;/p&gt;&lt;div class="feedflare"&gt;
&lt;a href="http://feeds.feedburner.com/~ff/railsmine?a=48x50_IEQyE:9O7fa-JceZM:yIl2AUoC8zA"&gt;&lt;img src="http://feeds.feedburner.com/~ff/railsmine?d=yIl2AUoC8zA" border="0"&gt;&lt;/img&gt;&lt;/a&gt; &lt;a href="http://feeds.feedburner.com/~ff/railsmine?a=48x50_IEQyE:9O7fa-JceZM:63t7Ie-LG7Y"&gt;&lt;img src="http://feeds.feedburner.com/~ff/railsmine?d=63t7Ie-LG7Y" border="0"&gt;&lt;/img&gt;&lt;/a&gt; &lt;a href="http://feeds.feedburner.com/~ff/railsmine?a=48x50_IEQyE:9O7fa-JceZM:dnMXMwOfBR0"&gt;&lt;img src="http://feeds.feedburner.com/~ff/railsmine?d=dnMXMwOfBR0" border="0"&gt;&lt;/img&gt;&lt;/a&gt; &lt;a href="http://feeds.feedburner.com/~ff/railsmine?a=48x50_IEQyE:9O7fa-JceZM:YwkR-u9nhCs"&gt;&lt;img src="http://feeds.feedburner.com/~ff/railsmine?d=YwkR-u9nhCs" border="0"&gt;&lt;/img&gt;&lt;/a&gt; &lt;a href="http://feeds.feedburner.com/~ff/railsmine?a=48x50_IEQyE:9O7fa-JceZM:F7zBnMyn0Lo"&gt;&lt;img src="http://feeds.feedburner.com/~ff/railsmine?i=48x50_IEQyE:9O7fa-JceZM:F7zBnMyn0Lo" border="0"&gt;&lt;/img&gt;&lt;/a&gt; &lt;a href="http://feeds.feedburner.com/~ff/railsmine?a=48x50_IEQyE:9O7fa-JceZM:V_sGLiPBpWU"&gt;&lt;img src="http://feeds.feedburner.com/~ff/railsmine?i=48x50_IEQyE:9O7fa-JceZM:V_sGLiPBpWU" border="0"&gt;&lt;/img&gt;&lt;/a&gt; &lt;a href="http://feeds.feedburner.com/~ff/railsmine?a=48x50_IEQyE:9O7fa-JceZM:qj6IDK7rITs"&gt;&lt;img src="http://feeds.feedburner.com/~ff/railsmine?d=qj6IDK7rITs" border="0"&gt;&lt;/img&gt;&lt;/a&gt; &lt;a href="http://feeds.feedburner.com/~ff/railsmine?a=48x50_IEQyE:9O7fa-JceZM:KwTdNBX3Jqk"&gt;&lt;img src="http://feeds.feedburner.com/~ff/railsmine?i=48x50_IEQyE:9O7fa-JceZM:KwTdNBX3Jqk" border="0"&gt;&lt;/img&gt;&lt;/a&gt; &lt;a href="http://feeds.feedburner.com/~ff/railsmine?a=48x50_IEQyE:9O7fa-JceZM:gIN9vFwOqvQ"&gt;&lt;img src="http://feeds.feedburner.com/~ff/railsmine?i=48x50_IEQyE:9O7fa-JceZM:gIN9vFwOqvQ" border="0"&gt;&lt;/img&gt;&lt;/a&gt; &lt;a href="http://feeds.feedburner.com/~ff/railsmine?a=48x50_IEQyE:9O7fa-JceZM:TzevzKxY174"&gt;&lt;img src="http://feeds.feedburner.com/~ff/railsmine?d=TzevzKxY174" border="0"&gt;&lt;/img&gt;&lt;/a&gt;
&lt;/div&gt;</description><link>http://www.railsmine.net/2010/04/debugging-ruby-with-mongodb.html</link><author>noreply@blogger.com (Kunto Aji Kristianto)</author><thr:total>0</thr:total><creativeCommons:license>http://creativecommons.org/licenses/by-nc-nd/3.0/</creativeCommons:license></item><item><guid isPermaLink="false">tag:blogger.com,1999:blog-664110592797971793.post-2719101325791084460</guid><pubDate>Thu, 29 Apr 2010 23:39:00 +0000</pubDate><atom:updated>2010-07-24T21:36:37.809+07:00</atom:updated><category domain="http://www.blogger.com/atom/ns#">ruby on rails</category><category domain="http://www.blogger.com/atom/ns#">active record</category><category domain="http://www.blogger.com/atom/ns#">tips</category><title>Tips: Select Sebuah Kolom Active Record</title><description>Kadang kala kita hanya memerlukan kolom sebuah kolom saja saat melakukan &lt;i&gt;query&lt;/i&gt; pada &lt;span class="Apple-style-span" style="font-family: 'Courier New', Courier, monospace;"&gt;Active Record&lt;/span&gt;. Berikut ini adalah salah satu cara untuk mengambil sebuah kolom saja pada &lt;span class="Apple-style-span" style="font-family: 'Courier New', Courier, monospace;"&gt;Active Record&lt;/span&gt;.&lt;br /&gt;
&lt;pre class="brush: ruby"&gt;# app/controllers/posts_controller.rb
class PostController &amp;lt; ApplicationController
  def my_action
    # find all records, kemudian map attribut title ke array
    @titles = Post.find(:all, :select =&amp;gt; "title").map(&amp;amp;:title)
  end
end
&lt;/pre&gt;&lt;br /&gt;
Informasi tambahan:&lt;br /&gt;
&lt;span class="Apple-style-span" style="font-family: 'Courier New', Courier, monospace;"&gt;.map(&amp;amp;:title)&lt;/span&gt; merupakan shorhand dari &lt;span class="Apple-style-span" style="font-family: 'Courier New', Courier, monospace;"&gt;.map { |x| x.title }&lt;/span&gt;&lt;br /&gt;
&lt;br /&gt;
[&lt;a href="http://snippets.dzone.com/posts/show/3901"&gt;referensi&lt;/a&gt;]&lt;div class="blogger-post-footer"&gt;&lt;a href="http://www.launchbit.com/az/115-212/"&gt;&lt;img width="468" height="60" src="http://www.launchbit.com/az-images/115-212/" /&gt;&lt;/a&gt;&lt;br /&gt;
&lt;small&gt;(Powered by &lt;a href="http://www.launchbit.com/lb/115-212/"&gt;LaunchBit&lt;/a&gt;)&lt;/small&gt;&lt;img width='1' height='1' src='https://blogger.googleusercontent.com/tracker/664110592797971793-2719101325791084460?l=www.railsmine.net' alt='' /&gt;&lt;/div&gt;
&lt;p&gt;&lt;a href="http://feedads.g.doubleclick.net/~a/Cwa6zGFuzK1iwgccnCB7rgDpM1E/0/da"&gt;&lt;img src="http://feedads.g.doubleclick.net/~a/Cwa6zGFuzK1iwgccnCB7rgDpM1E/0/di" border="0" ismap="true"&gt;&lt;/img&gt;&lt;/a&gt;&lt;br/&gt;
&lt;a href="http://feedads.g.doubleclick.net/~a/Cwa6zGFuzK1iwgccnCB7rgDpM1E/1/da"&gt;&lt;img src="http://feedads.g.doubleclick.net/~a/Cwa6zGFuzK1iwgccnCB7rgDpM1E/1/di" border="0" ismap="true"&gt;&lt;/img&gt;&lt;/a&gt;&lt;/p&gt;&lt;div class="feedflare"&gt;
&lt;a href="http://feeds.feedburner.com/~ff/railsmine?a=ZiPlpVBD99M:ryyFQCPLhtQ:yIl2AUoC8zA"&gt;&lt;img src="http://feeds.feedburner.com/~ff/railsmine?d=yIl2AUoC8zA" border="0"&gt;&lt;/img&gt;&lt;/a&gt; &lt;a href="http://feeds.feedburner.com/~ff/railsmine?a=ZiPlpVBD99M:ryyFQCPLhtQ:63t7Ie-LG7Y"&gt;&lt;img src="http://feeds.feedburner.com/~ff/railsmine?d=63t7Ie-LG7Y" border="0"&gt;&lt;/img&gt;&lt;/a&gt; &lt;a href="http://feeds.feedburner.com/~ff/railsmine?a=ZiPlpVBD99M:ryyFQCPLhtQ:dnMXMwOfBR0"&gt;&lt;img src="http://feeds.feedburner.com/~ff/railsmine?d=dnMXMwOfBR0" border="0"&gt;&lt;/img&gt;&lt;/a&gt; &lt;a href="http://feeds.feedburner.com/~ff/railsmine?a=ZiPlpVBD99M:ryyFQCPLhtQ:YwkR-u9nhCs"&gt;&lt;img src="http://feeds.feedburner.com/~ff/railsmine?d=YwkR-u9nhCs" border="0"&gt;&lt;/img&gt;&lt;/a&gt; &lt;a href="http://feeds.feedburner.com/~ff/railsmine?a=ZiPlpVBD99M:ryyFQCPLhtQ:F7zBnMyn0Lo"&gt;&lt;img src="http://feeds.feedburner.com/~ff/railsmine?i=ZiPlpVBD99M:ryyFQCPLhtQ:F7zBnMyn0Lo" border="0"&gt;&lt;/img&gt;&lt;/a&gt; &lt;a href="http://feeds.feedburner.com/~ff/railsmine?a=ZiPlpVBD99M:ryyFQCPLhtQ:V_sGLiPBpWU"&gt;&lt;img src="http://feeds.feedburner.com/~ff/railsmine?i=ZiPlpVBD99M:ryyFQCPLhtQ:V_sGLiPBpWU" border="0"&gt;&lt;/img&gt;&lt;/a&gt; &lt;a href="http://feeds.feedburner.com/~ff/railsmine?a=ZiPlpVBD99M:ryyFQCPLhtQ:qj6IDK7rITs"&gt;&lt;img src="http://feeds.feedburner.com/~ff/railsmine?d=qj6IDK7rITs" border="0"&gt;&lt;/img&gt;&lt;/a&gt; &lt;a href="http://feeds.feedburner.com/~ff/railsmine?a=ZiPlpVBD99M:ryyFQCPLhtQ:KwTdNBX3Jqk"&gt;&lt;img src="http://feeds.feedburner.com/~ff/railsmine?i=ZiPlpVBD99M:ryyFQCPLhtQ:KwTdNBX3Jqk" border="0"&gt;&lt;/img&gt;&lt;/a&gt; &lt;a href="http://feeds.feedburner.com/~ff/railsmine?a=ZiPlpVBD99M:ryyFQCPLhtQ:gIN9vFwOqvQ"&gt;&lt;img src="http://feeds.feedburner.com/~ff/railsmine?i=ZiPlpVBD99M:ryyFQCPLhtQ:gIN9vFwOqvQ" border="0"&gt;&lt;/img&gt;&lt;/a&gt; &lt;a href="http://feeds.feedburner.com/~ff/railsmine?a=ZiPlpVBD99M:ryyFQCPLhtQ:TzevzKxY174"&gt;&lt;img src="http://feeds.feedburner.com/~ff/railsmine?d=TzevzKxY174" border="0"&gt;&lt;/img&gt;&lt;/a&gt;
&lt;/div&gt;</description><link>http://www.railsmine.net/2010/04/tips-select-sebuah-kolom-active-record.html</link><author>noreply@blogger.com (Kunto Aji Kristianto)</author><thr:total>0</thr:total><creativeCommons:license>http://creativecommons.org/licenses/by-nc-nd/3.0/</creativeCommons:license></item><item><guid isPermaLink="false">tag:blogger.com,1999:blog-664110592797971793.post-6014788573138313900</guid><pubDate>Thu, 29 Apr 2010 00:17:00 +0000</pubDate><atom:updated>2010-04-29T07:18:16.242+07:00</atom:updated><category domain="http://www.blogger.com/atom/ns#">ruby on rails</category><category domain="http://www.blogger.com/atom/ns#">gems</category><category domain="http://www.blogger.com/atom/ns#">tutorial</category><category domain="http://www.blogger.com/atom/ns#">rails 3</category><title>Mongoid, MongoDB, &amp; Rails 3</title><description>Gem &lt;a href="http://github.com/durran/mongoid"&gt;Mongoid&lt;/a&gt; merupakan &lt;i&gt;driver&lt;/i&gt; yang memungkinkan untuk menyimpan dan melakukan &lt;i&gt;query document&lt;/i&gt; dalam &lt;a href="http://www.mongodb.org/"&gt;MongoDB&lt;/a&gt;. Dibandingkan dengan driver MongoDB yang lain, Mongoid telah dioptimasi saat menggunakan data berukuran besar dan telah mendukung Rails 3.&lt;br /&gt;
&lt;a name='more'&gt;&lt;/a&gt;&lt;br /&gt;
&lt;b&gt;Instalasi&lt;/b&gt;&lt;br /&gt;
Perlu diingat, ada baiknya lakukan &lt;a href="http://www.mongodb.org/display/DOCS/Downloads"&gt;download&lt;/a&gt; &amp; instalasi MongoDB terlebih dahulu, kemudian jalankan MongoDB.&lt;br /&gt;
&lt;pre class="brush: plain"&gt;tar xvzf mongodb-linux-i686-1.4.0.tgz
cd mongodb-linux-i686-1.4.0
sudo ./mongod --dbpath=/my/storage/path
&lt;/pre&gt;&lt;pre class="brush: plain"&gt;rails my_rails3_app
cd my_rails3_app
&lt;/pre&gt;&lt;pre class="brush: ruby"&gt;# Gemfile
gem "mongoid"
gem "bson_ext"
&lt;/pre&gt;&lt;br /&gt;
&lt;b&gt;Generate config/mongoid.yml&lt;/b&gt;&lt;pre class="brush: plain"&gt;rails generate mongoid:config&lt;/pre&gt;perintah diatas akan menghasilkan file mongoid.yml di dalam direktori config. File tersebut berisi konfigurasi default Mongoid.&lt;br /&gt;
&lt;br /&gt;
&lt;b&gt;Selesai&lt;/b&gt;&lt;br /&gt;
Untuk melakukan testing, dapat melalui rails console dan untuk informasi lebih lanjut mengenai Mongoid, dapat dibaca melalui &lt;a href="http://mongoid.org/"&gt;http://mongoid.org/&lt;/a&gt;&lt;div class="blogger-post-footer"&gt;&lt;a href="http://www.launchbit.com/az/115-212/"&gt;&lt;img width="468" height="60" src="http://www.launchbit.com/az-images/115-212/" /&gt;&lt;/a&gt;&lt;br /&gt;
&lt;small&gt;(Powered by &lt;a href="http://www.launchbit.com/lb/115-212/"&gt;LaunchBit&lt;/a&gt;)&lt;/small&gt;&lt;img width='1' height='1' src='https://blogger.googleusercontent.com/tracker/664110592797971793-6014788573138313900?l=www.railsmine.net' alt='' /&gt;&lt;/div&gt;
&lt;p&gt;&lt;a href="http://feedads.g.doubleclick.net/~a/z8L55fZtZZjJ64rr_MHsOERiarU/0/da"&gt;&lt;img src="http://feedads.g.doubleclick.net/~a/z8L55fZtZZjJ64rr_MHsOERiarU/0/di" border="0" ismap="true"&gt;&lt;/img&gt;&lt;/a&gt;&lt;br/&gt;
&lt;a href="http://feedads.g.doubleclick.net/~a/z8L55fZtZZjJ64rr_MHsOERiarU/1/da"&gt;&lt;img src="http://feedads.g.doubleclick.net/~a/z8L55fZtZZjJ64rr_MHsOERiarU/1/di" border="0" ismap="true"&gt;&lt;/img&gt;&lt;/a&gt;&lt;/p&gt;&lt;div class="feedflare"&gt;
&lt;a href="http://feeds.feedburner.com/~ff/railsmine?a=Tccwc8HdckE:mklkPvKdOfU:yIl2AUoC8zA"&gt;&lt;img src="http://feeds.feedburner.com/~ff/railsmine?d=yIl2AUoC8zA" border="0"&gt;&lt;/img&gt;&lt;/a&gt; &lt;a href="http://feeds.feedburner.com/~ff/railsmine?a=Tccwc8HdckE:mklkPvKdOfU:63t7Ie-LG7Y"&gt;&lt;img src="http://feeds.feedburner.com/~ff/railsmine?d=63t7Ie-LG7Y" border="0"&gt;&lt;/img&gt;&lt;/a&gt; &lt;a href="http://feeds.feedburner.com/~ff/railsmine?a=Tccwc8HdckE:mklkPvKdOfU:dnMXMwOfBR0"&gt;&lt;img src="http://feeds.feedburner.com/~ff/railsmine?d=dnMXMwOfBR0" border="0"&gt;&lt;/img&gt;&lt;/a&gt; &lt;a href="http://feeds.feedburner.com/~ff/railsmine?a=Tccwc8HdckE:mklkPvKdOfU:YwkR-u9nhCs"&gt;&lt;img src="http://feeds.feedburner.com/~ff/railsmine?d=YwkR-u9nhCs" border="0"&gt;&lt;/img&gt;&lt;/a&gt; &lt;a href="http://feeds.feedburner.com/~ff/railsmine?a=Tccwc8HdckE:mklkPvKdOfU:F7zBnMyn0Lo"&gt;&lt;img src="http://feeds.feedburner.com/~ff/railsmine?i=Tccwc8HdckE:mklkPvKdOfU:F7zBnMyn0Lo" border="0"&gt;&lt;/img&gt;&lt;/a&gt; &lt;a href="http://feeds.feedburner.com/~ff/railsmine?a=Tccwc8HdckE:mklkPvKdOfU:V_sGLiPBpWU"&gt;&lt;img src="http://feeds.feedburner.com/~ff/railsmine?i=Tccwc8HdckE:mklkPvKdOfU:V_sGLiPBpWU" border="0"&gt;&lt;/img&gt;&lt;/a&gt; &lt;a href="http://feeds.feedburner.com/~ff/railsmine?a=Tccwc8HdckE:mklkPvKdOfU:qj6IDK7rITs"&gt;&lt;img src="http://feeds.feedburner.com/~ff/railsmine?d=qj6IDK7rITs" border="0"&gt;&lt;/img&gt;&lt;/a&gt; &lt;a href="http://feeds.feedburner.com/~ff/railsmine?a=Tccwc8HdckE:mklkPvKdOfU:KwTdNBX3Jqk"&gt;&lt;img src="http://feeds.feedburner.com/~ff/railsmine?i=Tccwc8HdckE:mklkPvKdOfU:KwTdNBX3Jqk" border="0"&gt;&lt;/img&gt;&lt;/a&gt; &lt;a href="http://feeds.feedburner.com/~ff/railsmine?a=Tccwc8HdckE:mklkPvKdOfU:gIN9vFwOqvQ"&gt;&lt;img src="http://feeds.feedburner.com/~ff/railsmine?i=Tccwc8HdckE:mklkPvKdOfU:gIN9vFwOqvQ" border="0"&gt;&lt;/img&gt;&lt;/a&gt; &lt;a href="http://feeds.feedburner.com/~ff/railsmine?a=Tccwc8HdckE:mklkPvKdOfU:TzevzKxY174"&gt;&lt;img src="http://feeds.feedburner.com/~ff/railsmine?d=TzevzKxY174" border="0"&gt;&lt;/img&gt;&lt;/a&gt;
&lt;/div&gt;</description><link>http://www.railsmine.net/2010/04/mongoid-mongodb-rails-3.html</link><author>noreply@blogger.com (Kunto Aji Kristianto)</author><thr:total>0</thr:total><creativeCommons:license>http://creativecommons.org/licenses/by-nc-nd/3.0/</creativeCommons:license></item><item><guid isPermaLink="false">tag:blogger.com,1999:blog-664110592797971793.post-992465763804577789</guid><pubDate>Wed, 28 Apr 2010 00:53:00 +0000</pubDate><atom:updated>2010-04-28T07:55:36.916+07:00</atom:updated><category domain="http://www.blogger.com/atom/ns#">intermezzo</category><title>ruby, java, python, perl, php Job Trends</title><description>&lt;div style="width:490px"&gt;&lt;a href="http://www.indeed.com/jobtrends?q=ruby%2C+java%2C+python%2C+perl%2C+php&amp;relative=1&amp;relative=1" title="ruby, java, python, perl, php Job Trends"&gt;&lt;br /&gt;
&lt;img width="490" height="300" src="http://www.indeed.com/trendgraph/jobgraph.png?q=ruby%2C+java%2C+python%2C+perl%2C+php&amp;relative=1" border="0" alt="ruby, java, python, perl, php Job Trends graph"&gt;&lt;br /&gt;
&lt;/a&gt;&lt;br /&gt;
&lt;table width="100%" cellpadding="6" cellspacing="0" border="0" style="font-size:80%"&gt;&lt;tr&gt;
&lt;td&gt;&lt;a href="http://www.indeed.com/jobtrends?q=ruby%2C+java%2C+python%2C+perl%2C+php&amp;relative=1&amp;relative=1"&gt;ruby, java, python, perl, php Job Trends&lt;/a&gt;&lt;/td&gt;
&lt;td align="right"&gt;&lt;a href="http://www.indeed.com/q-Ruby-jobs.html"&gt;Ruby jobs&lt;/a&gt; - &lt;a href="http://www.indeed.com/q-Java-jobs.html"&gt;Java jobs&lt;/a&gt; - &lt;a href="http://www.indeed.com/q-Python-jobs.html"&gt;Python jobs&lt;/a&gt; - &lt;a href="http://www.indeed.com/q-Perl-jobs.html"&gt;Perl jobs&lt;/a&gt; - &lt;a href="http://www.indeed.com/q-PHP-jobs.html"&gt;PHP jobs&lt;/a&gt;&lt;/td&gt;
&lt;/tr&gt;&lt;/table&gt;&lt;/div&gt;&lt;div class="blogger-post-footer"&gt;&lt;a href="http://www.launchbit.com/az/115-212/"&gt;&lt;img width="468" height="60" src="http://www.launchbit.com/az-images/115-212/" /&gt;&lt;/a&gt;&lt;br /&gt;
&lt;small&gt;(Powered by &lt;a href="http://www.launchbit.com/lb/115-212/"&gt;LaunchBit&lt;/a&gt;)&lt;/small&gt;&lt;img width='1' height='1' src='https://blogger.googleusercontent.com/tracker/664110592797971793-992465763804577789?l=www.railsmine.net' alt='' /&gt;&lt;/div&gt;
&lt;p&gt;&lt;a href="http://feedads.g.doubleclick.net/~a/DByi8yOwH13h-9PhvvWoz7VpX2U/0/da"&gt;&lt;img src="http://feedads.g.doubleclick.net/~a/DByi8yOwH13h-9PhvvWoz7VpX2U/0/di" border="0" ismap="true"&gt;&lt;/img&gt;&lt;/a&gt;&lt;br/&gt;
&lt;a href="http://feedads.g.doubleclick.net/~a/DByi8yOwH13h-9PhvvWoz7VpX2U/1/da"&gt;&lt;img src="http://feedads.g.doubleclick.net/~a/DByi8yOwH13h-9PhvvWoz7VpX2U/1/di" border="0" ismap="true"&gt;&lt;/img&gt;&lt;/a&gt;&lt;/p&gt;&lt;div class="feedflare"&gt;
&lt;a href="http://feeds.feedburner.com/~ff/railsmine?a=-TmcbqTIVyI:F8A0cXhuMd4:yIl2AUoC8zA"&gt;&lt;img src="http://feeds.feedburner.com/~ff/railsmine?d=yIl2AUoC8zA" border="0"&gt;&lt;/img&gt;&lt;/a&gt; &lt;a href="http://feeds.feedburner.com/~ff/railsmine?a=-TmcbqTIVyI:F8A0cXhuMd4:63t7Ie-LG7Y"&gt;&lt;img src="http://feeds.feedburner.com/~ff/railsmine?d=63t7Ie-LG7Y" border="0"&gt;&lt;/img&gt;&lt;/a&gt; &lt;a href="http://feeds.feedburner.com/~ff/railsmine?a=-TmcbqTIVyI:F8A0cXhuMd4:dnMXMwOfBR0"&gt;&lt;img src="http://feeds.feedburner.com/~ff/railsmine?d=dnMXMwOfBR0" border="0"&gt;&lt;/img&gt;&lt;/a&gt; &lt;a href="http://feeds.feedburner.com/~ff/railsmine?a=-TmcbqTIVyI:F8A0cXhuMd4:YwkR-u9nhCs"&gt;&lt;img src="http://feeds.feedburner.com/~ff/railsmine?d=YwkR-u9nhCs" border="0"&gt;&lt;/img&gt;&lt;/a&gt; &lt;a href="http://feeds.feedburner.com/~ff/railsmine?a=-TmcbqTIVyI:F8A0cXhuMd4:F7zBnMyn0Lo"&gt;&lt;img src="http://feeds.feedburner.com/~ff/railsmine?i=-TmcbqTIVyI:F8A0cXhuMd4:F7zBnMyn0Lo" border="0"&gt;&lt;/img&gt;&lt;/a&gt; &lt;a href="http://feeds.feedburner.com/~ff/railsmine?a=-TmcbqTIVyI:F8A0cXhuMd4:V_sGLiPBpWU"&gt;&lt;img src="http://feeds.feedburner.com/~ff/railsmine?i=-TmcbqTIVyI:F8A0cXhuMd4:V_sGLiPBpWU" border="0"&gt;&lt;/img&gt;&lt;/a&gt; &lt;a href="http://feeds.feedburner.com/~ff/railsmine?a=-TmcbqTIVyI:F8A0cXhuMd4:qj6IDK7rITs"&gt;&lt;img src="http://feeds.feedburner.com/~ff/railsmine?d=qj6IDK7rITs" border="0"&gt;&lt;/img&gt;&lt;/a&gt; &lt;a href="http://feeds.feedburner.com/~ff/railsmine?a=-TmcbqTIVyI:F8A0cXhuMd4:KwTdNBX3Jqk"&gt;&lt;img src="http://feeds.feedburner.com/~ff/railsmine?i=-TmcbqTIVyI:F8A0cXhuMd4:KwTdNBX3Jqk" border="0"&gt;&lt;/img&gt;&lt;/a&gt; &lt;a href="http://feeds.feedburner.com/~ff/railsmine?a=-TmcbqTIVyI:F8A0cXhuMd4:gIN9vFwOqvQ"&gt;&lt;img src="http://feeds.feedburner.com/~ff/railsmine?i=-TmcbqTIVyI:F8A0cXhuMd4:gIN9vFwOqvQ" border="0"&gt;&lt;/img&gt;&lt;/a&gt; &lt;a href="http://feeds.feedburner.com/~ff/railsmine?a=-TmcbqTIVyI:F8A0cXhuMd4:TzevzKxY174"&gt;&lt;img src="http://feeds.feedburner.com/~ff/railsmine?d=TzevzKxY174" border="0"&gt;&lt;/img&gt;&lt;/a&gt;
&lt;/div&gt;</description><link>http://www.railsmine.net/2010/04/ruby-java-python-perl-php-job-trends.html</link><author>noreply@blogger.com (Kunto Aji Kristianto)</author><thr:total>1</thr:total><creativeCommons:license>http://creativecommons.org/licenses/by-nc-nd/3.0/</creativeCommons:license></item><item><guid isPermaLink="false">tag:blogger.com,1999:blog-664110592797971793.post-210680306401904977</guid><pubDate>Thu, 22 Apr 2010 00:55:00 +0000</pubDate><atom:updated>2010-04-22T07:55:05.948+07:00</atom:updated><category domain="http://www.blogger.com/atom/ns#">ruby</category><category domain="http://www.blogger.com/atom/ns#">gems</category><title>Gist Client</title><description>&lt;a href="http://github.com/"&gt;Github&lt;/a&gt; baru saja meluncurkan ruby gem yang bernama &lt;a href="http://github.com/defunkt/gist"&gt;gist&lt;/a&gt;. Sesuai namanya, gem tersebut merupakan client gist agar memudahkan pengguna github membuat &lt;a href="http://gist.github.com/"&gt;gist&lt;/a&gt;. Untuk yang belum mengetahui apa itu gist, gist adalah tempat untuk melakukan paste kode sehingga mudah untuk berbagi dengan yang lain seperti situs pastie.org dan pastebin.com. Perbedaan utama gist dengan kedua situs yang disebutkan adalah gist menggunakan source code management git, sehingga memungkinkan untuk dilakukan &lt;i&gt;forking&lt;/i&gt; dan &lt;i&gt;versioning.&lt;/i&gt;&lt;br /&gt;
&lt;a name='more'&gt;&lt;/a&gt;&lt;br /&gt;
&lt;b&gt;Instalasi&lt;/b&gt;&lt;br /&gt;
&lt;pre class="brush: plain"&gt;root@slacky:~#gem install gist
&lt;/pre&gt;&lt;br /&gt;
&lt;b&gt;Konfigurasi&lt;/b&gt;&lt;br /&gt;
&lt;pre class="brush: plain"&gt;aji@slacky:~$git config --global github.user "your-github-username"
aji@slacky:~$git config --global github.token "your-github-token"
&lt;/pre&gt;Token bisa diperoleh melalui github account anda.&lt;br /&gt;
&lt;br /&gt;
&lt;b&gt;Contoh Penggunaan&lt;/b&gt;&lt;br /&gt;
&lt;pre class="brush: plain"&gt;aji@slacky:~$gist user_session.rb

aji@slacky:~$echo "puts 'hello world with gist client'" | gist -t rb
&lt;/pre&gt;&lt;div class="blogger-post-footer"&gt;&lt;a href="http://www.launchbit.com/az/115-212/"&gt;&lt;img width="468" height="60" src="http://www.launchbit.com/az-images/115-212/" /&gt;&lt;/a&gt;&lt;br /&gt;
&lt;small&gt;(Powered by &lt;a href="http://www.launchbit.com/lb/115-212/"&gt;LaunchBit&lt;/a&gt;)&lt;/small&gt;&lt;img width='1' height='1' src='https://blogger.googleusercontent.com/tracker/664110592797971793-210680306401904977?l=www.railsmine.net' alt='' /&gt;&lt;/div&gt;
&lt;p&gt;&lt;a href="http://feedads.g.doubleclick.net/~a/V8PNkt5c8wNOb94VwIO2SywlI7I/0/da"&gt;&lt;img src="http://feedads.g.doubleclick.net/~a/V8PNkt5c8wNOb94VwIO2SywlI7I/0/di" border="0" ismap="true"&gt;&lt;/img&gt;&lt;/a&gt;&lt;br/&gt;
&lt;a href="http://feedads.g.doubleclick.net/~a/V8PNkt5c8wNOb94VwIO2SywlI7I/1/da"&gt;&lt;img src="http://feedads.g.doubleclick.net/~a/V8PNkt5c8wNOb94VwIO2SywlI7I/1/di" border="0" ismap="true"&gt;&lt;/img&gt;&lt;/a&gt;&lt;/p&gt;&lt;div class="feedflare"&gt;
&lt;a href="http://feeds.feedburner.com/~ff/railsmine?a=qvw3W1qtvXQ:1298ajFv9Ds:yIl2AUoC8zA"&gt;&lt;img src="http://feeds.feedburner.com/~ff/railsmine?d=yIl2AUoC8zA" border="0"&gt;&lt;/img&gt;&lt;/a&gt; &lt;a href="http://feeds.feedburner.com/~ff/railsmine?a=qvw3W1qtvXQ:1298ajFv9Ds:63t7Ie-LG7Y"&gt;&lt;img src="http://feeds.feedburner.com/~ff/railsmine?d=63t7Ie-LG7Y" border="0"&gt;&lt;/img&gt;&lt;/a&gt; &lt;a href="http://feeds.feedburner.com/~ff/railsmine?a=qvw3W1qtvXQ:1298ajFv9Ds:dnMXMwOfBR0"&gt;&lt;img src="http://feeds.feedburner.com/~ff/railsmine?d=dnMXMwOfBR0" border="0"&gt;&lt;/img&gt;&lt;/a&gt; &lt;a href="http://feeds.feedburner.com/~ff/railsmine?a=qvw3W1qtvXQ:1298ajFv9Ds:YwkR-u9nhCs"&gt;&lt;img src="http://feeds.feedburner.com/~ff/railsmine?d=YwkR-u9nhCs" border="0"&gt;&lt;/img&gt;&lt;/a&gt; &lt;a href="http://feeds.feedburner.com/~ff/railsmine?a=qvw3W1qtvXQ:1298ajFv9Ds:F7zBnMyn0Lo"&gt;&lt;img src="http://feeds.feedburner.com/~ff/railsmine?i=qvw3W1qtvXQ:1298ajFv9Ds:F7zBnMyn0Lo" border="0"&gt;&lt;/img&gt;&lt;/a&gt; &lt;a href="http://feeds.feedburner.com/~ff/railsmine?a=qvw3W1qtvXQ:1298ajFv9Ds:V_sGLiPBpWU"&gt;&lt;img src="http://feeds.feedburner.com/~ff/railsmine?i=qvw3W1qtvXQ:1298ajFv9Ds:V_sGLiPBpWU" border="0"&gt;&lt;/img&gt;&lt;/a&gt; &lt;a href="http://feeds.feedburner.com/~ff/railsmine?a=qvw3W1qtvXQ:1298ajFv9Ds:qj6IDK7rITs"&gt;&lt;img src="http://feeds.feedburner.com/~ff/railsmine?d=qj6IDK7rITs" border="0"&gt;&lt;/img&gt;&lt;/a&gt; &lt;a href="http://feeds.feedburner.com/~ff/railsmine?a=qvw3W1qtvXQ:1298ajFv9Ds:KwTdNBX3Jqk"&gt;&lt;img src="http://feeds.feedburner.com/~ff/railsmine?i=qvw3W1qtvXQ:1298ajFv9Ds:KwTdNBX3Jqk" border="0"&gt;&lt;/img&gt;&lt;/a&gt; &lt;a href="http://feeds.feedburner.com/~ff/railsmine?a=qvw3W1qtvXQ:1298ajFv9Ds:gIN9vFwOqvQ"&gt;&lt;img src="http://feeds.feedburner.com/~ff/railsmine?i=qvw3W1qtvXQ:1298ajFv9Ds:gIN9vFwOqvQ" border="0"&gt;&lt;/img&gt;&lt;/a&gt; &lt;a href="http://feeds.feedburner.com/~ff/railsmine?a=qvw3W1qtvXQ:1298ajFv9Ds:TzevzKxY174"&gt;&lt;img src="http://feeds.feedburner.com/~ff/railsmine?d=TzevzKxY174" border="0"&gt;&lt;/img&gt;&lt;/a&gt;
&lt;/div&gt;</description><link>http://www.railsmine.net/2010/04/gist-client.html</link><author>noreply@blogger.com (Kunto Aji Kristianto)</author><thr:total>0</thr:total><creativeCommons:license>http://creativecommons.org/licenses/by-nc-nd/3.0/</creativeCommons:license></item></channel></rss>

