<?xml version='1.0' encoding='UTF-8'?><?xml-stylesheet href="http://www.blogger.com/styles/atom.css" type="text/css"?><feed xmlns='http://www.w3.org/2005/Atom' xmlns:openSearch='http://a9.com/-/spec/opensearchrss/1.0/' xmlns:georss='http://www.georss.org/georss' xmlns:gd='http://schemas.google.com/g/2005' xmlns:thr='http://purl.org/syndication/thread/1.0'><id>tag:blogger.com,1999:blog-21184031</id><updated>2011-12-14T19:01:48.774-08:00</updated><category term='ruby'/><category term='xml'/><category term='rexml'/><category term='libxml'/><category term='hpricot'/><category term='twitter'/><category term='delicious'/><category term='rails'/><category term='tutorial'/><title type='text'>Ruby on Rails</title><subtitle type='html'></subtitle><link rel='http://schemas.google.com/g/2005#feed' type='application/atom+xml' href='http://railsruby.blogspot.com/feeds/posts/default'/><link rel='self' type='application/atom+xml' href='http://www.blogger.com/feeds/21184031/posts/default?max-results=100'/><link rel='alternate' type='text/html' href='http://railsruby.blogspot.com/'/><link rel='hub' href='http://pubsubhubbub.appspot.com/'/><author><name>Frank</name><email>noreply@blogger.com</email><gd:image rel='http://schemas.google.com/g/2005#thumbnail' width='16' height='16' src='http://img2.blogblog.com/img/b16-rounded.gif'/></author><generator version='7.00' uri='http://www.blogger.com'>Blogger</generator><openSearch:totalResults>88</openSearch:totalResults><openSearch:startIndex>1</openSearch:startIndex><openSearch:itemsPerPage>100</openSearch:itemsPerPage><entry><id>tag:blogger.com,1999:blog-21184031.post-7823381223199331212</id><published>2008-08-16T20:25:00.000-07:00</published><updated>2008-08-16T20:47:26.030-07:00</updated><category scheme='http://www.blogger.com/atom/ns#' term='ruby'/><category scheme='http://www.blogger.com/atom/ns#' term='delicious'/><category scheme='http://www.blogger.com/atom/ns#' term='libxml'/><category scheme='http://www.blogger.com/atom/ns#' term='rexml'/><category scheme='http://www.blogger.com/atom/ns#' term='hpricot'/><category scheme='http://www.blogger.com/atom/ns#' term='rails'/><category scheme='http://www.blogger.com/atom/ns#' term='xml'/><category scheme='http://www.blogger.com/atom/ns#' term='tutorial'/><category scheme='http://www.blogger.com/atom/ns#' term='twitter'/><title type='text'>Rails Tutorials</title><content type='html'>Here are a few beginner tutorial about Ruby on Rails:&lt;br /&gt;&lt;br /&gt;&lt;ul&gt;&lt;li&gt;&lt;a href="http://wiki.rubyonrails.org/rails/pages/Beginner+Howto+on+has_many+:through"&gt;has_many :through tutorial&lt;/a&gt; by byrnejb: "What I want to do is have three tables: movies, dancers and their join table that I called dancer_movies. The main goal of this exercise is to be able to add dancers directly via a drop down that lists all dancers from the database (and the number of dances they appeared in in that movie) when creating a new movie entry."&lt;/li&gt;&lt;li&gt;&lt;a href="http://www.tutorialspoint.com/ruby-on-rails-2.1/index.htm"&gt;Rails 2.1 Tutorial&lt;/a&gt; by Tutorials Point.&lt;/li&gt;&lt;li&gt;&lt;a href="http://wiki.rubyonrails.org/rails/pages/Tutorial"&gt;Ruby on Rails Tutorial&lt;/a&gt; on Rails Wiki to get a basic Rails application running.&lt;/li&gt;&lt;li&gt;Tutorial on using the &lt;a href="http://www.kitebird.com/articles/ruby-mysql.html"&gt;Ruby MySQL&lt;/a&gt; Module by Paul Dubois.&lt;/li&gt;&lt;li&gt;&lt;a href="http://thebogles.com/blog/an-hpricot-style-interface-to-libxml/"&gt;Hpricot interface to using Libxml&lt;/a&gt;. Hpricot is a user friendly XML parser for Ruby but Libxml is blazing fast. This tutorial shows how you can implement a hpricot like interface to using libxml.&lt;/li&gt;&lt;li&gt;&lt;a href="http://railstips.org/2008/8/12/parsing-xml-with-ruby"&gt;Parsing XML with Ruby&lt;/a&gt;: This tutorial by John Nunemaker shows how you can parse XML using &lt;a href="http://code.whytheluckystiff.net/hpricot/"&gt;Hpricot&lt;/a&gt;, &lt;a href="http://libxml.rubyforge.org/"&gt;libxml&lt;/a&gt; and &lt;a href="http://www.germane-software.com/software/rexml/"&gt;REXML&lt;/a&gt;. Example parsing of Twitter and Del.icio.us feeds is shows.&lt;/li&gt;&lt;li&gt;&lt;a href="http://www.germane-software.com/software/rexml/docs/tutorial.html"&gt;REXML tutorial&lt;/a&gt; for parsing XML&lt;/li&gt;&lt;li&gt;&lt;a href="http://developer.yahoo.com/ruby/ruby-xml.html"&gt;Parsing XML using Ruby&lt;/a&gt;: A tutorial by Yahoo&lt;br /&gt;&lt;/li&gt;&lt;/ul&gt;&lt;div class="blogger-post-footer"&gt;&lt;img width='1' height='1' src='https://blogger.googleusercontent.com/tracker/21184031-7823381223199331212?l=railsruby.blogspot.com' alt='' /&gt;&lt;/div&gt;</content><link rel='replies' type='application/atom+xml' href='http://railsruby.blogspot.com/feeds/7823381223199331212/comments/default' title='Post Comments'/><link rel='replies' type='text/html' href='http://www.blogger.com/comment.g?blogID=21184031&amp;postID=7823381223199331212' title='42 Comments'/><link rel='edit' type='application/atom+xml' href='http://www.blogger.com/feeds/21184031/posts/default/7823381223199331212'/><link rel='self' type='application/atom+xml' href='http://www.blogger.com/feeds/21184031/posts/default/7823381223199331212'/><link rel='alternate' type='text/html' href='http://railsruby.blogspot.com/2008/08/rails-tutorials.html' title='Rails Tutorials'/><author><name>Frank</name><email>noreply@blogger.com</email><gd:image rel='http://schemas.google.com/g/2005#thumbnail' width='16' height='16' src='http://img2.blogblog.com/img/b16-rounded.gif'/></author><thr:total>42</thr:total></entry><entry><id>tag:blogger.com,1999:blog-21184031.post-2589451651575282160</id><published>2008-08-16T20:07:00.000-07:00</published><updated>2008-08-16T20:21:20.181-07:00</updated><category scheme='http://www.blogger.com/atom/ns#' term='ruby'/><category scheme='http://www.blogger.com/atom/ns#' term='rails'/><title type='text'>Back to Ruby</title><content type='html'>My apologies to readers of this blog for not posting on this blog for more than a year. Since June 2006, I was working for the 13th largest website in the world (based on traffic) with more than 4 billion page views a month. There was little to no use of Ruby at my previous employment as it was primarily a Java shop. I gained a lot of scalability experience working for them. In July of this year, I left my job to join a very promising new startup that's working on a disruptive technology (more on this later).&lt;br /&gt;&lt;br /&gt;One of the good things about my new job is that we are primarily a Ruby shop, so you can definitely expect more postings :).&lt;div class="blogger-post-footer"&gt;&lt;img width='1' height='1' src='https://blogger.googleusercontent.com/tracker/21184031-2589451651575282160?l=railsruby.blogspot.com' alt='' /&gt;&lt;/div&gt;</content><link rel='replies' type='application/atom+xml' href='http://railsruby.blogspot.com/feeds/2589451651575282160/comments/default' title='Post Comments'/><link rel='replies' type='text/html' href='http://www.blogger.com/comment.g?blogID=21184031&amp;postID=2589451651575282160' title='1 Comments'/><link rel='edit' type='application/atom+xml' href='http://www.blogger.com/feeds/21184031/posts/default/2589451651575282160'/><link rel='self' type='application/atom+xml' href='http://www.blogger.com/feeds/21184031/posts/default/2589451651575282160'/><link rel='alternate' type='text/html' href='http://railsruby.blogspot.com/2008/08/back-to-ruby.html' title='Back to Ruby'/><author><name>Frank</name><email>noreply@blogger.com</email><gd:image rel='http://schemas.google.com/g/2005#thumbnail' width='16' height='16' src='http://img2.blogblog.com/img/b16-rounded.gif'/></author><thr:total>1</thr:total></entry><entry><id>tag:blogger.com,1999:blog-21184031.post-116536911035988043</id><published>2006-12-05T17:37:00.000-08:00</published><updated>2006-12-05T17:38:30.360-08:00</updated><title type='text'>Displaying a Textarea field</title><content type='html'>Use the following in your views to add a text area control.&lt;br /&gt;&lt;pre&gt;text_area 'portal', 'portal_description' , :rows=&gt;4, :cols=&gt;40 &lt;/pre&gt;&lt;div class="blogger-post-footer"&gt;&lt;img width='1' height='1' src='https://blogger.googleusercontent.com/tracker/21184031-116536911035988043?l=railsruby.blogspot.com' alt='' /&gt;&lt;/div&gt;</content><link rel='replies' type='application/atom+xml' href='http://railsruby.blogspot.com/feeds/116536911035988043/comments/default' title='Post Comments'/><link rel='replies' type='text/html' href='http://www.blogger.com/comment.g?blogID=21184031&amp;postID=116536911035988043' title='6 Comments'/><link rel='edit' type='application/atom+xml' href='http://www.blogger.com/feeds/21184031/posts/default/116536911035988043'/><link rel='self' type='application/atom+xml' href='http://www.blogger.com/feeds/21184031/posts/default/116536911035988043'/><link rel='alternate' type='text/html' href='http://railsruby.blogspot.com/2006/12/displaying-textarea-field.html' title='Displaying a Textarea field'/><author><name>Frank</name><email>noreply@blogger.com</email><gd:image rel='http://schemas.google.com/g/2005#thumbnail' width='16' height='16' src='http://img2.blogblog.com/img/b16-rounded.gif'/></author><thr:total>6</thr:total></entry><entry><id>tag:blogger.com,1999:blog-21184031.post-116536891853830259</id><published>2006-12-05T17:31:00.000-08:00</published><updated>2006-12-05T17:35:18.550-08:00</updated><title type='text'>Displaying a DATE TIME field</title><content type='html'>If your column is defined to be &lt;a href="http://dev.mysql.com/doc/mysql/en/datetime.html"&gt;DATETIME&lt;/a&gt;, then you can use the &lt;a href="http://www.rubyonrails.org/api/classes/ActionView/Helpers/DateHelper.html"&gt;datetime_select&lt;/a&gt; method to display the date/time control.&lt;br /&gt;&lt;br /&gt;&lt;pre&gt;datetime_select 'subscription', 'created_at' &lt;/pre&gt;&lt;br /&gt;&lt;br /&gt;The default date and time values for this control can be specified. See &lt;a href="http://threebit.net/mail-archive/rails/msg00070.html"&gt;setting the default &lt;/a&gt; time for datetime_select.&lt;br /&gt;&lt;br /&gt;For more information see &lt;a href="http://railsmanual.com/module/ActionView::Helpers::DateHelper/datetime_select"&gt;datetime_select&lt;/a&gt; manual page.&lt;div class="blogger-post-footer"&gt;&lt;img width='1' height='1' src='https://blogger.googleusercontent.com/tracker/21184031-116536891853830259?l=railsruby.blogspot.com' alt='' /&gt;&lt;/div&gt;</content><link rel='replies' type='application/atom+xml' href='http://railsruby.blogspot.com/feeds/116536891853830259/comments/default' title='Post Comments'/><link rel='replies' type='text/html' href='http://www.blogger.com/comment.g?blogID=21184031&amp;postID=116536891853830259' title='2 Comments'/><link rel='edit' type='application/atom+xml' href='http://www.blogger.com/feeds/21184031/posts/default/116536891853830259'/><link rel='self' type='application/atom+xml' href='http://www.blogger.com/feeds/21184031/posts/default/116536891853830259'/><link rel='alternate' type='text/html' href='http://railsruby.blogspot.com/2006/12/displaying-date-time-field.html' title='Displaying a DATE TIME field'/><author><name>Frank</name><email>noreply@blogger.com</email><gd:image rel='http://schemas.google.com/g/2005#thumbnail' width='16' height='16' src='http://img2.blogblog.com/img/b16-rounded.gif'/></author><thr:total>2</thr:total></entry><entry><id>tag:blogger.com,1999:blog-21184031.post-116025388909900166</id><published>2006-10-07T13:43:00.000-07:00</published><updated>2006-10-07T13:45:41.976-07:00</updated><title type='text'></title><content type='html'>I wanted to allow a user to type in the address for their community and then instantly inform them whether the address they wanted was available.&lt;br /&gt;&lt;br /&gt;In my controller:&lt;br /&gt;&lt;pre&gt;&lt;br /&gt;        def check_portal_url&lt;br /&gt;        end&lt;br /&gt;&lt;/pre&gt;&lt;br /&gt; &lt;br /&gt;In my view:&lt;br /&gt;&lt;pre&gt;&lt;br /&gt;&lt;%@comm = Portal.find_by_portal_url(@params[:search])   %&gt;&lt;br /&gt;&lt;%if @comm%&gt;&lt;br /&gt;                &lt;span class="unavailable"&gt;&lt;b&gt;&lt;%=@params[:search]%&gt;&lt;/b&gt; is taken, please try a different address.&lt;/span&gt;&lt;br /&gt;&lt;%else%&gt;&lt;br /&gt;                &lt;span class="available"&gt;&lt;b&gt;&lt;%=@params[:search]%&gt;&lt;/b&gt; is available.&lt;/span&gt;&lt;br /&gt;&lt;%end%&gt;&lt;br /&gt;&lt;/pre&gt;&lt;br /&gt;&lt;br /&gt;and in my form&lt;br /&gt;&lt;pre&gt;&lt;br /&gt; &lt;br /&gt;&lt;br /&gt;&lt;%= observe_field(:portal_portal_url,&lt;br /&gt;                 :frequency =&gt; 0.5,&lt;br /&gt;                 :update =&gt; :observe_results,&lt;br /&gt;                 :loading =&gt; "Element.show('spinner')",&lt;br /&gt;                 :complete =&gt; "Element.hide('spinner')",&lt;br /&gt;                 :url =&gt; { :controller=&gt;'ajax',:action =&gt; 'check_portal_url'  },&lt;br /&gt;                :with =&gt; "'search=' + escape(value)"&lt;br /&gt;                ) %&gt;&lt;br /&gt;&lt;br /&gt;&lt;br /&gt; &lt;/pre&gt;&lt;br /&gt;&lt;xmp&gt;&lt;div id="observe_results"&gt;&lt;/div&gt;&lt;/xmp&gt;&lt;br /&gt;In the above, the &lt;pre&gt;                :with =&gt; "'search=' + escape(value)"&lt;/pre&gt;&lt;br /&gt;part is very important as without it, the value of the field will be very hard to access.&lt;div class="blogger-post-footer"&gt;&lt;img width='1' height='1' src='https://blogger.googleusercontent.com/tracker/21184031-116025388909900166?l=railsruby.blogspot.com' alt='' /&gt;&lt;/div&gt;</content><link rel='replies' type='application/atom+xml' href='http://railsruby.blogspot.com/feeds/116025388909900166/comments/default' title='Post Comments'/><link rel='replies' type='text/html' href='http://www.blogger.com/comment.g?blogID=21184031&amp;postID=116025388909900166' title='1 Comments'/><link rel='edit' type='application/atom+xml' href='http://www.blogger.com/feeds/21184031/posts/default/116025388909900166'/><link rel='self' type='application/atom+xml' href='http://www.blogger.com/feeds/21184031/posts/default/116025388909900166'/><link rel='alternate' type='text/html' href='http://railsruby.blogspot.com/2006/10/i-wanted-to-allow-user-to-type-in.html' title=''/><author><name>Frank</name><email>noreply@blogger.com</email><gd:image rel='http://schemas.google.com/g/2005#thumbnail' width='16' height='16' src='http://img2.blogblog.com/img/b16-rounded.gif'/></author><thr:total>1</thr:total></entry><entry><id>tag:blogger.com,1999:blog-21184031.post-115619140640290543</id><published>2006-08-21T13:14:00.000-07:00</published><updated>2006-08-21T13:16:46.403-07:00</updated><title type='text'>LIKE as a condition to get records.</title><content type='html'>Here's a handy tip for Rails beginners: When you need to find records based on a condition that involves the use of LIKE '%value%' (it's going to be very slow since MySQL won't use an index for this query), try something like the following:&lt;br /&gt;&lt;br /&gt;&lt;pre&gt; @records = MyModel.find(:all, :conditions =&gt; ['col LIKE ? ', '%'+@term+'%'],:limit =&gt; 10)&lt;/pre&gt;&lt;div class="blogger-post-footer"&gt;&lt;img width='1' height='1' src='https://blogger.googleusercontent.com/tracker/21184031-115619140640290543?l=railsruby.blogspot.com' alt='' /&gt;&lt;/div&gt;</content><link rel='replies' type='application/atom+xml' href='http://railsruby.blogspot.com/feeds/115619140640290543/comments/default' title='Post Comments'/><link rel='replies' type='text/html' href='http://www.blogger.com/comment.g?blogID=21184031&amp;postID=115619140640290543' title='1 Comments'/><link rel='edit' type='application/atom+xml' href='http://www.blogger.com/feeds/21184031/posts/default/115619140640290543'/><link rel='self' type='application/atom+xml' href='http://www.blogger.com/feeds/21184031/posts/default/115619140640290543'/><link rel='alternate' type='text/html' href='http://railsruby.blogspot.com/2006/08/like-as-condition-to-get-records.html' title='LIKE as a condition to get records.'/><author><name>Frank</name><email>noreply@blogger.com</email><gd:image rel='http://schemas.google.com/g/2005#thumbnail' width='16' height='16' src='http://img2.blogblog.com/img/b16-rounded.gif'/></author><thr:total>1</thr:total></entry><entry><id>tag:blogger.com,1999:blog-21184031.post-115619118846762969</id><published>2006-08-21T13:11:00.000-07:00</published><updated>2006-08-21T13:13:08.486-07:00</updated><title type='text'>Starting Webrick on a different port</title><content type='html'>Often you may need to start webrick on a different port. Luckily, you can do so using the -p options.&lt;br /&gt;&lt;br /&gt;&lt;pre&gt;[root@srv31 ror]# ruby script/server -p 9191&lt;br /&gt;=&gt; Booting WEBrick...&lt;br /&gt;=&gt; Rails application started on http://0.0.0.0:9191&lt;br /&gt;=&gt; Ctrl-C to shutdown server; call with --help for options&lt;br /&gt;[2006-08-21 13:45:37] INFO  WEBrick 1.3.1&lt;br /&gt;[2006-08-21 13:45:37] INFO  ruby 1.8.4 (2005-12-24) [i686-linux]&lt;br /&gt;[2006-08-21 13:45:37] INFO  WEBrick::HTTPServer#start: pid=4812 port=9191&lt;br /&gt;&lt;/pre&gt;&lt;br /&gt;&lt;br /&gt;For more help options use the --help option:&lt;br /&gt;&lt;br /&gt;&lt;pre&gt;[root@srv31 ror]# ruby script/server --help&lt;br /&gt;=&gt; Booting WEBrick...&lt;br /&gt;Usage: ruby server [options]&lt;br /&gt;&lt;br /&gt;    -p, --port=port                  Runs Rails on the specified port.&lt;br /&gt;                                     Default: 3000&lt;br /&gt;    -b, --binding=ip                 Binds Rails to the specified ip.&lt;br /&gt;                                     Default: 0.0.0.0&lt;br /&gt;    -e, --environment=name           Specifies the environment to run this server under (test/development/production).&lt;br /&gt;                                     Default: development&lt;br /&gt;    -m, --mime-types=filename        Specifies an Apache style mime.types configuration file to be used for mime types&lt;br /&gt;                                     Default: none&lt;br /&gt;    -d, --daemon                     Make Rails run as a Daemon (only works if fork is available -- meaning on *nix).&lt;br /&gt;    -c, --charset=charset            Set default charset for output.&lt;br /&gt;                                     Default: UTF-8&lt;br /&gt;&lt;br /&gt;    -h, --help                       Show this help message.&lt;br /&gt;&lt;/pre&gt;&lt;div class="blogger-post-footer"&gt;&lt;img width='1' height='1' src='https://blogger.googleusercontent.com/tracker/21184031-115619118846762969?l=railsruby.blogspot.com' alt='' /&gt;&lt;/div&gt;</content><link rel='replies' type='application/atom+xml' href='http://railsruby.blogspot.com/feeds/115619118846762969/comments/default' title='Post Comments'/><link rel='replies' type='text/html' href='http://www.blogger.com/comment.g?blogID=21184031&amp;postID=115619118846762969' title='7 Comments'/><link rel='edit' type='application/atom+xml' href='http://www.blogger.com/feeds/21184031/posts/default/115619118846762969'/><link rel='self' type='application/atom+xml' href='http://www.blogger.com/feeds/21184031/posts/default/115619118846762969'/><link rel='alternate' type='text/html' href='http://railsruby.blogspot.com/2006/08/starting-webrick-on-different-port.html' title='Starting Webrick on a different port'/><author><name>Frank</name><email>noreply@blogger.com</email><gd:image rel='http://schemas.google.com/g/2005#thumbnail' width='16' height='16' src='http://img2.blogblog.com/img/b16-rounded.gif'/></author><thr:total>7</thr:total></entry><entry><id>tag:blogger.com,1999:blog-21184031.post-115491730313800624</id><published>2006-08-06T19:20:00.000-07:00</published><updated>2006-08-06T19:21:43.153-07:00</updated><title type='text'>ActiveRecord::Subclass Not found</title><content type='html'>If you ever get the following error:&lt;br /&gt;&lt;br /&gt;&lt;pre&gt;The single-table inheritance mechanism failed to locate the subclass: 'link'. This error is raised because the column 'type' is reserved for storing the class in case of inheritance. Please rename this column if you didn't intend it to be used for storing the inheritance class or overwrite Olink.inheritance_column to use another column for that information.&lt;br /&gt;&lt;br /&gt;Make sure you don't have a field named type in your table.&lt;br /&gt;&lt;/pre&gt;&lt;div class="blogger-post-footer"&gt;&lt;img width='1' height='1' src='https://blogger.googleusercontent.com/tracker/21184031-115491730313800624?l=railsruby.blogspot.com' alt='' /&gt;&lt;/div&gt;</content><link rel='replies' type='application/atom+xml' href='http://railsruby.blogspot.com/feeds/115491730313800624/comments/default' title='Post Comments'/><link rel='replies' type='text/html' href='http://www.blogger.com/comment.g?blogID=21184031&amp;postID=115491730313800624' title='1 Comments'/><link rel='edit' type='application/atom+xml' href='http://www.blogger.com/feeds/21184031/posts/default/115491730313800624'/><link rel='self' type='application/atom+xml' href='http://www.blogger.com/feeds/21184031/posts/default/115491730313800624'/><link rel='alternate' type='text/html' href='http://railsruby.blogspot.com/2006/08/activerecordsubclass-not-found.html' title='ActiveRecord::Subclass Not found'/><author><name>Frank</name><email>noreply@blogger.com</email><gd:image rel='http://schemas.google.com/g/2005#thumbnail' width='16' height='16' src='http://img2.blogblog.com/img/b16-rounded.gif'/></author><thr:total>1</thr:total></entry><entry><id>tag:blogger.com,1999:blog-21184031.post-115419856802826077</id><published>2006-07-29T11:40:00.000-07:00</published><updated>2006-07-29T11:42:48.040-07:00</updated><title type='text'>Comparison of String with Integer failed</title><content type='html'>If you have code like &lt;p class="code"&gt;                              &lt;br /&gt;        @category_id=get_id_from_permalink(@params[:permalink_id]);&lt;br /&gt;        if @category_id &gt;=1&lt;br /&gt;        ....&lt;br /&gt;        end&lt;/p&gt; then you will get the following error:&lt;br /&gt;&lt;p class="code"&gt;comparison of String with 1 failed&lt;/p&gt;&lt;br /&gt;To fix the error modify the above code so it is something like:&lt;br /&gt;&lt;p class="code"&gt;        if @category_id.to_i &gt;=1&lt;br /&gt;        ....&lt;br /&gt;        end&lt;/p&gt;&lt;div class="blogger-post-footer"&gt;&lt;img width='1' height='1' src='https://blogger.googleusercontent.com/tracker/21184031-115419856802826077?l=railsruby.blogspot.com' alt='' /&gt;&lt;/div&gt;</content><link rel='replies' type='application/atom+xml' href='http://railsruby.blogspot.com/feeds/115419856802826077/comments/default' title='Post Comments'/><link rel='replies' type='text/html' href='http://www.blogger.com/comment.g?blogID=21184031&amp;postID=115419856802826077' title='0 Comments'/><link rel='edit' type='application/atom+xml' href='http://www.blogger.com/feeds/21184031/posts/default/115419856802826077'/><link rel='self' type='application/atom+xml' href='http://www.blogger.com/feeds/21184031/posts/default/115419856802826077'/><link rel='alternate' type='text/html' href='http://railsruby.blogspot.com/2006/07/comparison-of-string-with-integer.html' title='Comparison of String with Integer failed'/><author><name>Frank</name><email>noreply@blogger.com</email><gd:image rel='http://schemas.google.com/g/2005#thumbnail' width='16' height='16' src='http://img2.blogblog.com/img/b16-rounded.gif'/></author><thr:total>0</thr:total></entry><entry><id>tag:blogger.com,1999:blog-21184031.post-115419492170403580</id><published>2006-07-29T10:40:00.000-07:00</published><updated>2006-07-29T10:42:01.723-07:00</updated><title type='text'>Custom URLs with routes.rb</title><content type='html'>Using the routes.rb file, we can create custom URLs. It is important to note that the following is valid :&lt;br /&gt;&lt;br /&gt;&lt;p class="code"&gt;map.connect ':permalink', :action=&gt;'list', :controller=&gt;'categories'&lt;/p&gt;&lt;br /&gt;whereas the following are not valid:&lt;br /&gt;&lt;p class="code"&gt;  map.connect ':permalink-:id', :action=&gt;'list', :controller=&gt;'categories'&lt;br /&gt;  map.connect ':permalink_id.html', :action=&gt;'list', :controller=&gt;'categories'&lt;br /&gt;  map.connect ':permalink-:id.html', :action=&gt;'list', :controller=&gt;'categories'&lt;br /&gt;&lt;/p&gt;&lt;div class="blogger-post-footer"&gt;&lt;img width='1' height='1' src='https://blogger.googleusercontent.com/tracker/21184031-115419492170403580?l=railsruby.blogspot.com' alt='' /&gt;&lt;/div&gt;</content><link rel='replies' type='application/atom+xml' href='http://railsruby.blogspot.com/feeds/115419492170403580/comments/default' title='Post Comments'/><link rel='replies' type='text/html' href='http://www.blogger.com/comment.g?blogID=21184031&amp;postID=115419492170403580' title='4 Comments'/><link rel='edit' type='application/atom+xml' href='http://www.blogger.com/feeds/21184031/posts/default/115419492170403580'/><link rel='self' type='application/atom+xml' href='http://www.blogger.com/feeds/21184031/posts/default/115419492170403580'/><link rel='alternate' type='text/html' href='http://railsruby.blogspot.com/2006/07/custom-urls-with-routesrb.html' title='Custom URLs with routes.rb'/><author><name>Frank</name><email>noreply@blogger.com</email><gd:image rel='http://schemas.google.com/g/2005#thumbnail' width='16' height='16' src='http://img2.blogblog.com/img/b16-rounded.gif'/></author><thr:total>4</thr:total></entry><entry><id>tag:blogger.com,1999:blog-21184031.post-115419407455475868</id><published>2006-07-29T10:24:00.000-07:00</published><updated>2006-07-29T10:27:54.556-07:00</updated><title type='text'>Calling a controller method from a view raises NoMethodError</title><content type='html'>If you put a custom function in application.rb or another controller and then try to access it from your view, you'll get the "No Method Error" similar to following:&lt;br /&gt;&lt;p class="code"&gt; NoMethodError in Categories#list&lt;br /&gt; Showing app/views/categories/list.rhtml where line #23 raised:&lt;br /&gt;undefined method `create_permalink' for #&lt;#&lt;Class:0xb79318ec&gt;:0xb7931838&gt;&lt;/p&gt;&lt;br /&gt;The solution is to place the function as a helper function in the app/helpers/categories_helper.rb or app/helpers/application_helper.rb file.&lt;div class="blogger-post-footer"&gt;&lt;img width='1' height='1' src='https://blogger.googleusercontent.com/tracker/21184031-115419407455475868?l=railsruby.blogspot.com' alt='' /&gt;&lt;/div&gt;</content><link rel='replies' type='application/atom+xml' href='http://railsruby.blogspot.com/feeds/115419407455475868/comments/default' title='Post Comments'/><link rel='replies' type='text/html' href='http://www.blogger.com/comment.g?blogID=21184031&amp;postID=115419407455475868' title='6 Comments'/><link rel='edit' type='application/atom+xml' href='http://www.blogger.com/feeds/21184031/posts/default/115419407455475868'/><link rel='self' type='application/atom+xml' href='http://www.blogger.com/feeds/21184031/posts/default/115419407455475868'/><link rel='alternate' type='text/html' href='http://railsruby.blogspot.com/2006/07/calling-controller-method-from-view.html' title='Calling a controller method from a view raises NoMethodError'/><author><name>Frank</name><email>noreply@blogger.com</email><gd:image rel='http://schemas.google.com/g/2005#thumbnail' width='16' height='16' src='http://img2.blogblog.com/img/b16-rounded.gif'/></author><thr:total>6</thr:total></entry><entry><id>tag:blogger.com,1999:blog-21184031.post-115419355682783164</id><published>2006-07-29T10:17:00.000-07:00</published><updated>2006-07-29T10:19:16.826-07:00</updated><title type='text'>URL Escape and URL Unescape</title><content type='html'>I find these functions really handy when having to escape or unescape URL:&lt;br /&gt;&lt;br /&gt;&lt;p class="code"&gt;  def url_escape(string)&lt;br /&gt;    string.gsub(/([^ a-zA-Z0-9_.-]+)/n) do&lt;br /&gt;      '%' + $1.unpack('H2' * $1.size).join('%').upcase&lt;br /&gt;    end.tr(' ', '+')&lt;br /&gt;  end&lt;br /&gt;&lt;br /&gt;  def url_unescape(string)&lt;br /&gt;    string.tr('+', ' ').gsub(/((?:%[0-9a-fA-F]{2})+)/n) do&lt;br /&gt;      [$1.delete('%')].pack('H*')&lt;br /&gt;    end&lt;br /&gt;  end&lt;br /&gt;&lt;/p&gt;&lt;br /&gt;&lt;br /&gt;I usually place them in application.rb.&lt;div class="blogger-post-footer"&gt;&lt;img width='1' height='1' src='https://blogger.googleusercontent.com/tracker/21184031-115419355682783164?l=railsruby.blogspot.com' alt='' /&gt;&lt;/div&gt;</content><link rel='replies' type='application/atom+xml' href='http://railsruby.blogspot.com/feeds/115419355682783164/comments/default' title='Post Comments'/><link rel='replies' type='text/html' href='http://www.blogger.com/comment.g?blogID=21184031&amp;postID=115419355682783164' title='6 Comments'/><link rel='edit' type='application/atom+xml' href='http://www.blogger.com/feeds/21184031/posts/default/115419355682783164'/><link rel='self' type='application/atom+xml' href='http://www.blogger.com/feeds/21184031/posts/default/115419355682783164'/><link rel='alternate' type='text/html' href='http://railsruby.blogspot.com/2006/07/url-escape-and-url-unescape.html' title='URL Escape and URL Unescape'/><author><name>Frank</name><email>noreply@blogger.com</email><gd:image rel='http://schemas.google.com/g/2005#thumbnail' width='16' height='16' src='http://img2.blogblog.com/img/b16-rounded.gif'/></author><thr:total>6</thr:total></entry><entry><id>tag:blogger.com,1999:blog-21184031.post-115419332225758866</id><published>2006-07-29T10:14:00.000-07:00</published><updated>2006-07-29T10:15:22.256-07:00</updated><title type='text'>Calculating time difference</title><content type='html'>Here is a Ruby on Rails function I wrote that returns time difference in minutes. It can be easily modified to return time difference in seconds, hours etc.&lt;br /&gt;&lt;p class="code"&gt;&lt;br /&gt;  def time_diff_in_minutes (time)&lt;br /&gt;        diff_seconds = (Time.now - time).round&lt;br /&gt;        diff_minutes = diff_seconds / 60&lt;br /&gt;        return diff_minutes&lt;br /&gt;  end&lt;br /&gt;&lt;br /&gt;&lt;/p&gt;&lt;div class="blogger-post-footer"&gt;&lt;img width='1' height='1' src='https://blogger.googleusercontent.com/tracker/21184031-115419332225758866?l=railsruby.blogspot.com' alt='' /&gt;&lt;/div&gt;</content><link rel='replies' type='application/atom+xml' href='http://railsruby.blogspot.com/feeds/115419332225758866/comments/default' title='Post Comments'/><link rel='replies' type='text/html' href='http://www.blogger.com/comment.g?blogID=21184031&amp;postID=115419332225758866' title='1 Comments'/><link rel='edit' type='application/atom+xml' href='http://www.blogger.com/feeds/21184031/posts/default/115419332225758866'/><link rel='self' type='application/atom+xml' href='http://www.blogger.com/feeds/21184031/posts/default/115419332225758866'/><link rel='alternate' type='text/html' href='http://railsruby.blogspot.com/2006/07/calculating-time-difference.html' title='Calculating time difference'/><author><name>Frank</name><email>noreply@blogger.com</email><gd:image rel='http://schemas.google.com/g/2005#thumbnail' width='16' height='16' src='http://img2.blogblog.com/img/b16-rounded.gif'/></author><thr:total>1</thr:total></entry><entry><id>tag:blogger.com,1999:blog-21184031.post-115419277238194603</id><published>2006-07-29T09:58:00.000-07:00</published><updated>2006-07-29T10:06:12.393-07:00</updated><title type='text'>Embedding and extracting primary key in a clean URL</title><content type='html'>Clean URLs are very important for search engines and for that reason I always prefer them. &lt;br /&gt;&lt;br /&gt;A url of the form http://rubyonrails.blogspot.com/article/55 is better than http://rubyonrails.blogspot.com/?aid=55.&lt;br /&gt;&lt;br /&gt;An even better form of the URL is http://rubyonrails.blogspot.com/article-title-55 where article-title represents the important keywords that appear in the title.&lt;br /&gt;&lt;br /&gt;When using Ruby on Rails, you can create the permalink from title using the following function:&lt;br /&gt;&lt;br /&gt;&lt;p class="code"&gt;  def create_permalink(string)&lt;br /&gt;    string.gsub(/([^ a-zA-Z0-9_.-]+)/n) do&lt;br /&gt;      '%' + $1.unpack('H2' * $1.size).join('%').upcase&lt;br /&gt;     end.tr(' ', '-').downcase&lt;br /&gt;&lt;br /&gt;  end&lt;br /&gt;&lt;br /&gt;&lt;/p&gt;&lt;br /&gt;and you can extract the id from this permalink using a function given below:&lt;br /&gt;&lt;p class="code"&gt;  def get_id_from_permalink(permalink)&lt;br /&gt;        @temp_array = permalink.split('-')&lt;br /&gt;        id=@temp_array[-1]&lt;br /&gt;        return id&lt;br /&gt;  end&lt;br /&gt;&lt;/p&gt;&lt;div class="blogger-post-footer"&gt;&lt;img width='1' height='1' src='https://blogger.googleusercontent.com/tracker/21184031-115419277238194603?l=railsruby.blogspot.com' alt='' /&gt;&lt;/div&gt;</content><link rel='replies' type='application/atom+xml' href='http://railsruby.blogspot.com/feeds/115419277238194603/comments/default' title='Post Comments'/><link rel='replies' type='text/html' href='http://www.blogger.com/comment.g?blogID=21184031&amp;postID=115419277238194603' title='0 Comments'/><link rel='edit' type='application/atom+xml' href='http://www.blogger.com/feeds/21184031/posts/default/115419277238194603'/><link rel='self' type='application/atom+xml' href='http://www.blogger.com/feeds/21184031/posts/default/115419277238194603'/><link rel='alternate' type='text/html' href='http://railsruby.blogspot.com/2006/07/embedding-and-extracting-primary-key.html' title='Embedding and extracting primary key in a clean URL'/><author><name>Frank</name><email>noreply@blogger.com</email><gd:image rel='http://schemas.google.com/g/2005#thumbnail' width='16' height='16' src='http://img2.blogblog.com/img/b16-rounded.gif'/></author><thr:total>0</thr:total></entry><entry><id>tag:blogger.com,1999:blog-21184031.post-115309404350145005</id><published>2006-07-16T16:02:00.000-07:00</published><updated>2006-07-16T16:54:03.526-07:00</updated><title type='text'>Ruby on Rails tips</title><content type='html'>&lt;span style="font-weight:bold;"&gt;Call a function before each method in a controller.&lt;/span&gt;&lt;br /&gt;Define the function in application.rb and then edit your desired controller file and put the following&lt;br /&gt;&lt;pre&gt;before_filter :application_essentials&lt;/pre&gt;&lt;div class="blogger-post-footer"&gt;&lt;img width='1' height='1' src='https://blogger.googleusercontent.com/tracker/21184031-115309404350145005?l=railsruby.blogspot.com' alt='' /&gt;&lt;/div&gt;</content><link rel='replies' type='application/atom+xml' href='http://railsruby.blogspot.com/feeds/115309404350145005/comments/default' title='Post Comments'/><link rel='replies' type='text/html' href='http://www.blogger.com/comment.g?blogID=21184031&amp;postID=115309404350145005' title='0 Comments'/><link rel='edit' type='application/atom+xml' href='http://www.blogger.com/feeds/21184031/posts/default/115309404350145005'/><link rel='self' type='application/atom+xml' href='http://www.blogger.com/feeds/21184031/posts/default/115309404350145005'/><link rel='alternate' type='text/html' href='http://railsruby.blogspot.com/2006/07/ruby-on-rails-tips.html' title='Ruby on Rails tips'/><author><name>Frank</name><email>noreply@blogger.com</email><gd:image rel='http://schemas.google.com/g/2005#thumbnail' width='16' height='16' src='http://img2.blogblog.com/img/b16-rounded.gif'/></author><thr:total>0</thr:total></entry><entry><id>tag:blogger.com,1999:blog-21184031.post-114486393030246809</id><published>2006-04-12T10:39:00.000-07:00</published><updated>2006-04-12T10:45:30.323-07:00</updated><title type='text'>Rails Optimization</title><content type='html'>Today I came across a good article about &lt;a href="http://weblog.textdrive.com/article/175/rails-optimizing-resource-usage"&gt;Ruby on Rails optimization&lt;/a&gt; on Text Drive by Julik. She talks about the various steps you can take to optimize your Rails application. While you really should read the article, in a nutshell, she talks about the following:&lt;br /&gt;&lt;br /&gt;  1.  Minimize the amount of FCGI listeners&lt;br /&gt;  2. Use caching&lt;br /&gt;  3. NEVER run “development” on FastCGI for more than 1-2 hours&lt;br /&gt;  4. Observe your memory consumption&lt;br /&gt;  5. Rotate your logs&lt;br /&gt;  6. Write and run unit tests&lt;br /&gt;  7. Check for memory leaks when you are developing&lt;br /&gt;  8. Be careful with iterations&lt;br /&gt;  9. Watch the Rails TRAC for bug reports&lt;br /&gt; 10. Be vigilant when restarting your server&lt;br /&gt;&lt;br /&gt;I will add more Rails related optimization resources in the future and post them to my &lt;a href="http://rubyonrails.adoppt.com"&gt;Ruby on Rails&lt;/a&gt; favorites so check back soon.&lt;br /&gt;&lt;br /&gt;&lt;a href="http://litespeedtech.com/"&gt;Lite Speed web server&lt;/a&gt;: I haven't checked Lite speed web server yet, but plan to do so very soon.&lt;br /&gt;&lt;br /&gt;Technorati: &lt;a href="http://www.technorati.com/tag/rails" rel="tag"&gt;Rails&lt;/a&gt; &lt;a href="http://www.technorati.com/tag/ruby" rel="tag"&gt;Ruby&lt;/a&gt;&lt;br /&gt;Adoppt: &lt;a href="http://adoppt.com/tag/rails" rel="tag"&gt;Rails&lt;/a&gt;&lt;div class="blogger-post-footer"&gt;&lt;img width='1' height='1' src='https://blogger.googleusercontent.com/tracker/21184031-114486393030246809?l=railsruby.blogspot.com' alt='' /&gt;&lt;/div&gt;</content><link rel='replies' type='application/atom+xml' href='http://railsruby.blogspot.com/feeds/114486393030246809/comments/default' title='Post Comments'/><link rel='replies' type='text/html' href='http://www.blogger.com/comment.g?blogID=21184031&amp;postID=114486393030246809' title='3 Comments'/><link rel='edit' type='application/atom+xml' href='http://www.blogger.com/feeds/21184031/posts/default/114486393030246809'/><link rel='self' type='application/atom+xml' href='http://www.blogger.com/feeds/21184031/posts/default/114486393030246809'/><link rel='alternate' type='text/html' href='http://railsruby.blogspot.com/2006/04/rails-optimization.html' title='Rails Optimization'/><author><name>Frank</name><email>noreply@blogger.com</email><gd:image rel='http://schemas.google.com/g/2005#thumbnail' width='16' height='16' src='http://img2.blogblog.com/img/b16-rounded.gif'/></author><thr:total>3</thr:total></entry><entry><id>tag:blogger.com,1999:blog-21184031.post-114316377654872407</id><published>2006-03-23T17:28:00.000-08:00</published><updated>2006-03-23T17:29:36.570-08:00</updated><title type='text'>To Open Source or Not to Open Source?</title><content type='html'>I have been receviving a lot of feedback on Adoppt.com and based on the feedback, I have one question:&lt;br /&gt;&lt;br /&gt;Should I open source my project? What are benefits / drawbacks?&lt;br /&gt;&lt;br /&gt;Adoppt employs many principles that I have learned over the years. Alongwith my upcoming Pro Rails book, it will be something nice to give back to the community.&lt;br /&gt;&lt;br /&gt;So far I think I would like to Open Source the software only for personal use and place a licensing fee for commercial use. Is that possible with Open Source? I know MySQL does something like this.&lt;br /&gt;&lt;br /&gt;If I do Open Source it, should I host the code myself or put it on Sourceforge or Rubyforge?&lt;br /&gt;&lt;br /&gt;Questions / Ideas / Experiences / Suggestions Welcome&lt;br /&gt;&lt;br /&gt;Frank&lt;div class="blogger-post-footer"&gt;&lt;img width='1' height='1' src='https://blogger.googleusercontent.com/tracker/21184031-114316377654872407?l=railsruby.blogspot.com' alt='' /&gt;&lt;/div&gt;</content><link rel='replies' type='application/atom+xml' href='http://railsruby.blogspot.com/feeds/114316377654872407/comments/default' title='Post Comments'/><link rel='replies' type='text/html' href='http://www.blogger.com/comment.g?blogID=21184031&amp;postID=114316377654872407' title='1 Comments'/><link rel='edit' type='application/atom+xml' href='http://www.blogger.com/feeds/21184031/posts/default/114316377654872407'/><link rel='self' type='application/atom+xml' href='http://www.blogger.com/feeds/21184031/posts/default/114316377654872407'/><link rel='alternate' type='text/html' href='http://railsruby.blogspot.com/2006/03/to-open-source-or-not-to-open-source.html' title='To Open Source or Not to Open Source?'/><author><name>Frank</name><email>noreply@blogger.com</email><gd:image rel='http://schemas.google.com/g/2005#thumbnail' width='16' height='16' src='http://img2.blogblog.com/img/b16-rounded.gif'/></author><thr:total>1</thr:total></entry><entry><id>tag:blogger.com,1999:blog-21184031.post-114314848543774966</id><published>2006-03-23T12:45:00.000-08:00</published><updated>2006-03-23T13:16:23.396-08:00</updated><title type='text'>MVC - Model View Controller Architecture</title><content type='html'>Here's a diagram I made to help explain &lt;a href="http://ootips.org/mvc-pattern.html"&gt;MVC&lt;/a&gt; architecture to beginners.&lt;br /&gt;&lt;br /&gt;&lt;br /&gt;&lt;br /&gt;&lt;a onblur="try {parent.deselectBloggerImageGracefully();} catch(e) {}" href="http://photos1.blogger.com/blogger/514/1789/1600/mvc.jpg"&gt;&lt;img style="cursor:pointer; cursor:hand;" src="http://photos1.blogger.com/blogger/514/1789/400/mvc.jpg" border="0" alt="" /&gt;&lt;/a&gt;&lt;br /&gt;&lt;br /&gt;If the &lt;a href="http://st-www.cs.uiuc.edu/users/smarch/st-docs/mvc.html"&gt;Model, View Controller&lt;/a&gt; (MVC) terminology bothers you, you may use the alternate vocabulary until you can feel comfortable. For instance, as depicted in the figure above, you may refer to "controller" as  "input", "model" as "processor" or "processing" and "view" as "output".&lt;br /&gt;&lt;br /&gt;So in other words, controller receives the input,  passes it to the model for processing, or to the view for output.&lt;br /&gt;&lt;br /&gt;--Frank&lt;div class="blogger-post-footer"&gt;&lt;img width='1' height='1' src='https://blogger.googleusercontent.com/tracker/21184031-114314848543774966?l=railsruby.blogspot.com' alt='' /&gt;&lt;/div&gt;</content><link rel='replies' type='application/atom+xml' href='http://railsruby.blogspot.com/feeds/114314848543774966/comments/default' title='Post Comments'/><link rel='replies' type='text/html' href='http://www.blogger.com/comment.g?blogID=21184031&amp;postID=114314848543774966' title='0 Comments'/><link rel='edit' type='application/atom+xml' href='http://www.blogger.com/feeds/21184031/posts/default/114314848543774966'/><link rel='self' type='application/atom+xml' href='http://www.blogger.com/feeds/21184031/posts/default/114314848543774966'/><link rel='alternate' type='text/html' href='http://railsruby.blogspot.com/2006/03/mvc-model-view-controller-architecture.html' title='MVC - Model View Controller Architecture'/><author><name>Frank</name><email>noreply@blogger.com</email><gd:image rel='http://schemas.google.com/g/2005#thumbnail' width='16' height='16' src='http://img2.blogblog.com/img/b16-rounded.gif'/></author><thr:total>0</thr:total></entry><entry><id>tag:blogger.com,1999:blog-21184031.post-114300728813803852</id><published>2006-03-21T21:54:00.000-08:00</published><updated>2006-03-21T22:02:27.480-08:00</updated><title type='text'>What the people want</title><content type='html'>These are some questions I have received about what people want to learn about &lt;a href="http://www.rubyonrails.org/"&gt;Ruby on Rails&lt;/a&gt;, after I asked what people were interested in a post made yesterday to my MySQL blog entitled, &lt;a href="http://mysqldatabaseadministration.blogspot.com/2006/03/pro-rails-and-applied-ruby-on-rails.html"&gt; Pro Rails and Applied Ruby on Rails: What do you want to learn?&lt;/a&gt; Please don't hesitate to send me your own questions and topics about &lt;a href="http://www.ruby-lang.org/"&gt;Ruby&lt;/a&gt;, Ruby on Rails, and &lt;a href="http://www.ajaxian.com/"&gt;AJAX&lt;/a&gt; you would like to see covered in my upcoming book Pro Rails and Applied Ruby on Rails. Send questions to softwareengineer99 at yahoo dot com. &lt;br /&gt;&lt;br /&gt;· How to install rails&lt;br /&gt;· How to start an application&lt;br /&gt;· What should I be familiar with before starting?&lt;br /&gt;· How to install plugins (gems)&lt;br /&gt;· How long will it take me to learn&lt;br /&gt;· how to make a blog application&lt;br /&gt;· how to make a forum application&lt;br /&gt;· how to make a messaging system&lt;br /&gt;· how to make a tagging system&lt;br /&gt;· what if I don’t know OO?&lt;br /&gt;· Is ROR different than Ruby?&lt;br /&gt;· How do I connect to databases in Ruby OR&lt;br /&gt;· What databases can I use with ROR?&lt;br /&gt;· How do I paginate documents in ROR&lt;br /&gt;· How do I made a class?&lt;br /&gt;· What is a class?&lt;br /&gt;· What are attributes?&lt;br /&gt;· What are variables?&lt;br /&gt;· What are functions?&lt;br /&gt;· What is MVC&lt;br /&gt;· What are models?&lt;br /&gt;· What are views?&lt;br /&gt;· What are controllers?&lt;br /&gt;· How are they used together?&lt;br /&gt;· How do I validate things in ROR?&lt;br /&gt;· What is HABTM?&lt;br /&gt;· will my application work on multiple browsers&lt;br /&gt;· can I use ROR on a Mac? Windows? Linux?&lt;br /&gt;· Can I scale my application?&lt;br /&gt;· What are normalized tables&lt;br /&gt;· How do I make normalized tables?&lt;br /&gt;· can I use ROR with more than one database?&lt;br /&gt;· how do I use AJAX with ROR&lt;br /&gt;· What is AJAX?&lt;br /&gt;· What is Ajax used for?&lt;br /&gt;· Is there a ROR community to turn to for help?&lt;br /&gt;· What is a Rails Engine?&lt;br /&gt;· How can I use a Rails Engine?&lt;br /&gt;· Do I need special hosting service to have a ROR application on the web?&lt;br /&gt;· What are some tools I can use to learn ROR?&lt;br /&gt;· What are some good websties about ROR?&lt;br /&gt;· What port does ROR run on?&lt;br /&gt;· Can I use ROR with apache?&lt;br /&gt;· Can I use ROR with lighttpd?&lt;br /&gt;· What are relationships?&lt;br /&gt;· What is a many to many relationship?&lt;br /&gt;· What is a one to many relationship?&lt;br /&gt;· Where would I use a JOIN?&lt;br /&gt;· How can I search and retrieve data in ROR?&lt;br /&gt;· How do I insert data into databases with ROR?&lt;br /&gt;· What is tagging?&lt;br /&gt;· What is Web 2.0?&lt;br /&gt;· How can I make text editable without reloading the page?&lt;br /&gt;· How can I use AJAX to make the page not have to reload to login?&lt;br /&gt;· What is JRuby?&lt;br /&gt;· How do I make elements draggable?&lt;br /&gt;&lt;br /&gt;Tags: &lt;a href="http://www.technorati.com/tag/Ruby on Rails" rel="tag"&gt;Ruby on Rails&lt;/a&gt;, &lt;a href="http://www.technorati.com/tag/AJAX" rel="tag"&gt;AJAX&lt;/a&gt;&lt;div class="blogger-post-footer"&gt;&lt;img width='1' height='1' src='https://blogger.googleusercontent.com/tracker/21184031-114300728813803852?l=railsruby.blogspot.com' alt='' /&gt;&lt;/div&gt;</content><link rel='replies' type='application/atom+xml' href='http://railsruby.blogspot.com/feeds/114300728813803852/comments/default' title='Post Comments'/><link rel='replies' type='text/html' href='http://www.blogger.com/comment.g?blogID=21184031&amp;postID=114300728813803852' title='1 Comments'/><link rel='edit' type='application/atom+xml' href='http://www.blogger.com/feeds/21184031/posts/default/114300728813803852'/><link rel='self' type='application/atom+xml' href='http://www.blogger.com/feeds/21184031/posts/default/114300728813803852'/><link rel='alternate' type='text/html' href='http://railsruby.blogspot.com/2006/03/what-people-want.html' title='What the people want'/><author><name>Frank</name><email>noreply@blogger.com</email><gd:image rel='http://schemas.google.com/g/2005#thumbnail' width='16' height='16' src='http://img2.blogblog.com/img/b16-rounded.gif'/></author><thr:total>1</thr:total></entry><entry><id>tag:blogger.com,1999:blog-21184031.post-114170616969731995</id><published>2006-03-06T20:34:00.000-08:00</published><updated>2006-03-06T20:36:09.716-08:00</updated><title type='text'>Using AJAX and Ruby on Rails to Display Alexa graphs</title><content type='html'>I have posted a new tutorial on how to use &lt;a href="http://en.wikipedia.org/wiki/AJAX"&gt;AJAX&lt;/a&gt; and Ruby on Rails to &lt;a href="http://rubyonrails.designerzllc.com/articles/2006/03/06/ajax-on-rails-for-remote-calls-using-link_to_remote"&gt;display Alexa traffic graphs&lt;/a&gt; and site rank information at &lt;a href="http://blog.designerzllc.com"&gt;Designerz Blog&lt;/a&gt;.&lt;br /&gt;&lt;br /&gt;Enjoy&lt;br /&gt;Frank&lt;div class="blogger-post-footer"&gt;&lt;img width='1' height='1' src='https://blogger.googleusercontent.com/tracker/21184031-114170616969731995?l=railsruby.blogspot.com' alt='' /&gt;&lt;/div&gt;</content><link rel='replies' type='application/atom+xml' href='http://railsruby.blogspot.com/feeds/114170616969731995/comments/default' title='Post Comments'/><link rel='replies' type='text/html' href='http://www.blogger.com/comment.g?blogID=21184031&amp;postID=114170616969731995' title='1 Comments'/><link rel='edit' type='application/atom+xml' href='http://www.blogger.com/feeds/21184031/posts/default/114170616969731995'/><link rel='self' type='application/atom+xml' href='http://www.blogger.com/feeds/21184031/posts/default/114170616969731995'/><link rel='alternate' type='text/html' href='http://railsruby.blogspot.com/2006/03/using-ajax-and-ruby-on-rails-to.html' title='Using AJAX and Ruby on Rails to Display Alexa graphs'/><author><name>Frank</name><email>noreply@blogger.com</email><gd:image rel='http://schemas.google.com/g/2005#thumbnail' width='16' height='16' src='http://img2.blogblog.com/img/b16-rounded.gif'/></author><thr:total>1</thr:total></entry><entry><id>tag:blogger.com,1999:blog-21184031.post-114158978863262792</id><published>2006-03-05T12:05:00.000-08:00</published><updated>2006-03-05T12:16:28.720-08:00</updated><title type='text'>acts_as_taggable pagination</title><content type='html'>Recently I needed to paginate the results of find_tagged_with method. I am using the acts_as_taggable plugin.&lt;br /&gt;&lt;br /&gt;I did not want to paginate the collection after it has been retrieved since the data set I am working with is huge.&lt;br /&gt;&lt;br /&gt;Just for reference, using the paginate_collection function, you'll use something like this to paginate your collection:&lt;br /&gt;&lt;br /&gt;&lt;p class="code"&gt; q_favorites=Favorite.find_tagged_with(:any =&gt; params[:tag], :separator=&gt;',', :order=&gt;'updated_at DESC')&lt;br /&gt; @favorite_pages, @favorites = paginate_collection(:collection=&gt;q_favorites, :page =&gt; @params[:page]) &lt;br /&gt;&lt;/p&gt;&lt;br /&gt;&lt;br /&gt;So, after looking around (and not finding a solution), I finally decided to go the query way.&lt;br /&gt;&lt;br /&gt;Here's my solution based on paginate example in the Wiki. Enjoy:&lt;br /&gt;&lt;p class="code"&gt;&lt;br /&gt;    page = (params[:page] ||= 1).to_i&lt;br /&gt;    items_per_page = 3&lt;br /&gt;    offset = (page - 1) * items_per_page&lt;br /&gt;&lt;br /&gt; @webpage_count = Webpage.count("tags_webpages.tag_id = tags.id AND ( tags.name = 'Accounting' ) AND webpages.id = tags_webpages.webpage_id", &lt;br /&gt;  joins = ", tags_webpages, tags")&lt;br /&gt;&lt;br /&gt; @webpage_pages = Paginator.new(self, @webpage_count, items_per_page, page)&lt;br /&gt;&lt;br /&gt;&lt;br /&gt; @webpages=Webpage.find_tagged_with(:any =&gt; params[:tag], :limit=&gt;items_per_page, :offset=&gt;offset, :separator=&gt;',', :order=&gt;'updated_at DESC')&lt;br /&gt;&lt;br /&gt;&lt;br /&gt;&lt;/p&gt;&lt;br /&gt;&lt;br /&gt;&lt;br /&gt;If you can think of something better, please post a comment.&lt;div class="blogger-post-footer"&gt;&lt;img width='1' height='1' src='https://blogger.googleusercontent.com/tracker/21184031-114158978863262792?l=railsruby.blogspot.com' alt='' /&gt;&lt;/div&gt;</content><link rel='replies' type='application/atom+xml' href='http://railsruby.blogspot.com/feeds/114158978863262792/comments/default' title='Post Comments'/><link rel='replies' type='text/html' href='http://www.blogger.com/comment.g?blogID=21184031&amp;postID=114158978863262792' title='16 Comments'/><link rel='edit' type='application/atom+xml' href='http://www.blogger.com/feeds/21184031/posts/default/114158978863262792'/><link rel='self' type='application/atom+xml' href='http://www.blogger.com/feeds/21184031/posts/default/114158978863262792'/><link rel='alternate' type='text/html' href='http://railsruby.blogspot.com/2006/03/actsastaggable-pagination.html' title='acts_as_taggable pagination'/><author><name>Frank</name><email>noreply@blogger.com</email><gd:image rel='http://schemas.google.com/g/2005#thumbnail' width='16' height='16' src='http://img2.blogblog.com/img/b16-rounded.gif'/></author><thr:total>16</thr:total></entry><entry><id>tag:blogger.com,1999:blog-21184031.post-114144250085698626</id><published>2006-03-03T19:18:00.000-08:00</published><updated>2006-03-03T19:21:40.876-08:00</updated><title type='text'>Travering Arrays, Hashes and Collections. [Ruby on Rails]</title><content type='html'>Traversing a hash's values&lt;br /&gt;&lt;br /&gt;  &lt;p class="code"&gt;&lt;br /&gt;  myitems.each_value  do |item|&lt;br /&gt;      # do stuff with item&lt;br /&gt;  end&lt;/p&gt;&lt;br /&gt;&lt;br /&gt;Traversing an array (similarly a collection can be traversed)&lt;br /&gt;  &lt;p class="code"&gt;&lt;br /&gt;     myitems.each do |key, value|&lt;br /&gt;      # do stuff with key and value&lt;br /&gt;    end&lt;/p&gt;&lt;div class="blogger-post-footer"&gt;&lt;img width='1' height='1' src='https://blogger.googleusercontent.com/tracker/21184031-114144250085698626?l=railsruby.blogspot.com' alt='' /&gt;&lt;/div&gt;</content><link rel='replies' type='application/atom+xml' href='http://railsruby.blogspot.com/feeds/114144250085698626/comments/default' title='Post Comments'/><link rel='replies' type='text/html' href='http://www.blogger.com/comment.g?blogID=21184031&amp;postID=114144250085698626' title='1 Comments'/><link rel='edit' type='application/atom+xml' href='http://www.blogger.com/feeds/21184031/posts/default/114144250085698626'/><link rel='self' type='application/atom+xml' href='http://www.blogger.com/feeds/21184031/posts/default/114144250085698626'/><link rel='alternate' type='text/html' href='http://railsruby.blogspot.com/2006/03/travering-arrays-hashes-and.html' title='Travering Arrays, Hashes and Collections. [Ruby on Rails]'/><author><name>Frank</name><email>noreply@blogger.com</email><gd:image rel='http://schemas.google.com/g/2005#thumbnail' width='16' height='16' src='http://img2.blogblog.com/img/b16-rounded.gif'/></author><thr:total>1</thr:total></entry><entry><id>tag:blogger.com,1999:blog-21184031.post-114144160302908486</id><published>2006-03-03T19:06:00.000-08:00</published><updated>2006-03-23T21:41:56.933-08:00</updated><title type='text'>Tagging on  Rails: acts_as_taggable count DESC</title><content type='html'>Today, while working on a project involving acts_as_taggable I noticed something interesting:&lt;br /&gt;&lt;br /&gt;I was using something like:&lt;br /&gt;&lt;p class="code"&gt;@tagged_blogosphere = Webpage.tags_count(:limit =&gt; 100,:order=&gt;' count desc ' )&lt;/p&gt;&lt;br /&gt;&lt;br /&gt;and this was producing the following SQL statemetn:&lt;br /&gt;&lt;p class="code"&gt;SELECT tags.id AS id, tags.name AS name, COUNT(*) AS count FROM tags_webpages, webpages, tags WHERE tags_webpages.tag_id = tags.id&lt;br /&gt; AND tags_webpages.webpage_id = webpages.id GROUP BY tags.name ORDER BY count desc LIMIT 100&lt;/p&gt;&lt;br /&gt;&lt;br /&gt;However, the records weren't really in order specified. &lt;br /&gt;&lt;br /&gt;After a few minutes of researching I found that the order is lost when the hash is being prepared for the tags_count table.&lt;br /&gt;&lt;br /&gt;So, following the advice mentioned on &lt;a href="http://taggable.rubyforge.org/classes/ActiveRecord/Acts/Taggable/SingletonMethods.html"&gt;Singleton methods for acts_as_taggable&lt;/a&gt; page, I modified my call as follows&lt;br /&gt;&lt;br /&gt;&lt;p class="code"&gt;@tagged_blogosphere = Webpage.tags_count(:limit =&gt; 900,:raw=&gt;true, :order=&gt;' count desc ' )&lt;/p&gt;&lt;br /&gt;&lt;br /&gt;Because of that, I had to change my display also (thanks to &lt;a href="http://blog.craz8.com/articles/2005/10/28/acts_as_taggable-is-a-cool-piece-of-code"&gt;Tom Fakes&lt;/a&gt; for the tag cloud function.&lt;br /&gt;&lt;br /&gt;&lt;p class="code"&gt;&amp;lt;ul class="taglistinline"&amp;gt;&lt;br /&gt;&amp;lt;% tag_cloud(@tagged_blogosphere, %w(cloud1 cloud2 cloud3 cloud4  cloud5  cloud6 cloud7)) do |tag, cloud_class| %&amp;gt;&lt;br /&gt; &amp;lt;!--   &amp;lt; %= link_to(h("&amp;lt;#{tag}&amp;gt;"), tag_item_url(:name =&amp;gt; tag), { :class =&amp;gt; cloud_class } ) -% &amp;gt; --&amp;gt;&lt;br /&gt; &amp;lt;!--  &amp;lt;font style="font-size:&amp;lt;%= cloud_class %&amp;gt;"&amp;gt;&amp;lt;%= tag%&amp;gt;&amp;lt;/font&amp;gt;  --&amp;gt;&lt;br /&gt;&lt;br /&gt;&amp;lt;li&amp;gt; &amp;lt;%= link_to(h("#{tag}"), "//#{url_home}/tag/"+ u("#{tag}"), { :class =&amp;gt; cloud_class } ) %&amp;gt;&amp;lt;/li&amp;gt;&lt;br /&gt;&lt;br /&gt;&lt;br /&gt;&amp;lt;% end %&amp;gt;&lt;br /&gt;&amp;lt;/ul&amp;gt;&lt;br /&gt;&lt;/p&gt;&lt;br /&gt;&lt;br /&gt;&lt;br /&gt;The default implementation of Tom Fakes' function is (WHEN NOT USING :raw=&amp;gt;true) :&lt;br /&gt;&lt;br /&gt;&lt;p class="code"&gt;def tag_cloud(tag_cloud, category_list)&lt;br /&gt;    max, min = 0, 0&lt;br /&gt;    tag_cloud.each_value do |count|&lt;br /&gt;      max = count if count &amp;gt; max&lt;br /&gt;      min = count if count &amp;lt; min&lt;br /&gt;    end&lt;br /&gt;&lt;br /&gt;    divisor = ((max - min) / category_list.size) + 1&lt;br /&gt;&lt;br /&gt;    tag_cloud.each do |tag, count|&lt;br /&gt;      yield tag, category_list[(count - min) / divisor] &lt;br /&gt;    end&lt;br /&gt;  end&lt;/p&gt;&lt;br /&gt;&lt;br /&gt;If you want to use :raw=&amp;gt;true option, you can use the following:&lt;br /&gt;&lt;p class="code"&gt;&lt;br /&gt;  def tag_cloud_raw(tag_cloud, category_list)&lt;br /&gt;    max, min = 0, 0&lt;br /&gt;    tag_cloud.each do |element|&lt;br /&gt; count = element['count'].to_i&lt;br /&gt;      max = count if count &amp;gt; max&lt;br /&gt;      min = count if count &amp;lt; min&lt;br /&gt;    end&lt;br /&gt;&lt;br /&gt;    divisor = ((max - min) / category_list.size) + 1&lt;br /&gt;&lt;br /&gt;    tag_cloud.each do |element|&lt;br /&gt; tag = element['name']&lt;br /&gt; count = element['count'].to_i&lt;br /&gt;      yield tag, category_list[(count - min) / divisor] &lt;br /&gt;     end&lt;br /&gt;  end&lt;br /&gt;&lt;br /&gt;&lt;/p&gt;&lt;div class="blogger-post-footer"&gt;&lt;img width='1' height='1' src='https://blogger.googleusercontent.com/tracker/21184031-114144160302908486?l=railsruby.blogspot.com' alt='' /&gt;&lt;/div&gt;</content><link rel='replies' type='application/atom+xml' href='http://railsruby.blogspot.com/feeds/114144160302908486/comments/default' title='Post Comments'/><link rel='replies' type='text/html' href='http://www.blogger.com/comment.g?blogID=21184031&amp;postID=114144160302908486' title='1 Comments'/><link rel='edit' type='application/atom+xml' href='http://www.blogger.com/feeds/21184031/posts/default/114144160302908486'/><link rel='self' type='application/atom+xml' href='http://www.blogger.com/feeds/21184031/posts/default/114144160302908486'/><link rel='alternate' type='text/html' href='http://railsruby.blogspot.com/2006/03/tagging-on-rails-actsastaggable-count.html' title='Tagging on  Rails: acts_as_taggable count DESC'/><author><name>Frank</name><email>noreply@blogger.com</email><gd:image rel='http://schemas.google.com/g/2005#thumbnail' width='16' height='16' src='http://img2.blogblog.com/img/b16-rounded.gif'/></author><thr:total>1</thr:total></entry><entry><id>tag:blogger.com,1999:blog-21184031.post-114142842701259328</id><published>2006-03-03T15:27:00.000-08:00</published><updated>2006-03-03T15:27:07.026-08:00</updated><title type='text'>Yahoo! User Interface Blog</title><content type='html'>earlier I posted about YUI. Here' the blog for it: &lt;a href="http://yuiblog.com/"&gt;Yahoo! User Interface Blog&lt;/a&gt;&lt;div class="blogger-post-footer"&gt;&lt;img width='1' height='1' src='https://blogger.googleusercontent.com/tracker/21184031-114142842701259328?l=railsruby.blogspot.com' alt='' /&gt;&lt;/div&gt;</content><link rel='replies' type='application/atom+xml' href='http://railsruby.blogspot.com/feeds/114142842701259328/comments/default' title='Post Comments'/><link rel='replies' type='text/html' href='http://www.blogger.com/comment.g?blogID=21184031&amp;postID=114142842701259328' title='0 Comments'/><link rel='edit' type='application/atom+xml' href='http://www.blogger.com/feeds/21184031/posts/default/114142842701259328'/><link rel='self' type='application/atom+xml' href='http://www.blogger.com/feeds/21184031/posts/default/114142842701259328'/><link rel='alternate' type='text/html' href='http://railsruby.blogspot.com/2006/03/yahoo-user-interface-blog.html' title='Yahoo! User Interface Blog'/><author><name>Frank</name><email>noreply@blogger.com</email><gd:image rel='http://schemas.google.com/g/2005#thumbnail' width='16' height='16' src='http://img2.blogblog.com/img/b16-rounded.gif'/></author><thr:total>0</thr:total></entry><entry><id>tag:blogger.com,1999:blog-21184031.post-114142741059436687</id><published>2006-03-03T15:10:00.000-08:00</published><updated>2006-03-03T15:10:18.836-08:00</updated><title type='text'>Yahoo! UI Library</title><content type='html'>Just came across this library while reading the Ruby on Rails list and wanted to let everyone know. Yahoo! has released a wonderful library consisting of its UI tools:&lt;br /&gt;&lt;br /&gt;&lt;blockquote&gt;&lt;a href="http://developer.yahoo.net/yui/#download"&gt;Yahoo! UI Library&lt;/a&gt;: "The Yahoo! User Interface Library is a set of utilities and controls, written in JavaScript, for building richly interactive web applications using techniques such as DOM scripting, HTML and AJAX. The UI Library Utilities facilitate the implementation of rich client-side features by enhancing and normalizing the developer's interface to important elements of the browser infrastructure (such as events, in-page HTTP requests and the DOM). The Yahoo UI Library Controls produce visual, interactive user interface elements on the page with just a few lines of code and an included CSS file. All the components in the Yahoo! User Interface Library have been released as open source under a BSD license and are free for all uses."&lt;/blockquote&gt;&lt;br /&gt;&lt;br /&gt;Also see &lt;a href="http://developer.yahoo.net/ypatterns/index.php"&gt;Yahoo! Patterns&lt;/a&gt;&lt;div class="blogger-post-footer"&gt;&lt;img width='1' height='1' src='https://blogger.googleusercontent.com/tracker/21184031-114142741059436687?l=railsruby.blogspot.com' alt='' /&gt;&lt;/div&gt;</content><link rel='replies' type='application/atom+xml' href='http://railsruby.blogspot.com/feeds/114142741059436687/comments/default' title='Post Comments'/><link rel='replies' type='text/html' href='http://www.blogger.com/comment.g?blogID=21184031&amp;postID=114142741059436687' title='1 Comments'/><link rel='edit' type='application/atom+xml' href='http://www.blogger.com/feeds/21184031/posts/default/114142741059436687'/><link rel='self' type='application/atom+xml' href='http://www.blogger.com/feeds/21184031/posts/default/114142741059436687'/><link rel='alternate' type='text/html' href='http://railsruby.blogspot.com/2006/03/yahoo-ui-library.html' title='Yahoo! UI Library'/><author><name>Frank</name><email>noreply@blogger.com</email><gd:image rel='http://schemas.google.com/g/2005#thumbnail' width='16' height='16' src='http://img2.blogblog.com/img/b16-rounded.gif'/></author><thr:total>1</thr:total></entry><entry><id>tag:blogger.com,1999:blog-21184031.post-114136585869489510</id><published>2006-03-02T21:58:00.000-08:00</published><updated>2006-03-02T22:04:18.710-08:00</updated><title type='text'>Rails Chicklets</title><content type='html'>Here are the chicklets that I created. Enjoy.&lt;br /&gt;&lt;br /&gt;&lt;img src="http://designerzllc.com/images/rails.gif" /&gt;&lt;br /&gt;&lt;img src="http://designerzllc.com/images/web2.0.gif" /&gt;&lt;br /&gt;&lt;img src="http://designerzllc.com/images/apache.gif" /&gt;&lt;br /&gt;&lt;img src="http://designerzllc.com/images/linux.gif" /&gt;&lt;br /&gt;&lt;img src="http://designerzllc.com/images/lucene.gif" /&gt;&lt;br /&gt;&lt;br /&gt;I would appreciate a credit wherever possible. &lt;br /&gt;&lt;br /&gt;Thanks&lt;br /&gt;Frank&lt;br /&gt;&lt;br /&gt;If you like the chicklets, consider donating any amount:&lt;br /&gt;&lt;form action="https://www.paypal.com/cgi-bin/webscr" method="post"&gt;&lt;input type="hidden" name="cmd" value="_s-xclick"&gt;&lt;input type="image" src="https://www.paypal.com/en_US/i/btn/x-click-but21.gif" border="0" name="submit" alt="Make payments with PayPal - it's fast, free and secure!"&gt;&lt;br /&gt;&lt;input type="hidden" name="encrypted" value="-----BEGIN PKCS7-----MIIHLwYJKoZIhvcNAQcEoIIHIDCCBxwCAQExggEwMIIBLAIBADCBlDCBjjELMAkGA1UEBhMCVVMxCzAJBgNVBAgTAkNBMRYwFAYDVQQHEw1Nb3VudGFpbiBWaWV3MRQwEgYDVQQKEwtQYXlQYWwgSW5jLjETMBEGA1UECxQKbGl2ZV9jZXJ0czERMA8GA1UEAxQIbGl2ZV9hcGkxHDAaBgkqhkiG9w0BCQEWDXJlQHBheXBhbC5jb20CAQAwDQYJKoZIhvcNAQEBBQAEgYCYMzXv5mtunwp3tPwrWOPYeD3TrG7E96XQKQ3C/yaC75unpGx9HftnCsfZU8Nf89KLtoRE5HfYfybjxSWpdFoK7G6YaoCTCEfrcHhW+T39JH42SGWWEju/90qD178PeX0JMgHhwciXatJB9rIVgLbEbyGuiK9yomMMEfQE0fi7HDELMAkGBSsOAwIaBQAwgawGCSqGSIb3DQEHATAUBggqhkiG9w0DBwQIyhZGyMC0v/+AgYhou9C1YkOl301IepfyHG4q2OUVORSOOk9g/STZFzNj6eErSncYbwaqPr6rsKFN774U49Pk81aTh0a9WN0ocJYyH2fMxWquenGcssd1Id5B8LWzLV9Xrly+BiGo3COtNhtjA+s8pdK+ZRIWwdFYdq7wYag8v9hRYduJ+DM1Elle43CrGH8HtMyNoIIDhzCCA4MwggLsoAMCAQICAQAwDQYJKoZIhvcNAQEFBQAwgY4xCzAJBgNVBAYTAlVTMQswCQYDVQQIEwJDQTEWMBQGA1UEBxMNTW91bnRhaW4gVmlldzEUMBIGA1UEChMLUGF5UGFsIEluYy4xEzARBgNVBAsUCmxpdmVfY2VydHMxETAPBgNVBAMUCGxpdmVfYXBpMRwwGgYJKoZIhvcNAQkBFg1yZUBwYXlwYWwuY29tMB4XDTA0MDIxMzEwMTMxNVoXDTM1MDIxMzEwMTMxNVowgY4xCzAJBgNVBAYTAlVTMQswCQYDVQQIEwJDQTEWMBQGA1UEBxMNTW91bnRhaW4gVmlldzEUMBIGA1UEChMLUGF5UGFsIEluYy4xEzARBgNVBAsUCmxpdmVfY2VydHMxETAPBgNVBAMUCGxpdmVfYXBpMRwwGgYJKoZIhvcNAQkBFg1yZUBwYXlwYWwuY29tMIGfMA0GCSqGSIb3DQEBAQUAA4GNADCBiQKBgQDBR07d/ETMS1ycjtkpkvjXZe9k+6CieLuLsPumsJ7QC1odNz3sJiCbs2wC0nLE0uLGaEtXynIgRqIddYCHx88pb5HTXv4SZeuv0Rqq4+axW9PLAAATU8w04qqjaSXgbGLP3NmohqM6bV9kZZwZLR/klDaQGo1u9uDb9lr4Yn+rBQIDAQABo4HuMIHrMB0GA1UdDgQWBBSWn3y7xm8XvVk/UtcKG+wQ1mSUazCBuwYDVR0jBIGzMIGwgBSWn3y7xm8XvVk/UtcKG+wQ1mSUa6GBlKSBkTCBjjELMAkGA1UEBhMCVVMxCzAJBgNVBAgTAkNBMRYwFAYDVQQHEw1Nb3VudGFpbiBWaWV3MRQwEgYDVQQKEwtQYXlQYWwgSW5jLjETMBEGA1UECxQKbGl2ZV9jZXJ0czERMA8GA1UEAxQIbGl2ZV9hcGkxHDAaBgkqhkiG9w0BCQEWDXJlQHBheXBhbC5jb22CAQAwDAYDVR0TBAUwAwEB/zANBgkqhkiG9w0BAQUFAAOBgQCBXzpWmoBa5e9fo6ujionW1hUhPkOBakTr3YCDjbYfvJEiv/2P+IobhOGJr85+XHhN0v4gUkEDI8r2/rNk1m0GA8HKddvTjyGw/XqXa+LSTlDYkqI8OwR8GEYj4efEtcRpRYBxV8KxAW93YDWzFGvruKnnLbDAF6VR5w/cCMn5hzGCAZowggGWAgEBMIGUMIGOMQswCQYDVQQGEwJVUzELMAkGA1UECBMCQ0ExFjAUBgNVBAcTDU1vdW50YWluIFZpZXcxFDASBgNVBAoTC1BheVBhbCBJbmMuMRMwEQYDVQQLFApsaXZlX2NlcnRzMREwDwYDVQQDFAhsaXZlX2FwaTEcMBoGCSqGSIb3DQEJARYNcmVAcGF5cGFsLmNvbQIBADAJBgUrDgMCGgUAoF0wGAYJKoZIhvcNAQkDMQsGCSqGSIb3DQEHATAcBgkqhkiG9w0BCQUxDxcNMDYwMzAzMDYwMjM4WjAjBgkqhkiG9w0BCQQxFgQU5uBKtDaorBDCwfTo325LIvo6NgAwDQYJKoZIhvcNAQEBBQAEgYCTCzHpeMgeDhgmey7e4/tIxsPhKTF78szkM+EDrFEpyAQKA6SbkUlpVhnEiiWtWSHjsy2wvb42D317sDWvZnX6sKohc/XyXFbA2OJizbNHYQG4vXksxy5oC5iWOpEkSa/SaxiCdaCrxJdr45wFMxFnYg1o1wMOXKXGEi/BBFAw/w==-----END PKCS7-----"&gt;&lt;br /&gt;&lt;/form&gt;&lt;div class="blogger-post-footer"&gt;&lt;img width='1' height='1' src='https://blogger.googleusercontent.com/tracker/21184031-114136585869489510?l=railsruby.blogspot.com' alt='' /&gt;&lt;/div&gt;</content><link rel='replies' type='application/atom+xml' href='http://railsruby.blogspot.com/feeds/114136585869489510/comments/default' title='Post Comments'/><link rel='replies' type='text/html' href='http://www.blogger.com/comment.g?blogID=21184031&amp;postID=114136585869489510' title='0 Comments'/><link rel='edit' type='application/atom+xml' href='http://www.blogger.com/feeds/21184031/posts/default/114136585869489510'/><link rel='self' type='application/atom+xml' href='http://www.blogger.com/feeds/21184031/posts/default/114136585869489510'/><link rel='alternate' type='text/html' href='http://railsruby.blogspot.com/2006/03/rails-chicklets.html' title='Rails Chicklets'/><author><name>Frank</name><email>noreply@blogger.com</email><gd:image rel='http://schemas.google.com/g/2005#thumbnail' width='16' height='16' src='http://img2.blogblog.com/img/b16-rounded.gif'/></author><thr:total>0</thr:total></entry><entry><id>tag:blogger.com,1999:blog-21184031.post-114136116216315295</id><published>2006-03-02T20:46:00.000-08:00</published><updated>2006-03-02T20:46:02.263-08:00</updated><title type='text'>Ruby on Rails with Apple</title><content type='html'>Apple has finally noticed Ruby on Rails and published a tutorial about it: &lt;a href="http://developer.apple.com/tools/rubyonrails.html"&gt;Using Ruby on Rails for Web Development on Mac OS X&lt;/a&gt;&lt;br /&gt;&lt;br /&gt;&lt;blockquote&gt; "The Ruby on Rails web application framework has built up a tremendous head of steam over the last year. Fueled by some significant benefits and an impressive portfolio of real-world applications already in production, Rails is destined to continue making significant inroads in 2006. Simply put, Ruby on Rails is an open source tool that gives you the advantage of rapidly creating great web applications backed by SQL databases to keep up with the speed of the web. And with the release of Rails 1.0 kicking off the new year, there's never been a better time to climb aboard."&lt;/blockquote&gt;&lt;br /&gt;&lt;br /&gt;I was going to buy &lt;a href="http://macromates.com/"&gt;Textmate&lt;/a&gt; but it sucks that it is available for only MAC OSX&lt;div class="blogger-post-footer"&gt;&lt;img width='1' height='1' src='https://blogger.googleusercontent.com/tracker/21184031-114136116216315295?l=railsruby.blogspot.com' alt='' /&gt;&lt;/div&gt;</content><link rel='replies' type='application/atom+xml' href='http://railsruby.blogspot.com/feeds/114136116216315295/comments/default' title='Post Comments'/><link rel='replies' type='text/html' href='http://www.blogger.com/comment.g?blogID=21184031&amp;postID=114136116216315295' title='0 Comments'/><link rel='edit' type='application/atom+xml' href='http://www.blogger.com/feeds/21184031/posts/default/114136116216315295'/><link rel='self' type='application/atom+xml' href='http://www.blogger.com/feeds/21184031/posts/default/114136116216315295'/><link rel='alternate' type='text/html' href='http://railsruby.blogspot.com/2006/03/ruby-on-rails-with-apple.html' title='Ruby on Rails with Apple'/><author><name>Frank</name><email>noreply@blogger.com</email><gd:image rel='http://schemas.google.com/g/2005#thumbnail' width='16' height='16' src='http://img2.blogblog.com/img/b16-rounded.gif'/></author><thr:total>0</thr:total></entry><entry><id>tag:blogger.com,1999:blog-21184031.post-114106732723085407</id><published>2006-02-27T11:08:00.000-08:00</published><updated>2006-02-27T11:08:47.416-08:00</updated><title type='text'>Lucene "Lock obtain timed out"</title><content type='html'>Today I had to interrupt my Java search server while it was indexing. Next time when I ran the server, it kept giving me the following messages:&lt;br /&gt;&lt;blockquote&gt; caught a class java.io.IOException&lt;br /&gt; with message: Lock obtain timed out: Lock@/tmp/lucene-bc34bb2d3ec966220086135e748049c5-write.lock&lt;/blockquote&gt;&lt;br /&gt;Solution was to delete the /tmp/lucene-* files.&lt;div class="blogger-post-footer"&gt;&lt;img width='1' height='1' src='https://blogger.googleusercontent.com/tracker/21184031-114106732723085407?l=railsruby.blogspot.com' alt='' /&gt;&lt;/div&gt;</content><link rel='replies' type='application/atom+xml' href='http://railsruby.blogspot.com/feeds/114106732723085407/comments/default' title='Post Comments'/><link rel='replies' type='text/html' href='http://www.blogger.com/comment.g?blogID=21184031&amp;postID=114106732723085407' title='1 Comments'/><link rel='edit' type='application/atom+xml' href='http://www.blogger.com/feeds/21184031/posts/default/114106732723085407'/><link rel='self' type='application/atom+xml' href='http://www.blogger.com/feeds/21184031/posts/default/114106732723085407'/><link rel='alternate' type='text/html' href='http://railsruby.blogspot.com/2006/02/lucene-lock-obtain-timed-out.html' title='Lucene &quot;Lock obtain timed out&quot;'/><author><name>Frank</name><email>noreply@blogger.com</email><gd:image rel='http://schemas.google.com/g/2005#thumbnail' width='16' height='16' src='http://img2.blogblog.com/img/b16-rounded.gif'/></author><thr:total>1</thr:total></entry><entry><id>tag:blogger.com,1999:blog-21184031.post-114092405274791086</id><published>2006-02-25T19:18:00.000-08:00</published><updated>2006-02-25T19:20:52.776-08:00</updated><title type='text'>SQLException: Before start of result set</title><content type='html'>Today I was getting this error when making a SELECT query. This error is raised typically because you didn't call resultset.first() or resultset.next() function.&lt;br /&gt;&lt;br /&gt;So before using a field from a record in MySQL&lt;br /&gt;&lt;p class="code"&gt;&lt;br /&gt;                        if ( Portal != null &amp;&amp; Portal.next() ){&lt;br /&gt;                                url = "//"+Portal.getString("portal_url")+".domain.com/"+ RS.getString("permalink");&lt;br /&gt;                        }&lt;br /&gt;&lt;/p&gt;&lt;div class="blogger-post-footer"&gt;&lt;img width='1' height='1' src='https://blogger.googleusercontent.com/tracker/21184031-114092405274791086?l=railsruby.blogspot.com' alt='' /&gt;&lt;/div&gt;</content><link rel='replies' type='application/atom+xml' href='http://railsruby.blogspot.com/feeds/114092405274791086/comments/default' title='Post Comments'/><link rel='replies' type='text/html' href='http://www.blogger.com/comment.g?blogID=21184031&amp;postID=114092405274791086' title='2 Comments'/><link rel='edit' type='application/atom+xml' href='http://www.blogger.com/feeds/21184031/posts/default/114092405274791086'/><link rel='self' type='application/atom+xml' href='http://www.blogger.com/feeds/21184031/posts/default/114092405274791086'/><link rel='alternate' type='text/html' href='http://railsruby.blogspot.com/2006/02/sqlexception-before-start-of-result.html' title='SQLException: Before start of result set'/><author><name>Frank</name><email>noreply@blogger.com</email><gd:image rel='http://schemas.google.com/g/2005#thumbnail' width='16' height='16' src='http://img2.blogblog.com/img/b16-rounded.gif'/></author><thr:total>2</thr:total></entry><entry><id>tag:blogger.com,1999:blog-21184031.post-114089184643551793</id><published>2006-02-25T09:55:00.001-08:00</published><updated>2006-02-25T10:24:06.463-08:00</updated><title type='text'>Lucene Term Vectors</title><content type='html'>Using term vectors, we can provide choices to the users of our application that match the current choice. For instance, on a site that I am developing, I plan to use term vectors to offer my site users the ability to see "related articles" when they are reading an article.&lt;br /&gt;&lt;br /&gt;Term Vectors are specified by setting an instance of Field.TermVector  to true when calling a method similar to the following:&lt;br /&gt;&lt;p class="code"&gt; Field(String, String, Field.Store, Field.Index, Field.TermVector)&lt;/p&gt;&lt;br /&gt;&lt;br /&gt;If you don't want to store the term vector&lt;br /&gt;&lt;p class="code"&gt;Field(name, value, Field.Store.YES, Field.Index.TOKENIZED)&lt;/p&gt;&lt;br /&gt;If you do want to store the term vector&lt;br /&gt;&lt;p class="code"&gt;Field(name, value, Field.Store.YES, Field.Index.TOKENIZED, storeTermVector)&lt;/p&gt;&lt;br /&gt;&lt;br /&gt;Term vector can also be stored for "Unstored" fields:&lt;br /&gt;Don't store term vector, but tokenize and index the field, without storing the field&lt;br /&gt;&lt;p class="code"&gt;Field(name, value, Field.Store.NO, Field.Index.TOKENIZED)&lt;/p&gt;&lt;br /&gt;If you do want to store term vector, tokenize and index the field, but not storing it in the index:&lt;br /&gt;&lt;p class="code"&gt;Field(name, value, Field.Store.NO, Field.Index.TOKENIZED, storeTermVector)&lt;/p&gt;&lt;br /&gt;&lt;br /&gt;&lt;br /&gt;To find out whether term vector is stored for a field, we can use: isTermVectorStored&lt;br /&gt;&lt;p class="code"&gt;public final boolean isTermVectorStored()&lt;br /&gt;IndexReader.getTermFreqVector(int,String)&lt;br /&gt;IndexReader.getTermFreqVector(int, String)&lt;/p&gt;&lt;br /&gt;Note from the manual about the above:&lt;br /&gt;&lt;blockquote&gt;These methods do not provide access to the original content of the field, only to terms used to index it. If the original content must be preserved, use the stored attribute instead.&lt;span style="font-style:italic;"&gt;&lt;/span&gt;&lt;/blockquote&gt;&lt;br /&gt;&lt;br /&gt;Other related functions:&lt;br /&gt;&lt;p class="code"&gt;isStoreOffsetWithTermVector&lt;/p&gt;&lt;br /&gt;&lt;p class="code"&gt;isStorePositionWithTermVector&lt;/p&gt;&lt;div class="blogger-post-footer"&gt;&lt;img width='1' height='1' src='https://blogger.googleusercontent.com/tracker/21184031-114089184643551793?l=railsruby.blogspot.com' alt='' /&gt;&lt;/div&gt;</content><link rel='replies' type='application/atom+xml' href='http://railsruby.blogspot.com/feeds/114089184643551793/comments/default' title='Post Comments'/><link rel='replies' type='text/html' href='http://www.blogger.com/comment.g?blogID=21184031&amp;postID=114089184643551793' title='3 Comments'/><link rel='edit' type='application/atom+xml' href='http://www.blogger.com/feeds/21184031/posts/default/114089184643551793'/><link rel='self' type='application/atom+xml' href='http://www.blogger.com/feeds/21184031/posts/default/114089184643551793'/><link rel='alternate' type='text/html' href='http://railsruby.blogspot.com/2006/02/lucene-term-vectors_25.html' title='Lucene Term Vectors'/><author><name>Frank</name><email>noreply@blogger.com</email><gd:image rel='http://schemas.google.com/g/2005#thumbnail' width='16' height='16' src='http://img2.blogblog.com/img/b16-rounded.gif'/></author><thr:total>3</thr:total></entry><entry><id>tag:blogger.com,1999:blog-21184031.post-114089088928401496</id><published>2006-02-25T09:55:00.000-08:00</published><updated>2006-02-25T10:10:08.006-08:00</updated><title type='text'>Lucene Term Vectors</title><content type='html'>Using term vectors, we can provide choices to the users of our application that match the current choice. For instance, on a site that I am developing, I plan to use term vectors to offer my site users the ability to see "related articles" when they are reading an article.&lt;br /&gt;&lt;br /&gt;Term Vectors are specified by setting an instance of Field.TermVector  to true when calling a method similar to the following:&lt;br /&gt;&lt;p class="code"&gt; Field(String, String, Field.Store, Field.Index, Field.TermVector)&lt;/p&gt;&lt;br /&gt;&lt;br /&gt;If you don't want to store the term vector&lt;br /&gt;&lt;p class="code"&gt;Field(name, value, Field.Store.YES, Field.Index.TOKENIZED)&lt;/p&gt;&lt;br /&gt;If you do want to store the term vector&lt;br /&gt;&lt;p class="code"&gt;Field(name, value, Field.Store.YES, Field.Index.TOKENIZED, storeTermVector)&lt;/p&gt;&lt;br /&gt;&lt;br /&gt;Term vector can also be stored for "Unstored" fields:&lt;br /&gt;Don't store term vector, but tokenize and index the field, without storing the field&lt;br /&gt;&lt;p class="code"&gt;Field(name, value, Field.Store.NO, Field.Index.TOKENIZED)&lt;/p&gt;&lt;br /&gt;If you do want to store term vector, tokenize and index the field, but not storing it in the index:&lt;br /&gt;&lt;p class="code"&gt;Field(name, value, Field.Store.NO, Field.Index.TOKENIZED, storeTermVector)&lt;/p&gt;&lt;br /&gt;&lt;br /&gt;&lt;br /&gt;To find out whether term vector is stored for a field, we can use: isTermVectorStored&lt;br /&gt;&lt;p class="code"&gt;public final boolean isTermVectorStored()&lt;br /&gt;IndexReader.getTermFreqVector(int,String)&lt;br /&gt;// TermFreqVector myTermFreqVector = myreader.getTermFreqVector(id, "field_name");&lt;br /&gt;IndexReader.getTermFreqVector(int, String)&lt;/p&gt;&lt;br /&gt;Note from the manual about the above:&lt;br /&gt;&lt;blockquote&gt;These methods do not provide access to the original content of the field, only to terms used to index it. If the original content must be preserved, use the stored attribute instead.&lt;span style="font-style:italic;"&gt;&lt;/span&gt;&lt;/blockquote&gt;&lt;br /&gt;&lt;br /&gt;Other related functions:&lt;br /&gt;&lt;p class="code"&gt;isStoreOffsetWithTermVector&lt;/p&gt;&lt;br /&gt;&lt;p class="code"&gt;isStorePositionWithTermVector&lt;/p&gt;&lt;div class="blogger-post-footer"&gt;&lt;img width='1' height='1' src='https://blogger.googleusercontent.com/tracker/21184031-114089088928401496?l=railsruby.blogspot.com' alt='' /&gt;&lt;/div&gt;</content><link rel='replies' type='application/atom+xml' href='http://railsruby.blogspot.com/feeds/114089088928401496/comments/default' title='Post Comments'/><link rel='replies' type='text/html' href='http://www.blogger.com/comment.g?blogID=21184031&amp;postID=114089088928401496' title='1 Comments'/><link rel='edit' type='application/atom+xml' href='http://www.blogger.com/feeds/21184031/posts/default/114089088928401496'/><link rel='self' type='application/atom+xml' href='http://www.blogger.com/feeds/21184031/posts/default/114089088928401496'/><link rel='alternate' type='text/html' href='http://railsruby.blogspot.com/2006/02/lucene-term-vectors.html' title='Lucene Term Vectors'/><author><name>Frank</name><email>noreply@blogger.com</email><gd:image rel='http://schemas.google.com/g/2005#thumbnail' width='16' height='16' src='http://img2.blogblog.com/img/b16-rounded.gif'/></author><thr:total>1</thr:total></entry><entry><id>tag:blogger.com,1999:blog-21184031.post-114088836486328928</id><published>2006-02-25T09:17:00.000-08:00</published><updated>2006-02-25T09:26:27.186-08:00</updated><title type='text'>Vectors in Java</title><content type='html'>Since I have been working on integrating Lucene, my current posts will talk more about Java than anything else.&lt;br /&gt;&lt;br /&gt;&lt;span style="font-weight:bold;"&gt;What are Vectors?&lt;/span&gt;&lt;br /&gt;Vectors defined in java.util package.&lt;br /&gt;&lt;p class="code"&gt;import java.util.Vector;&lt;/p&gt;&lt;br /&gt;Think of them as arrays that dynamically resize.&lt;br /&gt;Vectors are slower than arrays.&lt;br /&gt;&lt;br /&gt;Sample usage&lt;br /&gt;&lt;p class="code"&gt;vec = new Vector();&lt;br /&gt;v.addElement(myArticle);&lt;br /&gt;for(int i=0;i&amp;lt;index;i++)&lt;br /&gt;{&lt;br /&gt;      myArticle=(Article)vec.elementAt(i);&lt;br /&gt;}&lt;/p&gt;&lt;div class="blogger-post-footer"&gt;&lt;img width='1' height='1' src='https://blogger.googleusercontent.com/tracker/21184031-114088836486328928?l=railsruby.blogspot.com' alt='' /&gt;&lt;/div&gt;</content><link rel='replies' type='application/atom+xml' href='http://railsruby.blogspot.com/feeds/114088836486328928/comments/default' title='Post Comments'/><link rel='replies' type='text/html' href='http://www.blogger.com/comment.g?blogID=21184031&amp;postID=114088836486328928' title='0 Comments'/><link rel='edit' type='application/atom+xml' href='http://www.blogger.com/feeds/21184031/posts/default/114088836486328928'/><link rel='self' type='application/atom+xml' href='http://www.blogger.com/feeds/21184031/posts/default/114088836486328928'/><link rel='alternate' type='text/html' href='http://railsruby.blogspot.com/2006/02/vectors-in-java.html' title='Vectors in Java'/><author><name>Frank</name><email>noreply@blogger.com</email><gd:image rel='http://schemas.google.com/g/2005#thumbnail' width='16' height='16' src='http://img2.blogblog.com/img/b16-rounded.gif'/></author><thr:total>0</thr:total></entry><entry><id>tag:blogger.com,1999:blog-21184031.post-114088776498849210</id><published>2006-02-25T09:06:00.000-08:00</published><updated>2006-02-25T09:16:05.236-08:00</updated><title type='text'>Lucene Field Types</title><content type='html'>The following are the &lt;a href="http://lucene.apache.org/java/docs/api/org/apache/lucene/document/Field.html"&gt;field&lt;/a&gt; types in &lt;a href="http://lucene.apache.org/java/docs/"&gt;Lucene&lt;/a&gt; for my (and your) reference&lt;br /&gt;&lt;br /&gt;Text: "tokenized and indexed, and is stored in the index" "Term vector will not be stored for this field"&lt;br /&gt;&lt;p class="code"&gt;Field.Store.YES, Field.Index.TOKENIZED&lt;br /&gt;Field(name, value) &lt;br /&gt;Field(name, value, storeTermVector)&lt;br /&gt;Field(name, value, Field.Store.YES, Field.Index.TOKENIZED, storeTermVector)&lt;br /&gt;Field(name, value, Field.Store.YES, Field.Index.TOKENIZED)&lt;/p&gt;&lt;br /&gt;Unindexed: "not tokenized nor indexed, but is stored in the index"&lt;br /&gt;&lt;p class="code"&gt;Field.Index.NO&lt;br /&gt;e.g. Field(name, value, Field.Store.YES, Field.Index.NO)&lt;/p&gt;&lt;br /&gt;Unstored: "tokenized and indexed, but that is not stored in the index"&lt;br /&gt;&lt;p class="code"&gt;Field(name, value, Field.Store.NO, Field.Index.TOKENIZED)&lt;br /&gt;and&lt;br /&gt; Field(name, value, Field.Store.NO, Field.Index.TOKENIZED, storeTermVector)&lt;/p&gt;&lt;br /&gt;&lt;br /&gt;Keyword: "not tokenized, but is indexed and stored"&lt;br /&gt;&lt;p class="code"&gt;Field(name, value, Field.Store.YES, Field.Index.UN_TOKENIZED)&lt;br /&gt;&lt;/p&gt;&lt;div class="blogger-post-footer"&gt;&lt;img width='1' height='1' src='https://blogger.googleusercontent.com/tracker/21184031-114088776498849210?l=railsruby.blogspot.com' alt='' /&gt;&lt;/div&gt;</content><link rel='replies' type='application/atom+xml' href='http://railsruby.blogspot.com/feeds/114088776498849210/comments/default' title='Post Comments'/><link rel='replies' type='text/html' href='http://www.blogger.com/comment.g?blogID=21184031&amp;postID=114088776498849210' title='3 Comments'/><link rel='edit' type='application/atom+xml' href='http://www.blogger.com/feeds/21184031/posts/default/114088776498849210'/><link rel='self' type='application/atom+xml' href='http://www.blogger.com/feeds/21184031/posts/default/114088776498849210'/><link rel='alternate' type='text/html' href='http://railsruby.blogspot.com/2006/02/lucene-field-types.html' title='Lucene Field Types'/><author><name>Frank</name><email>noreply@blogger.com</email><gd:image rel='http://schemas.google.com/g/2005#thumbnail' width='16' height='16' src='http://img2.blogblog.com/img/b16-rounded.gif'/></author><thr:total>3</thr:total></entry><entry><id>tag:blogger.com,1999:blog-21184031.post-114088623805674318</id><published>2006-02-25T08:41:00.000-08:00</published><updated>2006-02-25T08:50:39.743-08:00</updated><title type='text'>org.apache.lucene.document.Field has been deprecated</title><content type='html'>I have been working on getting Lucene to work with Ruby on Rails. In my SearchServer.java, I kept getting the following messages on compile:&lt;br /&gt;&lt;br /&gt;&lt;p class="code"&gt;&lt;br /&gt;Note: SearchServer.java uses or overrides a deprecated API.&lt;br /&gt;Note: Recompile with -Xlint:deprecation for details.&lt;br /&gt;Note: SearchServer.java uses unchecked or unsafe operations.&lt;br /&gt;Note: Recompile with -Xlint:unchecked for details.&lt;br /&gt;&lt;/p&gt;&lt;br /&gt;&lt;br /&gt;Then I executed:&lt;br /&gt;&lt;p class="code"&gt; javac SearchServer.java -Xlint:deprecation&lt;/p&gt;&lt;br /&gt;and got the output:&lt;br /&gt;&lt;p class="code"&gt;SearchServer.java:297: warning: [deprecation] Text(java.lang.String,java.lang.String) in org.apache.lucene.document.Field has been deprecated&lt;br /&gt;                        doc.add(Field.Text("title", RS.getString("title")));&lt;br /&gt;                                     ^&lt;br /&gt;SearchServer.java:298: warning: [deprecation] Text(java.lang.String,java.lang.String) in org.apache.lucene.document.Field has been deprecated&lt;br /&gt;                        doc.add(Field.Text("type", "article"));&lt;br /&gt;                                     ^&lt;br /&gt;SearchServer.java:299: warning: [deprecation] Text(java.lang.String,java.lang.String) in org.apache.lucene.document.Field has been deprecated&lt;br /&gt;                        doc.add(Field.Text("author", RS.getString("author")));&lt;br /&gt;                                     ^&lt;br /&gt;SearchServer.java:300: warning: [deprecation] Text(java.lang.String,java.lang.String) in org.apache.lucene.document.Field has been deprecated&lt;br /&gt;                        doc.add(Field.Text("body", RS.getString("body")));&lt;br /&gt;                                     ^&lt;br /&gt;SearchServer.java:301: warning: [deprecation] Text(java.lang.String,java.lang.String) in org.apache.lucene.document.Field has been deprecated&lt;br /&gt;                        doc.add(Field.Text("extended", RS.getString("extended")));&lt;br /&gt;                                     ^&lt;br /&gt;SearchServer.java:302: warning: [deprecation] Text(java.lang.String,java.lang.String) in org.apache.lucene.document.Field has been deprecated&lt;br /&gt;                        doc.add(Field.Text("tags", RS.getString("tags")));&lt;br /&gt;&lt;br /&gt;warning: [deprecation] UnIndexed(java.lang.String,java.lang.String) in org.apache.lucene.document.Field has been deprecated&lt;/p&gt;&lt;br /&gt;&lt;br /&gt;After researching online I confirmed that the document.Field has infact been deprecated. What this means is that if you were to upgrade Lucene these functions may no longer be available.&lt;br /&gt;&lt;br /&gt;The correct functions are mentioned in the Lucene demos that come with 1.9&lt;br /&gt;&lt;br /&gt;&lt;p class="code"&gt;&lt;br /&gt;/**&lt;br /&gt; * Copyright 2004 The Apache Software Foundation&lt;br /&gt; *&lt;br /&gt; * Licensed under the Apache License, Version 2.0 (the "License");&lt;br /&gt; * you may not use this file except in compliance with the License.&lt;br /&gt; * You may obtain a copy of the License at&lt;br /&gt; *&lt;br /&gt; *     http://www.apache.org/licenses/LICENSE-2.0&lt;br /&gt; *&lt;br /&gt; * Unless required by applicable law or agreed to in writing, software&lt;br /&gt; * distributed under the License is distributed on an "AS IS" BASIS,&lt;br /&gt; * WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.&lt;br /&gt; * See the License for the specific language governing permissions and&lt;br /&gt; * limitations under the License.&lt;br /&gt; */&lt;br /&gt;&lt;br /&gt;.................&lt;br /&gt;&lt;br /&gt;public class FileDocument {&lt;br /&gt;  /** Makes a document for a File.&lt;br /&gt;    &amp;lt;p&amp;gt;&lt;br /&gt;    The document has three fields:&lt;br /&gt;    &amp;lt;ul&amp;gt;&lt;br /&gt;    &amp;lt;li&amp;gt;&amp;lt;code&amp;gt;path&amp;lt;/code&amp;gt;--containing the pathname of the file, as a stored,&lt;br /&gt;    untokenized field;&lt;br /&gt;    &amp;lt;li&amp;gt;&amp;lt;code&amp;gt;modified&amp;lt;/code&amp;gt;--containing the last modified date of the file as&lt;br /&gt;    a field as created by &amp;lt;a&lt;br /&gt;    href="lucene.document.DateTools.html"&amp;gt;DateTools&amp;lt;/a&amp;gt;; and&lt;br /&gt;    &amp;lt;li&amp;gt;&amp;lt;code&amp;gt;contents&amp;lt;/code&amp;gt;--containing the full contents of the file, as a&lt;br /&gt;    Reader field;&lt;br /&gt;    */&lt;br /&gt;  public static Document Document(File f)&lt;br /&gt;       throws java.io.FileNotFoundException {&lt;br /&gt;&lt;br /&gt;    // make a new, empty document&lt;br /&gt;    Document doc = new Document();&lt;br /&gt;&lt;br /&gt;    // Add the path of the file as a field named "path".  Use a field that is&lt;br /&gt;    // indexed (i.e. searchable), but don't tokenize the field into words.&lt;br /&gt;    doc.add(new Field("path", f.getPath(), Field.Store.YES, Field.Index.UN_TOKENIZED));&lt;br /&gt;&lt;br /&gt;    // Add the last modified date of the file a field named "modified".  Use&lt;br /&gt;    // a field that is indexed (i.e. searchable), but don't tokenize the field&lt;br /&gt;    // into words.&lt;br /&gt;    doc.add(new Field("modified",&lt;br /&gt;        DateTools.timeToString(f.lastModified(), DateTools.Resolution.MINUTE),&lt;br /&gt;        Field.Store.YES, Field.Index.UN_TOKENIZED));&lt;br /&gt;&lt;br /&gt;    // Add the contents of the file to a field named "contents".  Specify a Reader,&lt;br /&gt;    // so that the text of the file is tokenized and indexed, but not stored.&lt;br /&gt;    // Note that FileReader expects the file to be in the system's default encoding.&lt;br /&gt;    // If that's not the case searching for special characters will fail.&lt;br /&gt;    doc.add(new Field("contents", new FileReader(f)));&lt;br /&gt;&lt;br /&gt;    // return the document&lt;br /&gt;    return doc;&lt;br /&gt;  }&lt;br /&gt;&lt;br /&gt;&lt;/p&gt;&lt;div class="blogger-post-footer"&gt;&lt;img width='1' height='1' src='https://blogger.googleusercontent.com/tracker/21184031-114088623805674318?l=railsruby.blogspot.com' alt='' /&gt;&lt;/div&gt;</content><link rel='replies' type='application/atom+xml' href='http://railsruby.blogspot.com/feeds/114088623805674318/comments/default' title='Post Comments'/><link rel='replies' type='text/html' href='http://www.blogger.com/comment.g?blogID=21184031&amp;postID=114088623805674318' title='4 Comments'/><link rel='edit' type='application/atom+xml' href='http://www.blogger.com/feeds/21184031/posts/default/114088623805674318'/><link rel='self' type='application/atom+xml' href='http://www.blogger.com/feeds/21184031/posts/default/114088623805674318'/><link rel='alternate' type='text/html' href='http://railsruby.blogspot.com/2006/02/orgapachelucenedocumentfield-has-been.html' title='org.apache.lucene.document.Field has been deprecated'/><author><name>Frank</name><email>noreply@blogger.com</email><gd:image rel='http://schemas.google.com/g/2005#thumbnail' width='16' height='16' src='http://img2.blogblog.com/img/b16-rounded.gif'/></author><thr:total>4</thr:total></entry><entry><id>tag:blogger.com,1999:blog-21184031.post-114081673523834657</id><published>2006-02-24T13:32:00.000-08:00</published><updated>2006-02-24T13:32:15.236-08:00</updated><title type='text'>XMLRPC::FaultException</title><content type='html'>If you are getting this message, check your Ruby on Rails logs.&lt;br /&gt;&lt;br /&gt;&lt;span style="font-weight:bold;"&gt;XMLRPC::FaultException (java.lang.Exception: RPC handler object not found for "test": No default handler registered):&lt;br /&gt;    /usr/local/lib/ruby/1.8/xmlrpc/client.rb:403:in `call'&lt;br /&gt;&lt;/span&gt;&lt;br /&gt;&lt;br /&gt;Typically, it means that you do not have a default handler registered.&lt;br /&gt;&lt;br /&gt;A default handler is registered using something like (Thanks Erik):&lt;br /&gt;&lt;p class="code"&gt;&lt;br /&gt; WebServer server = new WebServer(port);&lt;br /&gt; server.addHandler("$default", new SearchServer&lt;br /&gt;                (FSDirectory.getDirectory(indexPath, false)));&lt;br /&gt;&lt;/p&gt;&lt;div class="blogger-post-footer"&gt;&lt;img width='1' height='1' src='https://blogger.googleusercontent.com/tracker/21184031-114081673523834657?l=railsruby.blogspot.com' alt='' /&gt;&lt;/div&gt;</content><link rel='replies' type='application/atom+xml' href='http://railsruby.blogspot.com/feeds/114081673523834657/comments/default' title='Post Comments'/><link rel='replies' type='text/html' href='http://www.blogger.com/comment.g?blogID=21184031&amp;postID=114081673523834657' title='2 Comments'/><link rel='edit' type='application/atom+xml' href='http://www.blogger.com/feeds/21184031/posts/default/114081673523834657'/><link rel='self' type='application/atom+xml' href='http://www.blogger.com/feeds/21184031/posts/default/114081673523834657'/><link rel='alternate' type='text/html' href='http://railsruby.blogspot.com/2006/02/xmlrpcfaultexception.html' title='XMLRPC::FaultException'/><author><name>Frank</name><email>noreply@blogger.com</email><gd:image rel='http://schemas.google.com/g/2005#thumbnail' width='16' height='16' src='http://img2.blogblog.com/img/b16-rounded.gif'/></author><thr:total>2</thr:total></entry><entry><id>tag:blogger.com,1999:blog-21184031.post-114081636232942948</id><published>2006-02-24T13:26:00.000-08:00</published><updated>2006-02-24T13:26:02.410-08:00</updated><title type='text'>Exception in thread "main" java.lang.NoClassDefFoundError: org/apache/commons/codec/DecoderException</title><content type='html'>Do I hate Java or what? I have been trying to compile a searchServer program but was stuck on the following error for quite long:&lt;br /&gt;&lt;br /&gt;&lt;span style="font-weight:bold;"&gt;Exception in thread "main" java.lang.NoClassDefFoundError: org/apache/commons/codec/DecoderException&lt;/span&gt;&lt;br /&gt;&lt;br /&gt;I had placed the commons-codec-1.2.jar in my class path when compiling using -cp and was including the needed classes in my program via import.&lt;br /&gt;&lt;br /&gt;The solution was to add the path to commons-codec-1.2.jar in my .bashrc file and then export it.&lt;br /&gt;&lt;br /&gt;Frank&lt;div class="blogger-post-footer"&gt;&lt;img width='1' height='1' src='https://blogger.googleusercontent.com/tracker/21184031-114081636232942948?l=railsruby.blogspot.com' alt='' /&gt;&lt;/div&gt;</content><link rel='replies' type='application/atom+xml' href='http://railsruby.blogspot.com/feeds/114081636232942948/comments/default' title='Post Comments'/><link rel='replies' type='text/html' href='http://www.blogger.com/comment.g?blogID=21184031&amp;postID=114081636232942948' title='1 Comments'/><link rel='edit' type='application/atom+xml' href='http://www.blogger.com/feeds/21184031/posts/default/114081636232942948'/><link rel='self' type='application/atom+xml' href='http://www.blogger.com/feeds/21184031/posts/default/114081636232942948'/><link rel='alternate' type='text/html' href='http://railsruby.blogspot.com/2006/02/exception-in-thread-main.html' title='Exception in thread &quot;main&quot; java.lang.NoClassDefFoundError: org/apache/commons/codec/DecoderException'/><author><name>Frank</name><email>noreply@blogger.com</email><gd:image rel='http://schemas.google.com/g/2005#thumbnail' width='16' height='16' src='http://img2.blogblog.com/img/b16-rounded.gif'/></author><thr:total>1</thr:total></entry><entry><id>tag:blogger.com,1999:blog-21184031.post-114072262649844850</id><published>2006-02-23T11:22:00.000-08:00</published><updated>2006-02-23T11:23:53.410-08:00</updated><title type='text'>Errno::ENOENT when opening URL</title><content type='html'>If you are trying to open a URL and are getting the error mesage:&lt;br /&gt;&lt;p class="code"&gt; Errno::ENOENT&lt;/p&gt;&lt;br /&gt;&lt;br /&gt;Make sure you have this statement:&lt;br /&gt;&lt;p class="code"&gt;require 'open-uri'&lt;/p&gt;&lt;div class="blogger-post-footer"&gt;&lt;img width='1' height='1' src='https://blogger.googleusercontent.com/tracker/21184031-114072262649844850?l=railsruby.blogspot.com' alt='' /&gt;&lt;/div&gt;</content><link rel='replies' type='application/atom+xml' href='http://railsruby.blogspot.com/feeds/114072262649844850/comments/default' title='Post Comments'/><link rel='replies' type='text/html' href='http://www.blogger.com/comment.g?blogID=21184031&amp;postID=114072262649844850' title='3 Comments'/><link rel='edit' type='application/atom+xml' href='http://www.blogger.com/feeds/21184031/posts/default/114072262649844850'/><link rel='self' type='application/atom+xml' href='http://www.blogger.com/feeds/21184031/posts/default/114072262649844850'/><link rel='alternate' type='text/html' href='http://railsruby.blogspot.com/2006/02/errnoenoent-when-opening-url.html' title='Errno::ENOENT when opening URL'/><author><name>Frank</name><email>noreply@blogger.com</email><gd:image rel='http://schemas.google.com/g/2005#thumbnail' width='16' height='16' src='http://img2.blogblog.com/img/b16-rounded.gif'/></author><thr:total>3</thr:total></entry><entry><id>tag:blogger.com,1999:blog-21184031.post-114054659229507573</id><published>2006-02-21T10:29:00.000-08:00</published><updated>2006-02-21T10:32:45.970-08:00</updated><title type='text'>HTTPS open-uri : basic authentication over SSL</title><content type='html'>Today I was looking for a way to open HTTPS urls with basic authentication. While looking, I came across this post wheich shows you how to patch open-uri to work with HTTPS. &lt;br /&gt;&lt;br /&gt;I ended up using 'net/https' with 'net/http'  to implement the basic authentication over SSL. So try it at your own risk and if it works, let me know ;)&lt;br /&gt;&lt;a href="http://blade.nagaokaut.ac.jp/cgi-bin/scat.rb/ruby/ruby-core/4365"&gt;Re: Patch that enables https in open-uri.rb&lt;/a&gt;&lt;br /&gt;&lt;br /&gt;Here is the patch by Tanaka Akira&lt;br /&gt;&lt;p class="code"&gt;Index: lib/open-uri.rb&lt;br /&gt;===================================================================&lt;br /&gt;RCS file: /src/ruby/lib/open-uri.rb,v&lt;br /&gt;retrieving revision 1.28&lt;br /&gt;diff -u -p -r1.28 open-uri.rb&lt;br /&gt;--- lib/open-uri.rb 5 Feb 2005 14:13:27 -0000 1.28&lt;br /&gt;+++ lib/open-uri.rb 5 Feb 2005 14:14:25 -0000&lt;br /&gt;@@ -539,9 +539,8 @@ module URI&lt;br /&gt;         header['host'] += ":#{uri.port}" if uri.port&lt;br /&gt;       end&lt;br /&gt; &lt;br /&gt;-      require 'net/http'&lt;br /&gt;       resp = nil&lt;br /&gt;-      Net::HTTP.start(self.host, self.port) {|http|&lt;br /&gt;+      http_start(self.host, self.port) {|http|&lt;br /&gt;         http.request_get(uri.to_s, header) {|response|&lt;br /&gt;           resp = response&lt;br /&gt;           if options[:content_length_proc] &amp;&amp; Net::HTTPSuccess === resp&lt;br /&gt;@@ -576,11 +575,32 @@ module URI&lt;br /&gt;     end&lt;br /&gt; &lt;br /&gt;     include OpenURI::OpenRead&lt;br /&gt;+&lt;br /&gt;+    private&lt;br /&gt;+    def http_start(host, port, &amp;block)&lt;br /&gt;+      require 'net/http'&lt;br /&gt;+      Net::HTTP.start(host, port, &amp;block)&lt;br /&gt;+    end&lt;br /&gt;   end&lt;br /&gt; &lt;br /&gt;   class HTTPS&lt;br /&gt;-    def proxy_open(buf, uri, options) # :nodoc:&lt;br /&gt;-      raise ArgumentError, "open-uri doesn't support https."&lt;br /&gt;+    private&lt;br /&gt;+    def http_start(host, port, &amp;block)&lt;br /&gt;+      require 'net/https'&lt;br /&gt;+      http = Net::HTTP.new(host, port)&lt;br /&gt;+      http.verify_mode = OpenSSL::SSL::VERIFY_PEER&lt;br /&gt;+      setup_ca_certificates(http)&lt;br /&gt;+      http.use_ssl = true&lt;br /&gt;+      http.start(&amp;block)&lt;br /&gt;+    end&lt;br /&gt;+&lt;br /&gt;+    def setup_ca_certificates(http)&lt;br /&gt;+      if File.file? '/etc/ssl/certs/ca-certificates.crt'&lt;br /&gt;+        # Debian ca-certificates package&lt;br /&gt;+        http.ca_file = '/etc/ssl/certs/ca-certificates.crt'&lt;br /&gt;+      else&lt;br /&gt;+        raise SecurityError, 'CA certificates not found'&lt;br /&gt;+      end&lt;br /&gt;     end&lt;br /&gt;   end&lt;/p&gt;&lt;br /&gt;For those interested in how exactly I did Basic Authentication over SSL:&lt;br /&gt;&lt;p class="code"&gt;   require 'net/http'&lt;br /&gt;require "net/https"&lt;br /&gt;    @http=Net::HTTP.new('www.site.com', 443)&lt;br /&gt;    @http.use_ssl = true&lt;br /&gt;    @http.start() {|http|&lt;br /&gt;      req = Net::HTTP::Get.new('/file')&lt;br /&gt;      req.basic_auth 'user', 'pass'&lt;br /&gt;      response = http.request(req)&lt;br /&gt;      print response.body&lt;br /&gt;    }&lt;br /&gt;&lt;/p&gt;&lt;br /&gt;If you want to test the above out, try &lt;br /&gt;&lt;a href="http://code.blogger.com/archives/atom-docs.html#authentication"&gt;Blogger API&lt;/a&gt;&lt;div class="blogger-post-footer"&gt;&lt;img width='1' height='1' src='https://blogger.googleusercontent.com/tracker/21184031-114054659229507573?l=railsruby.blogspot.com' alt='' /&gt;&lt;/div&gt;</content><link rel='replies' type='application/atom+xml' href='http://railsruby.blogspot.com/feeds/114054659229507573/comments/default' title='Post Comments'/><link rel='replies' type='text/html' href='http://www.blogger.com/comment.g?blogID=21184031&amp;postID=114054659229507573' title='6 Comments'/><link rel='edit' type='application/atom+xml' href='http://www.blogger.com/feeds/21184031/posts/default/114054659229507573'/><link rel='self' type='application/atom+xml' href='http://www.blogger.com/feeds/21184031/posts/default/114054659229507573'/><link rel='alternate' type='text/html' href='http://railsruby.blogspot.com/2006/02/https-open-uri-basic-authentication.html' title='HTTPS open-uri : basic authentication over SSL'/><author><name>Frank</name><email>noreply@blogger.com</email><gd:image rel='http://schemas.google.com/g/2005#thumbnail' width='16' height='16' src='http://img2.blogblog.com/img/b16-rounded.gif'/></author><thr:total>6</thr:total></entry><entry><id>tag:blogger.com,1999:blog-21184031.post-114049897883773069</id><published>2006-02-20T21:16:00.000-08:00</published><updated>2006-02-20T21:16:18.953-08:00</updated><title type='text'>Rails SOAP API XML-RPC</title><content type='html'>Ryan shows us how we can create a weblogupdates.ping XML-RPC client and server using Ruby on Rails.&lt;br /&gt;&lt;br /&gt;&lt;a href="http://ryandaigle.com/pebble/2005/11/22/1132673962184.html"&gt;Ryan's Scraps - Creating weblogUpdates.ping SOAP web services with Rails&lt;/a&gt;&lt;div class="blogger-post-footer"&gt;&lt;img width='1' height='1' src='https://blogger.googleusercontent.com/tracker/21184031-114049897883773069?l=railsruby.blogspot.com' alt='' /&gt;&lt;/div&gt;</content><link rel='replies' type='application/atom+xml' href='http://railsruby.blogspot.com/feeds/114049897883773069/comments/default' title='Post Comments'/><link rel='replies' type='text/html' href='http://www.blogger.com/comment.g?blogID=21184031&amp;postID=114049897883773069' title='4 Comments'/><link rel='edit' type='application/atom+xml' href='http://www.blogger.com/feeds/21184031/posts/default/114049897883773069'/><link rel='self' type='application/atom+xml' href='http://www.blogger.com/feeds/21184031/posts/default/114049897883773069'/><link rel='alternate' type='text/html' href='http://railsruby.blogspot.com/2006/02/rails-soap-api-xml-rpc.html' title='Rails SOAP API XML-RPC'/><author><name>Frank</name><email>noreply@blogger.com</email><gd:image rel='http://schemas.google.com/g/2005#thumbnail' width='16' height='16' src='http://img2.blogblog.com/img/b16-rounded.gif'/></author><thr:total>4</thr:total></entry><entry><id>tag:blogger.com,1999:blog-21184031.post-114049859911989646</id><published>2006-02-20T21:08:00.000-08:00</published><updated>2006-02-20T21:09:59.696-08:00</updated><title type='text'>Ruby Encrypt/Encode using digest/sha1</title><content type='html'>To encode strings:&lt;br /&gt;&lt;p class="code"&gt; Digest::SHA1.hexdigest "frankmash.blogspot.com"&lt;br /&gt;=&gt; "443072b4f12ca8796d901d5dce40924ef3c414fd"&lt;br /&gt;&lt;/p&gt;&lt;div class="blogger-post-footer"&gt;&lt;img width='1' height='1' src='https://blogger.googleusercontent.com/tracker/21184031-114049859911989646?l=railsruby.blogspot.com' alt='' /&gt;&lt;/div&gt;</content><link rel='replies' type='application/atom+xml' href='http://railsruby.blogspot.com/feeds/114049859911989646/comments/default' title='Post Comments'/><link rel='replies' type='text/html' href='http://www.blogger.com/comment.g?blogID=21184031&amp;postID=114049859911989646' title='2 Comments'/><link rel='edit' type='application/atom+xml' href='http://www.blogger.com/feeds/21184031/posts/default/114049859911989646'/><link rel='self' type='application/atom+xml' href='http://www.blogger.com/feeds/21184031/posts/default/114049859911989646'/><link rel='alternate' type='text/html' href='http://railsruby.blogspot.com/2006/02/ruby-encryptencode-using-digestsha1.html' title='Ruby Encrypt/Encode using digest/sha1'/><author><name>Frank</name><email>noreply@blogger.com</email><gd:image rel='http://schemas.google.com/g/2005#thumbnail' width='16' height='16' src='http://img2.blogblog.com/img/b16-rounded.gif'/></author><thr:total>2</thr:total></entry><entry><id>tag:blogger.com,1999:blog-21184031.post-114041582541164848</id><published>2006-02-19T22:08:00.000-08:00</published><updated>2006-02-19T22:10:25.753-08:00</updated><title type='text'>HABTM and attributes: Adding to self referential relations</title><content type='html'>One way you can add to a self referential relationship:&lt;br /&gt;&lt;code&gt;self.links &lt;&lt; wp unless self.links.include?(wp)&lt;/code&gt;&lt;br /&gt;&lt;br /&gt;and another way to add with attributes:&lt;br /&gt;&lt;code&gt;&lt;br /&gt; self.links.push_with_attributes(wp, { "link_text" =&gt; url[1] } ) unless self.links.include?(wp)&lt;/code&gt;&lt;div class="blogger-post-footer"&gt;&lt;img width='1' height='1' src='https://blogger.googleusercontent.com/tracker/21184031-114041582541164848?l=railsruby.blogspot.com' alt='' /&gt;&lt;/div&gt;</content><link rel='replies' type='application/atom+xml' href='http://railsruby.blogspot.com/feeds/114041582541164848/comments/default' title='Post Comments'/><link rel='replies' type='text/html' href='http://www.blogger.com/comment.g?blogID=21184031&amp;postID=114041582541164848' title='0 Comments'/><link rel='edit' type='application/atom+xml' href='http://www.blogger.com/feeds/21184031/posts/default/114041582541164848'/><link rel='self' type='application/atom+xml' href='http://www.blogger.com/feeds/21184031/posts/default/114041582541164848'/><link rel='alternate' type='text/html' href='http://railsruby.blogspot.com/2006/02/habtm-and-attributes-adding-to-self.html' title='HABTM and attributes: Adding to self referential relations'/><author><name>Frank</name><email>noreply@blogger.com</email><gd:image rel='http://schemas.google.com/g/2005#thumbnail' width='16' height='16' src='http://img2.blogblog.com/img/b16-rounded.gif'/></author><thr:total>0</thr:total></entry><entry><id>tag:blogger.com,1999:blog-21184031.post-114039727691469377</id><published>2006-02-19T16:54:00.000-08:00</published><updated>2006-02-19T17:01:17.243-08:00</updated><title type='text'>Multiple line regular expressions</title><content type='html'>Today I was looking for a way to remove javascript from HTML pages. The main problem was that regular expressions hardly take into account multiple lines. So after thinking quite a bit (and being unable to find a solution), I finally decided to do a little hack to solve my problem. &lt;br /&gt;&lt;br /&gt;What was the hack? To convert all newline characters in HTML text to a temporary marker, apply the regular expression, and then convert them back.&lt;br /&gt;&lt;br /&gt;&lt;p class="code"&gt;originalresponse=originalresponse.gsub(/(\r\n|\n|\r)/,'[[[NEWLINE]]]')&lt;br /&gt;&lt;br /&gt;originalresponse=originalresponse.gsub(/&amp;lt;script([^&gt;]+)&amp;gt;.*?&amp;lt;\/script&amp;gt;/,'')&lt;br /&gt;&lt;br /&gt;originalresponse=originalresponse.gsub('[[[NEWLINE]]]',"\n")&lt;/p&gt;&lt;div class="blogger-post-footer"&gt;&lt;img width='1' height='1' src='https://blogger.googleusercontent.com/tracker/21184031-114039727691469377?l=railsruby.blogspot.com' alt='' /&gt;&lt;/div&gt;</content><link rel='replies' type='application/atom+xml' href='http://railsruby.blogspot.com/feeds/114039727691469377/comments/default' title='Post Comments'/><link rel='replies' type='text/html' href='http://www.blogger.com/comment.g?blogID=21184031&amp;postID=114039727691469377' title='3 Comments'/><link rel='edit' type='application/atom+xml' href='http://www.blogger.com/feeds/21184031/posts/default/114039727691469377'/><link rel='self' type='application/atom+xml' href='http://www.blogger.com/feeds/21184031/posts/default/114039727691469377'/><link rel='alternate' type='text/html' href='http://railsruby.blogspot.com/2006/02/multiple-line-regular-expressions.html' title='Multiple line regular expressions'/><author><name>Frank</name><email>noreply@blogger.com</email><gd:image rel='http://schemas.google.com/g/2005#thumbnail' width='16' height='16' src='http://img2.blogblog.com/img/b16-rounded.gif'/></author><thr:total>3</thr:total></entry><entry><id>tag:blogger.com,1999:blog-21184031.post-114038755000271401</id><published>2006-02-19T14:18:00.000-08:00</published><updated>2006-02-19T14:19:10.296-08:00</updated><title type='text'>"No such file to load -- spark.rb"</title><content type='html'>If you are getting the following error:&lt;br /&gt;&lt;br /&gt;&lt;span style="font-weight:bold;"&gt;"No such file to load -- spark.rb"&lt;/span&gt;&lt;br /&gt;&lt;br /&gt;Make sure your app can read the spark.rb file in lib directory.&lt;br /&gt;&lt;br /&gt;Frank&lt;div class="blogger-post-footer"&gt;&lt;img width='1' height='1' src='https://blogger.googleusercontent.com/tracker/21184031-114038755000271401?l=railsruby.blogspot.com' alt='' /&gt;&lt;/div&gt;</content><link rel='replies' type='application/atom+xml' href='http://railsruby.blogspot.com/feeds/114038755000271401/comments/default' title='Post Comments'/><link rel='replies' type='text/html' href='http://www.blogger.com/comment.g?blogID=21184031&amp;postID=114038755000271401' title='0 Comments'/><link rel='edit' type='application/atom+xml' href='http://www.blogger.com/feeds/21184031/posts/default/114038755000271401'/><link rel='self' type='application/atom+xml' href='http://www.blogger.com/feeds/21184031/posts/default/114038755000271401'/><link rel='alternate' type='text/html' href='http://railsruby.blogspot.com/2006/02/no-such-file-to-load-sparkrb.html' title='&quot;No such file to load -- spark.rb&quot;'/><author><name>Frank</name><email>noreply@blogger.com</email><gd:image rel='http://schemas.google.com/g/2005#thumbnail' width='16' height='16' src='http://img2.blogblog.com/img/b16-rounded.gif'/></author><thr:total>0</thr:total></entry><entry><id>tag:blogger.com,1999:blog-21184031.post-114030327697886186</id><published>2006-02-18T14:54:00.000-08:00</published><updated>2006-02-18T14:54:37.563-08:00</updated><title type='text'>Radio Shack Falls for Microsoft - Costs the Company 700 Stores?</title><content type='html'>&lt;blockquote&gt;&lt;a href="http://seattletimes.nwsource.com/html/businesstechnology/2002812917_radioshack18.html"&gt;The Seattle Times: Business &lt;/a&gt;: "DALLAS — RadioShack's troubles deepened Friday, as the electronics retailer announced it would close up to 10 percent of its 7,000 stores after a report of weak fourth-quarter earnings.&lt;br /&gt;&lt;br /&gt;At an investment conference at RadioShack's Fort Worth, Texas, headquarters, where the news was released, President and Chief Executive David Edmondson apologized to investors over 'misstatements' on his résumé."&lt;/blockquote&gt;&lt;br /&gt;&lt;br /&gt;Yet another reason why Radio Shack chose Windows. Now that they can't afford it, they are closing 700 stores. Smart people: Makes me wonder who else lied on their resume like &lt;a href="http://frankmash.blogspot.com/2006/02/radioshack-ceo-lied-on-resume.html"&gt;David Edmondson&lt;/a&gt;. And they thought they were saving millions by switching to &lt;a href="http://frankmash.blogspot.com/2006/02/radioshack-saves-millions-of-dollars.html"&gt;Windows&lt;/a&gt;.&lt;div class="blogger-post-footer"&gt;&lt;img width='1' height='1' src='https://blogger.googleusercontent.com/tracker/21184031-114030327697886186?l=railsruby.blogspot.com' alt='' /&gt;&lt;/div&gt;</content><link rel='replies' type='application/atom+xml' href='http://railsruby.blogspot.com/feeds/114030327697886186/comments/default' title='Post Comments'/><link rel='replies' type='text/html' href='http://www.blogger.com/comment.g?blogID=21184031&amp;postID=114030327697886186' title='0 Comments'/><link rel='edit' type='application/atom+xml' href='http://www.blogger.com/feeds/21184031/posts/default/114030327697886186'/><link rel='self' type='application/atom+xml' href='http://www.blogger.com/feeds/21184031/posts/default/114030327697886186'/><link rel='alternate' type='text/html' href='http://railsruby.blogspot.com/2006/02/radio-shack-falls-for-microsoft-costs.html' title='Radio Shack Falls for Microsoft - Costs the Company 700 Stores?'/><author><name>Frank</name><email>noreply@blogger.com</email><gd:image rel='http://schemas.google.com/g/2005#thumbnail' width='16' height='16' src='http://img2.blogblog.com/img/b16-rounded.gif'/></author><thr:total>0</thr:total></entry><entry><id>tag:blogger.com,1999:blog-21184031.post-114023494498073855</id><published>2006-02-17T19:55:00.000-08:00</published><updated>2006-02-17T19:55:45.120-08:00</updated><title type='text'>h :: html_escape</title><content type='html'>&lt;a href="http://raa.ruby-lang.org/gonzui/markup/div/lib/div/div.rb?q=fundef:html_escape#l197"&gt;Ruby-Language&lt;/a&gt;&lt;br /&gt;&lt;br /&gt;Today, I was looking for html_escape function and found it at the above URL:&lt;br /&gt;&lt;blockquote&gt;&lt;br /&gt;  197:     def html_escape(s)&lt;br /&gt;  198:       s.to_s.gsub(/&amp;/n, '&amp;amp;').gsub(/\"/n, '&amp;quot;').gsub(/&amp;gt;/n, '&amp;gt;').gsub(/&amp;lt;/n, '&amp;lt;')&lt;br /&gt;  199:     end&lt;br /&gt;  200:     alias h html_escape&lt;br /&gt;&lt;/blockquote&gt;&lt;div class="blogger-post-footer"&gt;&lt;img width='1' height='1' src='https://blogger.googleusercontent.com/tracker/21184031-114023494498073855?l=railsruby.blogspot.com' alt='' /&gt;&lt;/div&gt;</content><link rel='replies' type='application/atom+xml' href='http://railsruby.blogspot.com/feeds/114023494498073855/comments/default' title='Post Comments'/><link rel='replies' type='text/html' href='http://www.blogger.com/comment.g?blogID=21184031&amp;postID=114023494498073855' title='2 Comments'/><link rel='edit' type='application/atom+xml' href='http://www.blogger.com/feeds/21184031/posts/default/114023494498073855'/><link rel='self' type='application/atom+xml' href='http://www.blogger.com/feeds/21184031/posts/default/114023494498073855'/><link rel='alternate' type='text/html' href='http://railsruby.blogspot.com/2006/02/h-htmlescape_17.html' title='h :: html_escape'/><author><name>Frank</name><email>noreply@blogger.com</email><gd:image rel='http://schemas.google.com/g/2005#thumbnail' width='16' height='16' src='http://img2.blogblog.com/img/b16-rounded.gif'/></author><thr:total>2</thr:total></entry><entry><id>tag:blogger.com,1999:blog-21184031.post-114015117656310593</id><published>2006-02-16T20:39:00.000-08:00</published><updated>2006-02-16T20:39:37.200-08:00</updated><title type='text'>HABTM  - Self Referential - Checking Whether An Association already exists</title><content type='html'>I am loving Rails. Today I found a cool way to check whether an association already exists in a habtm relationship&lt;br /&gt;&lt;br /&gt;&lt;p class="code"&gt;member1=Member.find(1)&lt;br /&gt;member2=Member.find(2)&lt;br /&gt;&lt;br /&gt;member1.friends &lt;&lt; member2 unless member1.friends.include?(member2)&lt;/p&gt;&lt;br /&gt;Pretty cool, eh?&lt;div class="blogger-post-footer"&gt;&lt;img width='1' height='1' src='https://blogger.googleusercontent.com/tracker/21184031-114015117656310593?l=railsruby.blogspot.com' alt='' /&gt;&lt;/div&gt;</content><link rel='replies' type='application/atom+xml' href='http://railsruby.blogspot.com/feeds/114015117656310593/comments/default' title='Post Comments'/><link rel='replies' type='text/html' href='http://www.blogger.com/comment.g?blogID=21184031&amp;postID=114015117656310593' title='2 Comments'/><link rel='edit' type='application/atom+xml' href='http://www.blogger.com/feeds/21184031/posts/default/114015117656310593'/><link rel='self' type='application/atom+xml' href='http://www.blogger.com/feeds/21184031/posts/default/114015117656310593'/><link rel='alternate' type='text/html' href='http://railsruby.blogspot.com/2006/02/habtm-self-referential-checking.html' title='HABTM  - Self Referential - Checking Whether An Association already exists'/><author><name>Frank</name><email>noreply@blogger.com</email><gd:image rel='http://schemas.google.com/g/2005#thumbnail' width='16' height='16' src='http://img2.blogblog.com/img/b16-rounded.gif'/></author><thr:total>2</thr:total></entry><entry><id>tag:blogger.com,1999:blog-21184031.post-113990883496793145</id><published>2006-02-14T01:20:00.000-08:00</published><updated>2006-02-14T01:20:35.373-08:00</updated><title type='text'>Ruby Rails - Cool Routes.rb tip</title><content type='html'>Just found this cool routes.rb tip for custom routes:&lt;br /&gt;&lt;br /&gt;&lt;blockquote&gt;&lt;a href="http://tech.rufy.com/articles/2005/10/26/rails-routes-controller-action-id-vs-controller-id-action"&gt;Technoblog: Rails Routes - :controller/:action/:id VS. :controller/:id/:action&lt;/a&gt;: "Which allows me to change URLs like:http://somesite.com/person/show/123Into:http://somesite.com/person/123And:http://somesite.com/person/edit/123Into:http://somesite.com/person/123/edit"&lt;/blockquote&gt;&lt;div class="blogger-post-footer"&gt;&lt;img width='1' height='1' src='https://blogger.googleusercontent.com/tracker/21184031-113990883496793145?l=railsruby.blogspot.com' alt='' /&gt;&lt;/div&gt;</content><link rel='replies' type='application/atom+xml' href='http://railsruby.blogspot.com/feeds/113990883496793145/comments/default' title='Post Comments'/><link rel='replies' type='text/html' href='http://www.blogger.com/comment.g?blogID=21184031&amp;postID=113990883496793145' title='0 Comments'/><link rel='edit' type='application/atom+xml' href='http://www.blogger.com/feeds/21184031/posts/default/113990883496793145'/><link rel='self' type='application/atom+xml' href='http://www.blogger.com/feeds/21184031/posts/default/113990883496793145'/><link rel='alternate' type='text/html' href='http://railsruby.blogspot.com/2006/02/ruby-rails-cool-routesrb-tip.html' title='Ruby Rails - Cool Routes.rb tip'/><author><name>Frank</name><email>noreply@blogger.com</email><gd:image rel='http://schemas.google.com/g/2005#thumbnail' width='16' height='16' src='http://img2.blogblog.com/img/b16-rounded.gif'/></author><thr:total>0</thr:total></entry><entry><id>tag:blogger.com,1999:blog-21184031.post-113988921038299247</id><published>2006-02-13T19:53:00.000-08:00</published><updated>2006-02-13T19:53:30.800-08:00</updated><title type='text'>Rails - Record Not Inserting - Record Not Updating</title><content type='html'>If your ActiveRecord model class is not inserting or updating objects, try making sure that the before_save function is not returning false.&lt;br /&gt;&lt;br /&gt;-- Frank&lt;div class="blogger-post-footer"&gt;&lt;img width='1' height='1' src='https://blogger.googleusercontent.com/tracker/21184031-113988921038299247?l=railsruby.blogspot.com' alt='' /&gt;&lt;/div&gt;</content><link rel='replies' type='application/atom+xml' href='http://railsruby.blogspot.com/feeds/113988921038299247/comments/default' title='Post Comments'/><link rel='replies' type='text/html' href='http://www.blogger.com/comment.g?blogID=21184031&amp;postID=113988921038299247' title='0 Comments'/><link rel='edit' type='application/atom+xml' href='http://www.blogger.com/feeds/21184031/posts/default/113988921038299247'/><link rel='self' type='application/atom+xml' href='http://www.blogger.com/feeds/21184031/posts/default/113988921038299247'/><link rel='alternate' type='text/html' href='http://railsruby.blogspot.com/2006/02/rails-record-not-inserting-record-not.html' title='Rails - Record Not Inserting - Record Not Updating'/><author><name>Frank</name><email>noreply@blogger.com</email><gd:image rel='http://schemas.google.com/g/2005#thumbnail' width='16' height='16' src='http://img2.blogblog.com/img/b16-rounded.gif'/></author><thr:total>0</thr:total></entry><entry><id>tag:blogger.com,1999:blog-21184031.post-113985642552134232</id><published>2006-02-13T10:47:00.000-08:00</published><updated>2006-02-13T10:47:05.736-08:00</updated><title type='text'>acts_as_taggings : plugin vs gem</title><content type='html'>I asked the following question on the Ruby on Rails list:&lt;br /&gt;&lt;br /&gt;&lt;blockquote&gt;I have gotten acts_as_taggable to work for a test application as documented on taggable.rubyforge.org&lt;br /&gt;&lt;br /&gt;I am following Chad's excellent examples in ROR Recipes Beta book.&lt;br /&gt;&lt;br /&gt;I have a few questions and hope that Chad or some other expert can help clarify them.&lt;br /&gt;&lt;br /&gt;1. Why is the book suggesting to use taggings table instead of tags_contacts, as mentioned on taggable.rubyforge.org?&lt;br /&gt;2. How can I use this taggings table instead of my tags_contacts?&lt;br /&gt;3. How can I store additional fields such as member_id in the tags_contacts table or taggings table?&lt;br /&gt;4. When I follow Chad's example on my Favorite class, (with tags_favorites and taggings table created) I keep getting the NoMethodError for "tag_with"? At first I thought this may be because I am using taggings table but then when I created tags_favorites table the error persisted.&lt;br /&gt;5. I finally used the tag method as described on rubyforge.org and it works. So my question is, is tag_with a typo in the book or am I missing something?&lt;br /&gt;6. Why does the following output say @new_record=false even when the record was created? Is it to prevent further entry of the same record?&lt;/blockquote&gt;&lt;br /&gt;&lt;br /&gt;The following are the responses by list members:&lt;br /&gt;&lt;br /&gt;Michael Yacavone said:&lt;br /&gt;&lt;br /&gt;&lt;blockquote&gt;The acts_as_taggable in the ROR Recipes book uses the _plugin_ written by DHH, not the _gem_ on rubyforge. Unfortunately, the plugin is not documented outside the ROR Recipes book right now. &lt;br /&gt;&lt;br /&gt;Until DHH documents the plugin we're going to have dozens or hundreds of messages of confusion like this. Even then, the namespace collision will provide months of amusement.&lt;/blockquote&gt;&lt;br /&gt;&lt;br /&gt;To my surprise, David Heinemeier Hansson (Yes, DHH) replied:&lt;br /&gt;&lt;blockquote&gt;&lt;br /&gt;Now here's the truly wonderful part of open source: Creator, maintainer, and documentor needs not all be caps on the same schmoe. Thus, if you find something useful, say a plugin like acts_as_taggable with the creator stamp DHH, you can choose to express your gratitude through one of the other caps.&lt;br /&gt;&lt;br /&gt;That may be a patch to extend or it may be a tutorial about its usage or even READMEs and RDocs for the source. So try not to assume that creator equals sole maintainer or documentor. Only try to understand the truth: There is no vendor.&lt;/blockquote&gt;&lt;br /&gt;&lt;br /&gt;Michael replied back saying&lt;br /&gt;&lt;blockquote&gt;&lt;br /&gt;I am actually trying to get a grip on this to help, which happens to be challenging for my skill level.&lt;br /&gt;&lt;br /&gt;But when the top dog of Rails creates a namespace clash with a well-known gem, it sure would be nice to have some leadership and not defer to the magic of open-source community to sort it out eventually. Better to just say, "We're up against a new product release, and will get to this someday soon," or somesuch, which is probably pretty close to the truth.&lt;br /&gt;&lt;br /&gt;Thought experiment: If someone else had released a plugin with the same name as a well-known gem, would the community have accepted it, or would they encourage the creator to change the name to avoid confusion? I assert that 1) the creator would have been encouraged to change the name, and 2) it is because DHH is the creator this didn't happen.&lt;br /&gt;&lt;br /&gt;Of course, let a thousand flowers bloom, just don't expect this question to go away anytime soon.&lt;/blockquote&gt;&lt;br /&gt;&lt;br /&gt;And then&lt;blockquote&gt;&lt;br /&gt;&lt;br /&gt;I have written a weblog entry which hopefully clarifies the situation as I understand it, and will eventually hit the Google index for future queries. &lt;a href="&lt;br /&gt;http://www.notio.com/2006/02/rails_acts_as_t.html"&gt;&lt;br /&gt;http://www.notio.com/2006/02/rails_acts_as_t.html&lt;/a&gt;&lt;/blockquote&gt;&lt;br /&gt;&lt;br /&gt;David then replied:&lt;br /&gt;&lt;br /&gt;&lt;blockquote&gt;&lt;br /&gt;&gt;" But when the top dog of Rails creates a namespace clash with a  well-known gem, it sure would be nice to have some leadership and not  defer to the magic of open-source community to sort it out eventually.&lt;br /&gt;&lt;br /&gt;Namespace clashes are problematic for packages that wants to be used concurrently, not for alternatives. How would the situation have improved if I had called it acts_as_polymorphically_taggable (except for making jokes about such a terrible, terrible name)? Would we not have had the same questions as to what does what and why? Of course we would.&lt;br /&gt;&lt;br /&gt;In any case, let me summarize the difference quickly. The main difference is not plugin vs gem, but rather that my version of acts_as_taggable is designed to work with multiple classes. So a single tag can be used in the tagging of multiple classes. This requires polymorphic associations and join models, which is why it only works Edge Rails (and will work in the forthcoming 1.1). &lt;br /&gt;&lt;br /&gt;So if you need that feature, tagging of multiple classes with the same tags, then use my version. Otherwise, the old version is probably better. It's certainly more feature-rich and better documented.&lt;/blockquote&gt;&lt;br /&gt;&lt;br /&gt;My thanks to David and Michael for their clarifications.&lt;br /&gt;&lt;br /&gt;Frank&lt;div class="blogger-post-footer"&gt;&lt;img width='1' height='1' src='https://blogger.googleusercontent.com/tracker/21184031-113985642552134232?l=railsruby.blogspot.com' alt='' /&gt;&lt;/div&gt;</content><link rel='replies' type='application/atom+xml' href='http://railsruby.blogspot.com/feeds/113985642552134232/comments/default' title='Post Comments'/><link rel='replies' type='text/html' href='http://www.blogger.com/comment.g?blogID=21184031&amp;postID=113985642552134232' title='1 Comments'/><link rel='edit' type='application/atom+xml' href='http://www.blogger.com/feeds/21184031/posts/default/113985642552134232'/><link rel='self' type='application/atom+xml' href='http://www.blogger.com/feeds/21184031/posts/default/113985642552134232'/><link rel='alternate' type='text/html' href='http://railsruby.blogspot.com/2006/02/actsastaggings-plugin-vs-gem.html' title='acts_as_taggings : plugin vs gem'/><author><name>Frank</name><email>noreply@blogger.com</email><gd:image rel='http://schemas.google.com/g/2005#thumbnail' width='16' height='16' src='http://img2.blogblog.com/img/b16-rounded.gif'/></author><thr:total>1</thr:total></entry><entry><id>tag:blogger.com,1999:blog-21184031.post-113980146998594595</id><published>2006-02-12T19:29:00.000-08:00</published><updated>2006-02-12T19:31:10.330-08:00</updated><title type='text'>Tag expected, got String</title><content type='html'>If you are getting this error and you are using acts_as_taggable, the solution is to add/edit the following in _form.rhtml or related file:&lt;br /&gt;&lt;br /&gt;&lt;br /&gt;&amp;lt; input id="tags" name="tags" size="30" type="text" value="" /&amp;gt;&lt;div class="blogger-post-footer"&gt;&lt;img width='1' height='1' src='https://blogger.googleusercontent.com/tracker/21184031-113980146998594595?l=railsruby.blogspot.com' alt='' /&gt;&lt;/div&gt;</content><link rel='replies' type='application/atom+xml' href='http://railsruby.blogspot.com/feeds/113980146998594595/comments/default' title='Post Comments'/><link rel='replies' type='text/html' href='http://www.blogger.com/comment.g?blogID=21184031&amp;postID=113980146998594595' title='1 Comments'/><link rel='edit' type='application/atom+xml' href='http://www.blogger.com/feeds/21184031/posts/default/113980146998594595'/><link rel='self' type='application/atom+xml' href='http://www.blogger.com/feeds/21184031/posts/default/113980146998594595'/><link rel='alternate' type='text/html' href='http://railsruby.blogspot.com/2006/02/tag-expected-got-string.html' title='Tag expected, got String'/><author><name>Frank</name><email>noreply@blogger.com</email><gd:image rel='http://schemas.google.com/g/2005#thumbnail' width='16' height='16' src='http://img2.blogblog.com/img/b16-rounded.gif'/></author><thr:total>1</thr:total></entry><entry><id>tag:blogger.com,1999:blog-21184031.post-113978498841471573</id><published>2006-02-12T14:56:00.000-08:00</published><updated>2006-02-12T14:56:44.070-08:00</updated><title type='text'>ActiveRecord::Migration</title><content type='html'>Documentation on how to use &lt;a href="http://api.rubyonrails.org/classes/ActiveRecord/Migration.html"&gt; ActiveRecord::Migration&lt;/a&gt;&lt;div class="blogger-post-footer"&gt;&lt;img width='1' height='1' src='https://blogger.googleusercontent.com/tracker/21184031-113978498841471573?l=railsruby.blogspot.com' alt='' /&gt;&lt;/div&gt;</content><link rel='replies' type='application/atom+xml' href='http://railsruby.blogspot.com/feeds/113978498841471573/comments/default' title='Post Comments'/><link rel='replies' type='text/html' href='http://www.blogger.com/comment.g?blogID=21184031&amp;postID=113978498841471573' title='1 Comments'/><link rel='edit' type='application/atom+xml' href='http://www.blogger.com/feeds/21184031/posts/default/113978498841471573'/><link rel='self' type='application/atom+xml' href='http://www.blogger.com/feeds/21184031/posts/default/113978498841471573'/><link rel='alternate' type='text/html' href='http://railsruby.blogspot.com/2006/02/activerecordmigration.html' title='ActiveRecord::Migration'/><author><name>Frank</name><email>noreply@blogger.com</email><gd:image rel='http://schemas.google.com/g/2005#thumbnail' width='16' height='16' src='http://img2.blogblog.com/img/b16-rounded.gif'/></author><thr:total>1</thr:total></entry><entry><id>tag:blogger.com,1999:blog-21184031.post-113968609071887277</id><published>2006-02-11T11:14:00.000-08:00</published><updated>2006-02-11T11:28:11.280-08:00</updated><title type='text'>Rails Interesting Posts</title><content type='html'>Some very interesting posts on Planet Rails that caught my eye.&lt;br /&gt;&lt;br /&gt;&lt;ul&gt;   &lt;li&gt;Jonathan writes about &lt;a href="http://blog.innerewut.de/articles/2006/02/09/time-based-fragment-caching-with-memcache"&gt;Time-based Fragment Caching&lt;/a&gt; with MemCache.&lt;/li&gt;   &lt;li&gt;Lucas Carlson talks about "Debunking  strong misconceptions about &lt;a href="http://tech.rufy.com/articles/2006/02/09/debunking-strong-misconceptions-about-cross-domain-ajax-security-issues"&gt;cross-domain AJAX security issues&lt;/a&gt;.&lt;/li&gt;   &lt;li&gt;&lt;a href="http://wiki.rubyonrails.com/rails/pages/EdgeRails"&gt;Edge Rails&lt;/a&gt;&lt;/li&gt;   &lt;li&gt;&lt;a href="http://tinymce.moxiecode.com/tinymce/docs/option_mode.html"&gt;Option Mode&lt;/a&gt; for TinyMCE, a Javascript WYSIWYG editor&lt;/li&gt;   &lt;li&gt;DHH interviewed by MySQL using &lt;a href="http://writeboard.com/"&gt;WriteBoard&lt;/a&gt;.&lt;/li&gt;   &lt;li&gt;&lt;br /&gt;  &lt;/li&gt; &lt;/ul&gt;&lt;br /&gt;P.S. I have submitted a request for this blog to be added and am patiently waiting :).&lt;div class="blogger-post-footer"&gt;&lt;img width='1' height='1' src='https://blogger.googleusercontent.com/tracker/21184031-113968609071887277?l=railsruby.blogspot.com' alt='' /&gt;&lt;/div&gt;</content><link rel='replies' type='application/atom+xml' href='http://railsruby.blogspot.com/feeds/113968609071887277/comments/default' title='Post Comments'/><link rel='replies' type='text/html' href='http://www.blogger.com/comment.g?blogID=21184031&amp;postID=113968609071887277' title='0 Comments'/><link rel='edit' type='application/atom+xml' href='http://www.blogger.com/feeds/21184031/posts/default/113968609071887277'/><link rel='self' type='application/atom+xml' href='http://www.blogger.com/feeds/21184031/posts/default/113968609071887277'/><link rel='alternate' type='text/html' href='http://railsruby.blogspot.com/2006/02/rails-interesting-posts.html' title='Rails Interesting Posts'/><author><name>Frank</name><email>noreply@blogger.com</email><gd:image rel='http://schemas.google.com/g/2005#thumbnail' width='16' height='16' src='http://img2.blogblog.com/img/b16-rounded.gif'/></author><thr:total>0</thr:total></entry><entry><id>tag:blogger.com,1999:blog-21184031.post-113968423920773388</id><published>2006-02-11T10:57:00.000-08:00</published><updated>2006-02-11T10:57:19.723-08:00</updated><title type='text'>EdgeRails in Ruby on Rails</title><content type='html'>I was looking for a way to move to EdgeRails. A commenter on Ruby on Rails provided me with the following link:&lt;br /&gt;&lt;br /&gt;&lt;blockquote&gt;&lt;a href="http://wiki.rubyonrails.com/rails/pages/EdgeRails"&gt;EdgeRails in Ruby on Rails&lt;/a&gt;: "Edge Rails is a term that means you are running a local copy of the latest SVN trunk of Rails, instead of using gems. By checking out the trunk into your /vendor dir, Rails will automatically use that instead of the gems installed on your machine."&lt;/blockquote&gt;&lt;br /&gt;&lt;br /&gt;The above page tells you all about how you can move to EdgeRails whether you are using SVN or gems&lt;br /&gt;--Frank&lt;div class="blogger-post-footer"&gt;&lt;img width='1' height='1' src='https://blogger.googleusercontent.com/tracker/21184031-113968423920773388?l=railsruby.blogspot.com' alt='' /&gt;&lt;/div&gt;</content><link rel='replies' type='application/atom+xml' href='http://railsruby.blogspot.com/feeds/113968423920773388/comments/default' title='Post Comments'/><link rel='replies' type='text/html' href='http://www.blogger.com/comment.g?blogID=21184031&amp;postID=113968423920773388' title='0 Comments'/><link rel='edit' type='application/atom+xml' href='http://www.blogger.com/feeds/21184031/posts/default/113968423920773388'/><link rel='self' type='application/atom+xml' href='http://www.blogger.com/feeds/21184031/posts/default/113968423920773388'/><link rel='alternate' type='text/html' href='http://railsruby.blogspot.com/2006/02/edgerails-in-ruby-on-rails.html' title='EdgeRails in Ruby on Rails'/><author><name>Frank</name><email>noreply@blogger.com</email><gd:image rel='http://schemas.google.com/g/2005#thumbnail' width='16' height='16' src='http://img2.blogblog.com/img/b16-rounded.gif'/></author><thr:total>0</thr:total></entry><entry><id>tag:blogger.com,1999:blog-21184031.post-113950590845815740</id><published>2006-02-09T09:25:00.000-08:00</published><updated>2006-02-09T09:26:56.446-08:00</updated><title type='text'>String in Ruby:Strings Manual</title><content type='html'>Lots of Ruby &lt;a href="http://www.rubycentral.com/ref/ref_c_string.html"&gt;String&lt;/a&gt; Goodies:&lt;br /&gt;&lt;blockquote&gt;&lt;br /&gt;"A String object holds and manipulates an arbitrary sequence of bytes, typically representing characters. String objects may be created using String::new or as literals (see page 204).Because of aliasing issues, users of strings should be aware of the methods that modify the contents of a String object. Typically, methods with names ending in ``!'' modify their receiver, while those without a ``!'' return a new String. However, there are exceptions, such as String"&lt;/blockquote&gt;&lt;br /&gt;&lt;br /&gt;mixins: &lt;, &lt;=, ==, &gt;=, &gt;, between?&lt;br /&gt;class methods: &lt;span style="font-size:130%;"&gt;&lt;a name="new"&gt;&lt;b&gt;new&lt;/b&gt;&lt;/a&gt;&lt;/span&gt;     String.new( &lt;i&gt;aString&lt;/i&gt; )         -&gt; &lt;i&gt;aNewString&lt;br /&gt;&lt;/i&gt;instance methods: &lt;span style="font-size:130%;"&gt;&lt;a name="_pc"&gt;&lt;b&gt;%&lt;/b&gt;&lt;/a&gt;&lt;/span&gt;     &lt;i&gt;str&lt;/i&gt; % &lt;i&gt;arg&lt;/i&gt;         -&gt; &lt;i&gt;aString&lt;br /&gt;&lt;/i&gt;&lt;span style="font-size:130%;"&gt;&lt;a name="_st"&gt;&lt;b&gt;*&lt;/b&gt;&lt;/a&gt;&lt;/span&gt;     &lt;i&gt;str&lt;/i&gt; * &lt;i&gt;anInteger&lt;/i&gt;         -&gt; &lt;i&gt;aString&lt;br /&gt;&lt;/i&gt;&lt;span style="font-size:130%;"&gt;&lt;a name="_pl"&gt;&lt;b&gt;+&lt;/b&gt;&lt;/a&gt;&lt;/span&gt;     &lt;i&gt;str&lt;/i&gt; + &lt;i&gt;aString&lt;/i&gt;         -&gt; &lt;i&gt;aNewString&lt;br /&gt;&lt;/i&gt;&lt;span style="font-size:130%;"&gt;&lt;a name="_lt_lt"&gt;&lt;b&gt;&lt;&lt;&lt;/b&gt;&lt;/a&gt;&lt;/span&gt;                 &lt;i&gt;&lt;br /&gt;str&lt;/i&gt; &lt;&lt; &lt;i&gt;aFixnum&lt;/i&gt; -&gt; &lt;i&gt;str&lt;/i&gt;&lt;br /&gt;            &lt;i&gt;str&lt;/i&gt; &lt;&lt; &lt;i&gt;anObject&lt;/i&gt; -&gt; &lt;i&gt;str&lt;/i&gt;&lt;br /&gt;&lt;span style="font-size:130%;"&gt;&lt;a name="_lt_eq_gt"&gt;&lt;b&gt;&lt;=&gt;&lt;/b&gt;&lt;/a&gt;&lt;/span&gt;     &lt;i&gt;str&lt;/i&gt; &lt;=&gt; &lt;i&gt;aString&lt;/i&gt;         -&gt; -1, 0, +1&lt;br /&gt;&lt;span style="font-size:130%;"&gt;&lt;a name="_eq_eq"&gt;&lt;b&gt;==&lt;/b&gt;&lt;/a&gt;&lt;/span&gt;     &lt;i&gt;str&lt;/i&gt; == &lt;i&gt;anObject&lt;/i&gt;         -&gt; &lt;code&gt;true&lt;/code&gt; or &lt;code&gt;false&lt;br /&gt;&lt;br /&gt;and more&lt;br /&gt;&lt;/code&gt;&lt;div class="blogger-post-footer"&gt;&lt;img width='1' height='1' src='https://blogger.googleusercontent.com/tracker/21184031-113950590845815740?l=railsruby.blogspot.com' alt='' /&gt;&lt;/div&gt;</content><link rel='replies' type='application/atom+xml' href='http://railsruby.blogspot.com/feeds/113950590845815740/comments/default' title='Post Comments'/><link rel='replies' type='text/html' href='http://www.blogger.com/comment.g?blogID=21184031&amp;postID=113950590845815740' title='1 Comments'/><link rel='edit' type='application/atom+xml' href='http://www.blogger.com/feeds/21184031/posts/default/113950590845815740'/><link rel='self' type='application/atom+xml' href='http://www.blogger.com/feeds/21184031/posts/default/113950590845815740'/><link rel='alternate' type='text/html' href='http://railsruby.blogspot.com/2006/02/string-in-rubystrings-manual.html' title='String in Ruby:Strings Manual'/><author><name>Frank</name><email>noreply@blogger.com</email><gd:image rel='http://schemas.google.com/g/2005#thumbnail' width='16' height='16' src='http://img2.blogblog.com/img/b16-rounded.gif'/></author><thr:total>1</thr:total></entry><entry><id>tag:blogger.com,1999:blog-21184031.post-113946672530859590</id><published>2006-02-08T22:32:00.000-08:00</published><updated>2006-02-08T22:32:08.930-08:00</updated><title type='text'>Rails acts_as_threaded plugin</title><content type='html'>Bob Silva has a wonderful plugin complete with screencast on his web site. If you are looking to add forum capability to your site, his plugin acts_as_threaded will work great. I implemented it in my application in less than 30 minutes.&lt;br /&gt;&lt;br /&gt;Here is a quote from Bob Silva:&lt;br /&gt;&lt;blockquote&gt;&lt;a href="http://www.railtie.net/"&gt;6 short of a dozen&lt;/a&gt;: "I've included an 11 minute screencast of building an ugly looking Threaded Forum, but the concepts are there. I can still remember spending many man hours with my programming team at Bravenet to design and build the forum product we offered there. If Rails existed back then, we could have built it in a day. (Leave me a comment on how the screencast turned out.)"&lt;/blockquote&gt;&lt;br /&gt;&lt;br /&gt;Make sure you don't name you model "Thread" as "thread" is a reserved word in ROR.&lt;br /&gt;&lt;br /&gt;Frank&lt;div class="blogger-post-footer"&gt;&lt;img width='1' height='1' src='https://blogger.googleusercontent.com/tracker/21184031-113946672530859590?l=railsruby.blogspot.com' alt='' /&gt;&lt;/div&gt;</content><link rel='replies' type='application/atom+xml' href='http://railsruby.blogspot.com/feeds/113946672530859590/comments/default' title='Post Comments'/><link rel='replies' type='text/html' href='http://www.blogger.com/comment.g?blogID=21184031&amp;postID=113946672530859590' title='1 Comments'/><link rel='edit' type='application/atom+xml' href='http://www.blogger.com/feeds/21184031/posts/default/113946672530859590'/><link rel='self' type='application/atom+xml' href='http://www.blogger.com/feeds/21184031/posts/default/113946672530859590'/><link rel='alternate' type='text/html' href='http://railsruby.blogspot.com/2006/02/rails-actsasthreaded-plugin.html' title='Rails acts_as_threaded plugin'/><author><name>Frank</name><email>noreply@blogger.com</email><gd:image rel='http://schemas.google.com/g/2005#thumbnail' width='16' height='16' src='http://img2.blogblog.com/img/b16-rounded.gif'/></author><thr:total>1</thr:total></entry><entry><id>tag:blogger.com,1999:blog-21184031.post-113934424632098494</id><published>2006-02-07T12:30:00.000-08:00</published><updated>2006-02-07T12:30:46.583-08:00</updated><title type='text'>Rails Paginate DESC and notes</title><content type='html'>One way to specify the order:&lt;br /&gt;&lt;p class="code"&gt;    @article_pages, @articles = paginate :articles, :order_by=&gt; "created_at DESC", :per_page =&gt; 10&lt;br /&gt;&lt;/p&gt;&lt;br /&gt;Reverse the list&lt;br /&gt;&lt;p class="code"&gt; for post in posts.reverse&lt;/p&gt;&lt;br /&gt;&lt;br /&gt;Take everything within &lt;p class="code"&gt;for article in articles&lt;/p&gt; and put it in _article.rhtml. Then replace the remaining "for" block with  this line:&lt;br /&gt;&lt;br /&gt;&amp;lt;%= render :partial =&amp;gt; "article", :collection =&gt; @articles %&amp;gt;&lt;br /&gt;&lt;br /&gt;We can place the above line in show.rhtml or whereever we like.&lt;div class="blogger-post-footer"&gt;&lt;img width='1' height='1' src='https://blogger.googleusercontent.com/tracker/21184031-113934424632098494?l=railsruby.blogspot.com' alt='' /&gt;&lt;/div&gt;</content><link rel='replies' type='application/atom+xml' href='http://railsruby.blogspot.com/feeds/113934424632098494/comments/default' title='Post Comments'/><link rel='replies' type='text/html' href='http://www.blogger.com/comment.g?blogID=21184031&amp;postID=113934424632098494' title='1 Comments'/><link rel='edit' type='application/atom+xml' href='http://www.blogger.com/feeds/21184031/posts/default/113934424632098494'/><link rel='self' type='application/atom+xml' href='http://www.blogger.com/feeds/21184031/posts/default/113934424632098494'/><link rel='alternate' type='text/html' href='http://railsruby.blogspot.com/2006/02/rails-paginate-desc-and-notes.html' title='Rails Paginate DESC and notes'/><author><name>Frank</name><email>noreply@blogger.com</email><gd:image rel='http://schemas.google.com/g/2005#thumbnail' width='16' height='16' src='http://img2.blogblog.com/img/b16-rounded.gif'/></author><thr:total>1</thr:total></entry><entry><id>tag:blogger.com,1999:blog-21184031.post-113919988388325057</id><published>2006-02-05T20:20:00.000-08:00</published><updated>2006-02-05T20:27:35.673-08:00</updated><title type='text'>Using partial in views and controllers</title><content type='html'>In  views/unajax/index.rhtml&lt;br /&gt;&lt;br /&gt;&lt;xmp&gt;&lt;ul id="items"&gt;&lt;br /&gt;&lt;%= render(:partial =&gt; 'item', :collection =&gt; @items) %&gt;&lt;br /&gt;&lt;/ul&gt;&lt;br /&gt;&lt;/xmp&gt;&lt;br /&gt;&lt;br /&gt;In controllers/unajax_controller.rb&lt;br /&gt;&lt;xmp&gt;&lt;br /&gt;def&lt;br /&gt;item = Item.new(params[:item_body])&lt;br /&gt;render(:partial =&gt; "item", :object =&gt; item, :layout =&gt; false)&lt;br /&gt;end&lt;br /&gt;&lt;/xmp&gt;&lt;br /&gt;And in views/unajax/_item.rhtml&lt;br /&gt;&lt;br /&gt;&lt;xmp&gt;&lt;li&gt;&lt;br /&gt;&lt;p&gt;&lt;br /&gt;&lt;%= item.posted_on.strftime("%H:%M:%S") %&gt;:&lt;br /&gt;&lt;%= h(item.body) %&gt;&lt;br /&gt;&lt;/p&gt;&lt;br /&gt;&lt;/li&gt;&lt;br /&gt;&lt;/xmp&gt;&lt;br /&gt;Notes from Agile devel book&lt;div class="blogger-post-footer"&gt;&lt;img width='1' height='1' src='https://blogger.googleusercontent.com/tracker/21184031-113919988388325057?l=railsruby.blogspot.com' alt='' /&gt;&lt;/div&gt;</content><link rel='replies' type='application/atom+xml' href='http://railsruby.blogspot.com/feeds/113919988388325057/comments/default' title='Post Comments'/><link rel='replies' type='text/html' href='http://www.blogger.com/comment.g?blogID=21184031&amp;postID=113919988388325057' title='0 Comments'/><link rel='edit' type='application/atom+xml' href='http://www.blogger.com/feeds/21184031/posts/default/113919988388325057'/><link rel='self' type='application/atom+xml' href='http://www.blogger.com/feeds/21184031/posts/default/113919988388325057'/><link rel='alternate' type='text/html' href='http://railsruby.blogspot.com/2006/02/using-partial-in-views-and-controllers.html' title='Using partial in views and controllers'/><author><name>Frank</name><email>noreply@blogger.com</email><gd:image rel='http://schemas.google.com/g/2005#thumbnail' width='16' height='16' src='http://img2.blogblog.com/img/b16-rounded.gif'/></author><thr:total>0</thr:total></entry><entry><id>tag:blogger.com,1999:blog-21184031.post-113919948225557781</id><published>2006-02-05T20:09:00.000-08:00</published><updated>2006-02-05T20:18:02.666-08:00</updated><title type='text'>Rails: Commuincating between action level layout and global layout</title><content type='html'>Today I learned a cool new trick.&lt;br /&gt;&lt;br /&gt;Lets say you have a controller named blog_controller.rb that uses  "global" layout named default:&lt;br /&gt;&lt;p class="code"&gt;layout 'default'&lt;/p&gt;&lt;br /&gt;And you have a views/blog/index.rhtml template (action level layout)&lt;br /&gt;then you can communicate between the two using "content_for" variables:&lt;br /&gt;&lt;br /&gt;For example, I can create a variable called @content_for_my_javascripts in views/blog/index.rhtml using &lt;br /&gt;&lt;br /&gt;&lt;p class="code"&gt;&amp;lt;% content_for("my_javascripts") do -%&amp;gt;&lt;br /&gt;# javascript code here&lt;br /&gt;&amp;lt;% end -%&amp;gt;&lt;br /&gt;&lt;/p&gt;&lt;br /&gt;Now I can place the following in my global template (views/layout/default.rhtml) to put these javascripts there&lt;br /&gt;&lt;br /&gt;&lt;p class="code"&gt;&amp;lt;script type="text/javascript"&gt;&lt;%= @content_for_my_javascripts %&amp;gt;&amp;lt;/script&amp;gt;&lt;/p&gt;&lt;br /&gt;It seems that "action level layout templates" are rendered before the "global layout templates"&lt;br /&gt;&lt;br /&gt;Cool eh&lt;div class="blogger-post-footer"&gt;&lt;img width='1' height='1' src='https://blogger.googleusercontent.com/tracker/21184031-113919948225557781?l=railsruby.blogspot.com' alt='' /&gt;&lt;/div&gt;</content><link rel='replies' type='application/atom+xml' href='http://railsruby.blogspot.com/feeds/113919948225557781/comments/default' title='Post Comments'/><link rel='replies' type='text/html' href='http://www.blogger.com/comment.g?blogID=21184031&amp;postID=113919948225557781' title='2 Comments'/><link rel='edit' type='application/atom+xml' href='http://www.blogger.com/feeds/21184031/posts/default/113919948225557781'/><link rel='self' type='application/atom+xml' href='http://www.blogger.com/feeds/21184031/posts/default/113919948225557781'/><link rel='alternate' type='text/html' href='http://railsruby.blogspot.com/2006/02/rails-commuincating-between-action.html' title='Rails: Commuincating between action level layout and global layout'/><author><name>Frank</name><email>noreply@blogger.com</email><gd:image rel='http://schemas.google.com/g/2005#thumbnail' width='16' height='16' src='http://img2.blogblog.com/img/b16-rounded.gif'/></author><thr:total>2</thr:total></entry><entry><id>tag:blogger.com,1999:blog-21184031.post-113919394540476497</id><published>2006-02-05T18:45:00.000-08:00</published><updated>2006-02-05T18:45:47.383-08:00</updated><title type='text'>Rails - Paginate a collection or an array</title><content type='html'>Yesterday, I was looking for a way to paginate my collection. While searching online I found this wonderful snippet by &lt;a href="http://www.bigbold.com/snippets/posts/show/389#"&gt;Canadaduane&lt;/a&gt; that does the job very neatly.&lt;br /&gt;&lt;br /&gt;&lt;br /&gt;&lt;p class="code"&gt;&lt;br /&gt;  def paginate_collection(collection, options = {})&lt;br /&gt;    default_options = {:per_page =&gt; 10, :page =&gt; 1}&lt;br /&gt;    options = default_options.merge options&lt;br /&gt;    &lt;br /&gt;    pages = Paginator.new self, collection.size, options[:per_page], options[:page]&lt;br /&gt;    first = pages.current.offset&lt;br /&gt;    last = [first + options[:per_page], collection.size].min&lt;br /&gt;    slice = collection[first...last]&lt;br /&gt;    return [pages, slice]&lt;br /&gt;  end&lt;br /&gt;&lt;/p&gt;&lt;br /&gt;&lt;br /&gt;The above snippet can be invoked using&lt;br /&gt;&lt;p class="code"&gt;@pages, @users = paginate_collection User.find_custom_query, :page =&gt; @params[:page]&lt;br /&gt;&lt;/p&gt;&lt;br /&gt;&lt;br /&gt;Access the original post: &lt;a href="http://www.bigbold.com/snippets/posts/show/389#"&gt;Paginate an already-fetched result set (i.e. collection or array)&lt;/a&gt; &lt;br /&gt;Also check out snippet by toolmantim on the above URL for block.&lt;div class="blogger-post-footer"&gt;&lt;img width='1' height='1' src='https://blogger.googleusercontent.com/tracker/21184031-113919394540476497?l=railsruby.blogspot.com' alt='' /&gt;&lt;/div&gt;</content><link rel='replies' type='application/atom+xml' href='http://railsruby.blogspot.com/feeds/113919394540476497/comments/default' title='Post Comments'/><link rel='replies' type='text/html' href='http://www.blogger.com/comment.g?blogID=21184031&amp;postID=113919394540476497' title='1 Comments'/><link rel='edit' type='application/atom+xml' href='http://www.blogger.com/feeds/21184031/posts/default/113919394540476497'/><link rel='self' type='application/atom+xml' href='http://www.blogger.com/feeds/21184031/posts/default/113919394540476497'/><link rel='alternate' type='text/html' href='http://railsruby.blogspot.com/2006/02/rails-paginate-collection-or-array.html' title='Rails - Paginate a collection or an array'/><author><name>Frank</name><email>noreply@blogger.com</email><gd:image rel='http://schemas.google.com/g/2005#thumbnail' width='16' height='16' src='http://img2.blogblog.com/img/b16-rounded.gif'/></author><thr:total>1</thr:total></entry><entry><id>tag:blogger.com,1999:blog-21184031.post-113916104082980548</id><published>2006-02-05T09:37:00.000-08:00</published><updated>2006-02-05T09:37:21.070-08:00</updated><title type='text'>Rails MySQL Enum Patch</title><content type='html'>Andrey Tarantsov posted a patch on the Ruby on Rails list that can help you with adding Enum functionality to Rails. Enum functionality is not added by default.&lt;br /&gt;&lt;br /&gt;&lt;blockquote&gt;Hello!&lt;br /&gt;&lt;br /&gt;I've modified ActiveRecord a bit to support enum columns. This is &lt;br /&gt;tested &lt;br /&gt;only with MySQL, and maybe needs some changes for other adapters (if &lt;br /&gt;they use another syntax or quoting style).&lt;br /&gt;&lt;br /&gt;I believe this patch should be tested well, so I haven't (yet) tried to &lt;br /&gt;post it to the official Trac. It is also not solid-as-a-rock when it &lt;br /&gt;comes to quoting ENUM values.&lt;br /&gt;&lt;br /&gt;After applying this thing, rake db_schema_dump properly handles enum &lt;br /&gt;columns, and also it's possible to write migrations like this:&lt;br /&gt;&lt;br /&gt;add_column :users, :level, :enum, :limit =&gt; ['viewer', 'author', &lt;br /&gt;'admin']&lt;br /&gt;&lt;br /&gt;Observe that I'm (over)using the limit field to specify ENUM values.&lt;br /&gt;&lt;br /&gt;Here's the patch.&lt;br /&gt;&lt;/blockquote&gt;&lt;p class="code"&gt;&lt;br /&gt;Index: &lt;br /&gt;activerecord/lib/active_record/connection_adapters/abstract/schema_statements.rb&lt;br /&gt;===================================================================&lt;br /&gt;--- &lt;br /&gt;activerecord/lib/active_record/connection_adapters/abstract/schema_statements.rb &lt;br /&gt;(revision 3486)&lt;br /&gt;+++ &lt;br /&gt;activerecord/lib/active_record/connection_adapters/abstract/schema_statements.rb &lt;br /&gt;(working copy)&lt;br /&gt;@@ -235,7 +235,15 @@&lt;br /&gt;&lt;br /&gt;       def type_to_sql(type, limit = nil) #:nodoc:&lt;br /&gt;         native = native_database_types[type]&lt;br /&gt;-        limit ||= native[:limit]&lt;br /&gt;+        # this is a special case, because data type differs&lt;br /&gt;+        case type&lt;br /&gt;+          when :enum&lt;br /&gt;+            fail ":enum column limit must be specified" if limit.nil?&lt;br /&gt;+            fail ":enum column limit must be an array" unless &lt;br /&gt;limit.is_a? Array&lt;br /&gt;+            limit = limit.collect {|n| "'#{n}'"}.join ","&lt;br /&gt;+          else&lt;br /&gt;+            limit ||= native[:limit]&lt;br /&gt;+        end&lt;br /&gt;         column_type_sql = native[:name]&lt;br /&gt;         column_type_sql &lt;&lt; "(#{limit})" if limit&lt;br /&gt;         column_type_sql&lt;br /&gt;Index: &lt;br /&gt;activerecord/lib/active_record/connection_adapters/abstract/schema_definitions.rb&lt;br /&gt;===================================================================&lt;br /&gt;--- &lt;br /&gt;activerecord/lib/active_record/connection_adapters/abstract/schema_definitions.rb &lt;br /&gt;(revision 3486)&lt;br /&gt;+++ &lt;br /&gt;activerecord/lib/active_record/connection_adapters/abstract/schema_definitions.rb &lt;br /&gt;(working copy)&lt;br /&gt;@@ -18,7 +18,7 @@&lt;br /&gt;         @sql_type = sql_type&lt;br /&gt;         # have to do this one separately because type_cast depends on &lt;br /&gt;#type&lt;br /&gt;         @default = type_cast(default)&lt;br /&gt;-        @limit   = extract_limit(sql_type) unless sql_type.nil?&lt;br /&gt;+        @limit   = extract_limit_or_enum_values(sql_type) unless &lt;br /&gt;sql_type.nil?&lt;br /&gt;         @primary = nil&lt;br /&gt;         @text    = [:string, :text].include? @type&lt;br /&gt;         @number  = [:float, :integer].include? @type&lt;br /&gt;@@ -44,6 +44,7 @@&lt;br /&gt;           when :text, :string then String&lt;br /&gt;           when :binary        then String&lt;br /&gt;           when :boolean       then Object&lt;br /&gt;+          when :enum          then Symbol&lt;br /&gt;         end&lt;br /&gt;       end&lt;br /&gt;&lt;br /&gt;@@ -61,6 +62,7 @@&lt;br /&gt;           when :date      then self.class.string_to_date(value)&lt;br /&gt;           when :binary    then self.class.binary_to_string(value)&lt;br /&gt;           when :boolean   then self.class.value_to_boolean(value)&lt;br /&gt;+          when :enum      then value.intern&lt;br /&gt;           else value&lt;br /&gt;         end&lt;br /&gt;       end&lt;br /&gt;@@ -77,6 +79,7 @@&lt;br /&gt;           when :date      then &lt;br /&gt;"#{self.class.name}.string_to_date(#{var_name})"&lt;br /&gt;           when :binary    then &lt;br /&gt;"#{self.class.name}.binary_to_string(#{var_name})"&lt;br /&gt;           when :boolean   then &lt;br /&gt;"#{self.class.name}.value_to_boolean(#{var_name})"&lt;br /&gt;+          when :enum      then "#{var_name}.to_s.intern"&lt;br /&gt;           else nil&lt;br /&gt;         end&lt;br /&gt;       end&lt;br /&gt;@@ -135,6 +138,26 @@&lt;br /&gt;           $1.to_i if sql_type =~ /\((.*)\)/&lt;br /&gt;         end&lt;br /&gt;&lt;br /&gt;+        def extract_enum_values(sql_type)&lt;br /&gt;+          paren_string = $1 if sql_type =~ /\((.*)\)/&lt;br /&gt;+          return [] if paren_string.nil?&lt;br /&gt;+          values = []&lt;br /&gt;+          paren_string.split(",").each do |item|&lt;br /&gt;+            item.strip!&lt;br /&gt;+            item = item[1..-2] if item[0] == ?' &amp;&amp; item[-1] == ?'  # &lt;br /&gt;remove quoting&lt;br /&gt;+            values &lt;&lt; item&lt;br /&gt;+          end&lt;br /&gt;+          values&lt;br /&gt;+        end&lt;br /&gt;+&lt;br /&gt;+        def extract_limit_or_enum_values(sql_type)&lt;br /&gt;+          if type == :enum&lt;br /&gt;+            extract_enum_values(sql_type)&lt;br /&gt;+          else&lt;br /&gt;+            extract_limit(sql_type)&lt;br /&gt;+          end&lt;br /&gt;+        end&lt;br /&gt;+&lt;br /&gt;         def simplified_type(field_type)&lt;br /&gt;           case field_type&lt;br /&gt;             when /int/i&lt;br /&gt;@@ -157,6 +180,8 @@&lt;br /&gt;               :string&lt;br /&gt;             when /boolean/i&lt;br /&gt;               :boolean&lt;br /&gt;+            when /enum/i&lt;br /&gt;+              :enum&lt;br /&gt;           end&lt;br /&gt;         end&lt;br /&gt;     end&lt;br /&gt;Index: &lt;br /&gt;activerecord/lib/active_record/connection_adapters/mysql_adapter.rb&lt;br /&gt;===================================================================&lt;br /&gt;--- activerecord/lib/active_record/connection_adapters/mysql_adapter.rb &lt;br /&gt;(revision 3486)&lt;br /&gt;+++ activerecord/lib/active_record/connection_adapters/mysql_adapter.rb &lt;br /&gt;(working copy)&lt;br /&gt;@@ -107,7 +107,8 @@&lt;br /&gt;           :time        =&gt; { :name =&gt; "time" },&lt;br /&gt;           :date        =&gt; { :name =&gt; "date" },&lt;br /&gt;           :binary      =&gt; { :name =&gt; "blob" },&lt;br /&gt;-          :boolean     =&gt; { :name =&gt; "tinyint", :limit =&gt; 1 }&lt;br /&gt;+          :boolean     =&gt; { :name =&gt; "tinyint", :limit =&gt; 1 },&lt;br /&gt;+          :enum        =&gt; { :name =&gt; "enum", :limit =&gt; [] }&lt;br /&gt;         }&lt;br /&gt;       end&lt;br /&gt;&lt;br /&gt;&lt;br /&gt;-- &lt;br /&gt;&lt;/p&gt;&lt;div class="blogger-post-footer"&gt;&lt;img width='1' height='1' src='https://blogger.googleusercontent.com/tracker/21184031-113916104082980548?l=railsruby.blogspot.com' alt='' /&gt;&lt;/div&gt;</content><link rel='replies' type='application/atom+xml' href='http://railsruby.blogspot.com/feeds/113916104082980548/comments/default' title='Post Comments'/><link rel='replies' type='text/html' href='http://www.blogger.com/comment.g?blogID=21184031&amp;postID=113916104082980548' title='6 Comments'/><link rel='edit' type='application/atom+xml' href='http://www.blogger.com/feeds/21184031/posts/default/113916104082980548'/><link rel='self' type='application/atom+xml' href='http://www.blogger.com/feeds/21184031/posts/default/113916104082980548'/><link rel='alternate' type='text/html' href='http://railsruby.blogspot.com/2006/02/rails-mysql-enum-patch.html' title='Rails MySQL Enum Patch'/><author><name>Frank</name><email>noreply@blogger.com</email><gd:image rel='http://schemas.google.com/g/2005#thumbnail' width='16' height='16' src='http://img2.blogblog.com/img/b16-rounded.gif'/></author><thr:total>6</thr:total></entry><entry><id>tag:blogger.com,1999:blog-21184031.post-113908874162409441</id><published>2006-02-04T13:32:00.000-08:00</published><updated>2006-02-04T13:32:21.913-08:00</updated><title type='text'>Rails - Generating Documentation</title><content type='html'>To generate documentation for your application, simply run&lt;br /&gt;&lt;p class="code"&gt;rake appdoc&lt;/p&gt;&lt;br /&gt;from within your app's directory.&lt;div class="blogger-post-footer"&gt;&lt;img width='1' height='1' src='https://blogger.googleusercontent.com/tracker/21184031-113908874162409441?l=railsruby.blogspot.com' alt='' /&gt;&lt;/div&gt;</content><link rel='replies' type='application/atom+xml' href='http://railsruby.blogspot.com/feeds/113908874162409441/comments/default' title='Post Comments'/><link rel='replies' type='text/html' href='http://www.blogger.com/comment.g?blogID=21184031&amp;postID=113908874162409441' title='0 Comments'/><link rel='edit' type='application/atom+xml' href='http://www.blogger.com/feeds/21184031/posts/default/113908874162409441'/><link rel='self' type='application/atom+xml' href='http://www.blogger.com/feeds/21184031/posts/default/113908874162409441'/><link rel='alternate' type='text/html' href='http://railsruby.blogspot.com/2006/02/rails-generating-documentation.html' title='Rails - Generating Documentation'/><author><name>Frank</name><email>noreply@blogger.com</email><gd:image rel='http://schemas.google.com/g/2005#thumbnail' width='16' height='16' src='http://img2.blogblog.com/img/b16-rounded.gif'/></author><thr:total>0</thr:total></entry><entry><id>tag:blogger.com,1999:blog-21184031.post-113908587232601699</id><published>2006-02-04T12:44:00.000-08:00</published><updated>2006-02-04T12:48:13.783-08:00</updated><title type='text'>Render Component</title><content type='html'>I was trying to put my login form on the home page and wanted to document the steps:&lt;br /&gt;&lt;br /&gt;Put &lt;br /&gt;&lt;p class="code"&gt;&lt;%= render_component :controller =&gt; "member",  :action =&gt; "login", :layout =&gt; false, :params =&gt; { "member[login]" =&gt; "" }  %&gt;&lt;/p&gt;&lt;br /&gt;in show.rhtml and have the layout turned off.&lt;br /&gt;&lt;br /&gt;&lt;p class="code"&gt;render (:layout=&gt;false) &lt;/p&gt;&lt;br /&gt;The above will not show any layout if placed in a function. &lt;br /&gt;&lt;br /&gt;Also see:&lt;blockquote&gt;&lt;br /&gt;  # Renders the template for the action "goal" within the current controller&lt;br /&gt;  render :action =&gt; "goal"&lt;br /&gt;&lt;br /&gt;  # Renders the template for the action "short_goal" within the current controller,&lt;br /&gt;  # but without the current active layout&lt;br /&gt;  render :action =&gt; "short_goal", :layout =&gt; false&lt;br /&gt;&lt;br /&gt;  # Renders the template for the action "long_goal" within the current controller,&lt;br /&gt;  # but with a custom layout&lt;br /&gt;  render :action =&gt; "long_goal", :layout =&gt; "spectacular"&lt;/blockquote&gt;&lt;br /&gt;from &lt;a href="http://api.rubyonrails.com/classes/ActionController/Base.html"&gt;ActionController/Base&lt;/a&gt;&lt;br /&gt;&lt;a href='http://rails.techno-weenie.net/question/2006/1/14/render_component_infinite_loop'&gt;Render component infinite loop&lt;/a&gt;&lt;div class="blogger-post-footer"&gt;&lt;img width='1' height='1' src='https://blogger.googleusercontent.com/tracker/21184031-113908587232601699?l=railsruby.blogspot.com' alt='' /&gt;&lt;/div&gt;</content><link rel='replies' type='application/atom+xml' href='http://railsruby.blogspot.com/feeds/113908587232601699/comments/default' title='Post Comments'/><link rel='replies' type='text/html' href='http://www.blogger.com/comment.g?blogID=21184031&amp;postID=113908587232601699' title='0 Comments'/><link rel='edit' type='application/atom+xml' href='http://www.blogger.com/feeds/21184031/posts/default/113908587232601699'/><link rel='self' type='application/atom+xml' href='http://www.blogger.com/feeds/21184031/posts/default/113908587232601699'/><link rel='alternate' type='text/html' href='http://railsruby.blogspot.com/2006/02/render-component.html' title='Render Component'/><author><name>Frank</name><email>noreply@blogger.com</email><gd:image rel='http://schemas.google.com/g/2005#thumbnail' width='16' height='16' src='http://img2.blogblog.com/img/b16-rounded.gif'/></author><thr:total>0</thr:total></entry><entry><id>tag:blogger.com,1999:blog-21184031.post-113856344535441855</id><published>2006-01-29T11:26:00.000-08:00</published><updated>2006-01-29T11:54:44.633-08:00</updated><title type='text'>Creating relations between two models - Active Records</title><content type='html'>This post will show you how you can create relations between two tables / models / Active Records.&lt;br /&gt;&lt;br /&gt;For example, I have a resources table and a categories table and I would like to make sure that when adding another resource I can choose / select a category.&lt;br /&gt;&lt;br /&gt;Vice versa, I would like to be able to get the resources that belong to a category.&lt;br /&gt;&lt;br /&gt;We'll assume all the tables we need exist with the proper field names.&lt;br /&gt;&lt;br /&gt;For my application:&lt;br /&gt;A portal has many categories&lt;br /&gt;A category has many resources&lt;br /&gt;A tag has many resources&lt;br /&gt;&lt;br /&gt;I will be creating some relations here, but you should get the idea.&lt;br /&gt;&lt;br /&gt;Open resource.rb (the model which will have categories) and add&lt;br /&gt;&lt;br /&gt;&lt;p class="code"&gt;belongs_to :category&lt;/p&gt;&lt;br /&gt;Open category.rb, and put&lt;br /&gt;&lt;p class="code"&gt;has_many :resources&lt;/p&gt;&lt;br /&gt;&lt;br /&gt;We just told Rails that a resource belongs to a single category and that a category can have many resources.&lt;br /&gt;&lt;br /&gt;So what do these declarations do? After putting these declarations, we can use:&lt;br /&gt;&lt;p class="code"&gt;@resource.category.category_name&lt;/p&gt;&lt;br /&gt;Assuming we have @category containing a category object, the following will get all resources that belong to that category&lt;br /&gt;&lt;p class="code"&gt;@category.resources&lt;/p&gt;&lt;br /&gt;&lt;br /&gt;In resource_controller.rb, we can now change our edit and new functions and add the following so we can have a collection available when we are adding or editing resources.&lt;br /&gt;&lt;p class="code"&gt;@categories = Category.find_all&lt;/p&gt;&lt;br /&gt;Then in our edit.rhtml and new.rhtml we can put something like:&lt;br /&gt; &lt;xmp&gt;&lt;select name="resource[category_id]"&gt;\n &lt;% @categories.each do |category| %&gt; \n  &lt;option value="&lt;%= category.id %&gt;" \n   &lt;%= ' selected' if category.id == resource.category_id %&gt;&gt; \n  &lt;%= category.name %&gt; \n        &lt;/option&gt;   &lt;% end %&gt;&lt;/select&gt;&lt;/xmp&gt;&lt;div class="blogger-post-footer"&gt;&lt;img width='1' height='1' src='https://blogger.googleusercontent.com/tracker/21184031-113856344535441855?l=railsruby.blogspot.com' alt='' /&gt;&lt;/div&gt;</content><link rel='replies' type='application/atom+xml' href='http://railsruby.blogspot.com/feeds/113856344535441855/comments/default' title='Post Comments'/><link rel='replies' type='text/html' href='http://www.blogger.com/comment.g?blogID=21184031&amp;postID=113856344535441855' title='3 Comments'/><link rel='edit' type='application/atom+xml' href='http://www.blogger.com/feeds/21184031/posts/default/113856344535441855'/><link rel='self' type='application/atom+xml' href='http://www.blogger.com/feeds/21184031/posts/default/113856344535441855'/><link rel='alternate' type='text/html' href='http://railsruby.blogspot.com/2006/01/creating-relations-between-two-models.html' title='Creating relations between two models - Active Records'/><author><name>Frank</name><email>noreply@blogger.com</email><gd:image rel='http://schemas.google.com/g/2005#thumbnail' width='16' height='16' src='http://img2.blogblog.com/img/b16-rounded.gif'/></author><thr:total>3</thr:total></entry><entry><id>tag:blogger.com,1999:blog-21184031.post-113856142781095141</id><published>2006-01-29T11:03:00.000-08:00</published><updated>2006-01-29T11:04:23.160-08:00</updated><title type='text'>Finding the records and displaying them</title><content type='html'>In *_controller.rb (resource_controller.rb for our example) we can get all the resources from the database in our function using&lt;br /&gt;&lt;br /&gt;&lt;p class="code"&gt;@resources = Resource.find_all&lt;/p&gt;&lt;br /&gt;&lt;br /&gt;Then we can traverse through them in .rhtml file using&lt;br /&gt;&lt;p class="code"&gt;&lt;br /&gt;&lt;% @resources.each do |resource| %&gt;&lt;br /&gt;  &lt;tr&gt;&lt;br /&gt;   &lt;td&gt;&lt;%= link_to resource.title, :action =&gt; "show", :id =&gt; resource.id %&gt;&lt;/td&gt;&lt;br /&gt;   &lt;td&gt;&lt;%= resource.date %&gt;&lt;/td&gt;&lt;br /&gt;  &lt;/tr&gt;&lt;br /&gt; &lt;% end %&gt;&lt;br /&gt;&lt;/p&gt;&lt;div class="blogger-post-footer"&gt;&lt;img width='1' height='1' src='https://blogger.googleusercontent.com/tracker/21184031-113856142781095141?l=railsruby.blogspot.com' alt='' /&gt;&lt;/div&gt;</content><link rel='replies' type='application/atom+xml' href='http://railsruby.blogspot.com/feeds/113856142781095141/comments/default' title='Post Comments'/><link rel='replies' type='text/html' href='http://www.blogger.com/comment.g?blogID=21184031&amp;postID=113856142781095141' title='0 Comments'/><link rel='edit' type='application/atom+xml' href='http://www.blogger.com/feeds/21184031/posts/default/113856142781095141'/><link rel='self' type='application/atom+xml' href='http://www.blogger.com/feeds/21184031/posts/default/113856142781095141'/><link rel='alternate' type='text/html' href='http://railsruby.blogspot.com/2006/01/finding-records-and-displaying-them.html' title='Finding the records and displaying them'/><author><name>Frank</name><email>noreply@blogger.com</email><gd:image rel='http://schemas.google.com/g/2005#thumbnail' width='16' height='16' src='http://img2.blogblog.com/img/b16-rounded.gif'/></author><thr:total>0</thr:total></entry><entry><id>tag:blogger.com,1999:blog-21184031.post-113856121058932930</id><published>2006-01-29T10:56:00.000-08:00</published><updated>2006-01-29T11:00:10.776-08:00</updated><title type='text'>Template is missing - Ruby on Rails</title><content type='html'>When using scaffolding, if you override a default function such as list, you'll get the message that says something like:&lt;br /&gt;&lt;br /&gt;&lt;span style="font-weight:bold;"&gt;Template is missing&lt;/span&gt;&lt;br /&gt;&lt;br /&gt;To correct this create the appropriate list.rhtml file in correspoding views directory.&lt;div class="blogger-post-footer"&gt;&lt;img width='1' height='1' src='https://blogger.googleusercontent.com/tracker/21184031-113856121058932930?l=railsruby.blogspot.com' alt='' /&gt;&lt;/div&gt;</content><link rel='replies' type='application/atom+xml' href='http://railsruby.blogspot.com/feeds/113856121058932930/comments/default' title='Post Comments'/><link rel='replies' type='text/html' href='http://www.blogger.com/comment.g?blogID=21184031&amp;postID=113856121058932930' title='3 Comments'/><link rel='edit' type='application/atom+xml' href='http://www.blogger.com/feeds/21184031/posts/default/113856121058932930'/><link rel='self' type='application/atom+xml' href='http://www.blogger.com/feeds/21184031/posts/default/113856121058932930'/><link rel='alternate' type='text/html' href='http://railsruby.blogspot.com/2006/01/template-is-missing-ruby-on-rails.html' title='Template is missing - Ruby on Rails'/><author><name>Frank</name><email>noreply@blogger.com</email><gd:image rel='http://schemas.google.com/g/2005#thumbnail' width='16' height='16' src='http://img2.blogblog.com/img/b16-rounded.gif'/></author><thr:total>3</thr:total></entry><entry><id>tag:blogger.com,1999:blog-21184031.post-113856094937503567</id><published>2006-01-29T10:52:00.000-08:00</published><updated>2006-01-29T10:55:49.786-08:00</updated><title type='text'>Scaffolding: Using scaffolds in Ruby on Rails</title><content type='html'>To use the power of scaffolding (aka scaffold / scaffolds), place the following line in your *_controller.rb (resource_controller.rb) file&lt;br /&gt;&lt;code&gt;scaffold :resouce&lt;/code&gt;&lt;br /&gt;&lt;br /&gt;or generate scaffolding using&lt;br /&gt;&lt;code&gt;ruby script/generate scaffold resource&lt;/code&gt;&lt;div class="blogger-post-footer"&gt;&lt;img width='1' height='1' src='https://blogger.googleusercontent.com/tracker/21184031-113856094937503567?l=railsruby.blogspot.com' alt='' /&gt;&lt;/div&gt;</content><link rel='replies' type='application/atom+xml' href='http://railsruby.blogspot.com/feeds/113856094937503567/comments/default' title='Post Comments'/><link rel='replies' type='text/html' href='http://www.blogger.com/comment.g?blogID=21184031&amp;postID=113856094937503567' title='0 Comments'/><link rel='edit' type='application/atom+xml' href='http://www.blogger.com/feeds/21184031/posts/default/113856094937503567'/><link rel='self' type='application/atom+xml' href='http://www.blogger.com/feeds/21184031/posts/default/113856094937503567'/><link rel='alternate' type='text/html' href='http://railsruby.blogspot.com/2006/01/scaffolding-using-scaffolds-in-ruby-on.html' title='Scaffolding: Using scaffolds in Ruby on Rails'/><author><name>Frank</name><email>noreply@blogger.com</email><gd:image rel='http://schemas.google.com/g/2005#thumbnail' width='16' height='16' src='http://img2.blogblog.com/img/b16-rounded.gif'/></author><thr:total>0</thr:total></entry><entry><id>tag:blogger.com,1999:blog-21184031.post-113848448500832354</id><published>2006-01-28T13:05:00.000-08:00</published><updated>2006-01-28T13:42:30.616-08:00</updated><title type='text'>Ruby on Rails - Tagging with taggable</title><content type='html'>For Ruby on Rails programmers, there is a cool gem named &lt;a href="http://openencyclopaedia.com/acts_as_taggable"&gt;acts_as_taggable&lt;/a&gt;  that can be used to quickly and easily implement tagging within your applications.&lt;br /&gt;&lt;br /&gt;&lt;br /&gt;Installing acts_as_taggable &lt;blockquote&gt;&lt;pre&gt;gem install acts_as_taggable&lt;br /&gt;# output follows&lt;br /&gt;Attempting local installation of 'acts_as_taggable'&lt;br /&gt;Local gem file not found: acts_as_taggable*.gem&lt;br /&gt;Attempting remote installation of 'acts_as_taggable'&lt;br /&gt;Updating Gem source index for: http://gems.rubyforge.org&lt;br /&gt;Successfully installed acts_as_taggable-1.0.4&lt;br /&gt;Installing RDoc documentation for acts_as_taggable-1.0.4...&lt;br /&gt;&lt;/pre&gt; &lt;/blockquote&gt;  Open config/environment.rb and put the following line: &lt;blockquote&gt;&lt;pre&gt;require_gem ‘acts_as_taggable‘&lt;br /&gt;&lt;/pre&gt;&lt;/blockquote&gt;     See &lt;a href="http://taggable.rubyforge.org/"&gt;taggable&lt;/a&gt;  on RubyForge.org for more info.&lt;br /&gt;&lt;br /&gt;Create a table named tags for holding tag names.&lt;br /&gt;&lt;ol&gt;   &lt;li&gt;id (primary key)&lt;/li&gt;   &lt;li&gt;name (varchar)&lt;/li&gt; &lt;/ol&gt;&lt;br /&gt;&lt;br /&gt;&lt;p class="code"&gt;CREATE TABLE `tags` (&lt;br /&gt;`id` INT NOT NULL AUTO_INCREMENT ,&lt;br /&gt;`name` VARCHAR( 255 ) NOT NULL ,&lt;br /&gt;PRIMARY KEY ( `id` ) ,&lt;br /&gt;INDEX ( `name` )&lt;br /&gt;) TYPE = MYISAM CHARACTER SET utf8 COLLATE utf8_general_ci COMMENT = 'tags';&lt;/p&gt;&lt;br /&gt;&lt;br /&gt;Generate an ActiveRecord model class named "Tag"&lt;br /&gt;&lt;p class="code"&gt;[frank@srv30 ror]# ruby script/generate model Tag&lt;br /&gt;     exists  app/models/&lt;br /&gt;     exists  test/unit/&lt;br /&gt;     exists  test/fixtures/&lt;br /&gt;     create  app/models/tag.rb&lt;br /&gt;     create  test/unit/tag_test.rb&lt;br /&gt;     create  test/fixtures/tags.yml&lt;br /&gt;&lt;/p&gt;&lt;br /&gt;Open up models/tag.rb and modify your model as follows:&lt;br /&gt;&lt;p class="code"&gt;class Tag &lt; ActiveRecord::Base&lt;br /&gt; acts_as_taggable&lt;br /&gt;end&lt;br /&gt;&lt;/p&gt;&lt;br /&gt;&lt;br /&gt;Now, we need to create join tables. According to the RDoc for &lt;a href="http://taggable.rubyforge.org/files/README.html"&gt;acts_as_taggable&lt;/a&gt;:&lt;br /&gt;&lt;br /&gt;&lt;blockquote&gt;If you´re using the simple has_and_belongs_to_many model, you must NOT have a primary key (usually an ‘id’ column) defined on the join table. If you´re using a full join model, you must add a primary key column to the join table. Please see the RDoc documentation on acts_as_taggable macro and the :join_class_name option for the differences between these two approaches.&lt;/blockquote&gt;&lt;br /&gt;&lt;br /&gt;Since I am interested in creating a join table for resources, I will call my table tags_resources. This table will have two fields&lt;br /&gt;&lt;ul&gt;   &lt;li&gt;tag_id&lt;/li&gt;   &lt;li&gt;resource_id&lt;br /&gt;  &lt;/li&gt; &lt;/ul&gt;&lt;div class="blogger-post-footer"&gt;&lt;img width='1' height='1' src='https://blogger.googleusercontent.com/tracker/21184031-113848448500832354?l=railsruby.blogspot.com' alt='' /&gt;&lt;/div&gt;</content><link rel='replies' type='application/atom+xml' href='http://railsruby.blogspot.com/feeds/113848448500832354/comments/default' title='Post Comments'/><link rel='replies' type='text/html' href='http://www.blogger.com/comment.g?blogID=21184031&amp;postID=113848448500832354' title='0 Comments'/><link rel='edit' type='application/atom+xml' href='http://www.blogger.com/feeds/21184031/posts/default/113848448500832354'/><link rel='self' type='application/atom+xml' href='http://www.blogger.com/feeds/21184031/posts/default/113848448500832354'/><link rel='alternate' type='text/html' href='http://railsruby.blogspot.com/2006/01/ruby-on-rails-tagging-with-taggable.html' title='Ruby on Rails - Tagging with taggable'/><author><name>Frank</name><email>noreply@blogger.com</email><gd:image rel='http://schemas.google.com/g/2005#thumbnail' width='16' height='16' src='http://img2.blogblog.com/img/b16-rounded.gif'/></author><thr:total>0</thr:total></entry><entry><id>tag:blogger.com,1999:blog-21184031.post-113825768831845530</id><published>2006-01-25T22:41:00.000-08:00</published><updated>2006-01-25T22:42:46.236-08:00</updated><title type='text'>HTTP URL validation</title><content type='html'>A post by &lt;a href="http://www.nshb.net/node/252"&gt;Nathaniel Steven&lt;/a&gt; on Ruby on Rails list caught my eye. He was answering a question for someone asking for HTTP URL validation plugin.&lt;br /&gt;&lt;br /&gt;He suggests to add the following regular expression "as a define &lt;br /&gt;or even as a helper to AR in the format of "validates_format_of_url &lt;br /&gt;:url" to be a shorthand for the REGEX."&lt;br /&gt;&lt;p class="code"&gt;&lt;br /&gt;class Company &lt; ActiveRecord::Base&lt;br /&gt;  validates_format_of :url, :with =&gt; &lt;br /&gt;/^(http|https):\/\/[a-z0-9]+([\-\.]{1}[a-z0-9]+)*\.[a-z]{2,5}(([0-9]{1,5})?\/.*)?$/ix&lt;br /&gt;end&lt;/p&gt;&lt;br /&gt;&lt;br /&gt;Thank you Nathaniel for sharing this.&lt;br /&gt;Frank&lt;div class="blogger-post-footer"&gt;&lt;img width='1' height='1' src='https://blogger.googleusercontent.com/tracker/21184031-113825768831845530?l=railsruby.blogspot.com' alt='' /&gt;&lt;/div&gt;</content><link rel='replies' type='application/atom+xml' href='http://railsruby.blogspot.com/feeds/113825768831845530/comments/default' title='Post Comments'/><link rel='replies' type='text/html' href='http://www.blogger.com/comment.g?blogID=21184031&amp;postID=113825768831845530' title='1 Comments'/><link rel='edit' type='application/atom+xml' href='http://www.blogger.com/feeds/21184031/posts/default/113825768831845530'/><link rel='self' type='application/atom+xml' href='http://www.blogger.com/feeds/21184031/posts/default/113825768831845530'/><link rel='alternate' type='text/html' href='http://railsruby.blogspot.com/2006/01/http-url-validation.html' title='HTTP URL validation'/><author><name>Frank</name><email>noreply@blogger.com</email><gd:image rel='http://schemas.google.com/g/2005#thumbnail' width='16' height='16' src='http://img2.blogblog.com/img/b16-rounded.gif'/></author><thr:total>1</thr:total></entry><entry><id>tag:blogger.com,1999:blog-21184031.post-113825716511796385</id><published>2006-01-25T22:26:00.000-08:00</published><updated>2006-01-25T22:32:56.406-08:00</updated><title type='text'>Using the place holder syntax to protect against SQL injection attacks in Ruby on Rails.</title><content type='html'>Worried about how to protect against SQL injection attacks in Ruby on Rails, I posted a question to Ruby on Rails list.  My question (in response to an ongoing discussion) was:&lt;br /&gt;&lt;br /&gt;&lt;blockquote&gt;No, I am not using a direct value from the forms.&lt;br /&gt; &lt;br /&gt; However, I would appreciate if you can tell me how would one add slashes to the string, or replace the quotes from the input value. I know it can be done in PHP using addslashes and str_replace. What are the appropriate functions in Ruby on Rails?&lt;br /&gt; &lt;br /&gt;  I am sure many of us starting out on ROR would benefit from your answer.&lt;br /&gt; &lt;br /&gt;  Thanks for your assistance.&lt;br /&gt;&lt;/blockquote&gt;Ezra Zygmuntowicz was quick to come to my rescue. She says&lt;br /&gt;&lt;br /&gt;&lt;blockquote&gt;Frank-  &lt;br /&gt;You do not need to call any special functions to add slashes or escape things for the database in rails as long as you use the place holder syntax. So if you just get in the habit of always using the ? placeholders like you were shown with the snippet below, you will not have to worry about escaping anything before inserting or querying the db:&lt;br /&gt;&lt;p class="code"&gt;def self.home_categories (portal_id)&lt;br /&gt;  find(:all, :conditions =&gt; [ "portal_id=?", portal_id ] )&lt;br /&gt;end&lt;/p&gt; &lt;br /&gt;&lt;div style="margin: 0px;"&gt;This is the important syntax:&lt;/div&gt;    &lt;br /&gt; &lt;p class="code"&gt; :conditions =&gt; [ "portal_id=?", portal_id ]&lt;/p&gt;  &lt;br /&gt;&lt;div&gt;Cheers-&lt;/div&gt;   &lt;div&gt;-Ezra  &lt;/div&gt; &lt;/blockquote&gt;  Thanks to Ezra for her assistance.&lt;br /&gt;&lt;br /&gt;Frank&lt;div class="blogger-post-footer"&gt;&lt;img width='1' height='1' src='https://blogger.googleusercontent.com/tracker/21184031-113825716511796385?l=railsruby.blogspot.com' alt='' /&gt;&lt;/div&gt;</content><link rel='replies' type='application/atom+xml' href='http://railsruby.blogspot.com/feeds/113825716511796385/comments/default' title='Post Comments'/><link rel='replies' type='text/html' href='http://www.blogger.com/comment.g?blogID=21184031&amp;postID=113825716511796385' title='2 Comments'/><link rel='edit' type='application/atom+xml' href='http://www.blogger.com/feeds/21184031/posts/default/113825716511796385'/><link rel='self' type='application/atom+xml' href='http://www.blogger.com/feeds/21184031/posts/default/113825716511796385'/><link rel='alternate' type='text/html' href='http://railsruby.blogspot.com/2006/01/using-place-holder-syntax-to-protect.html' title='Using the place holder syntax to protect against SQL injection attacks in Ruby on Rails.'/><author><name>Frank</name><email>noreply@blogger.com</email><gd:image rel='http://schemas.google.com/g/2005#thumbnail' width='16' height='16' src='http://img2.blogblog.com/img/b16-rounded.gif'/></author><thr:total>2</thr:total></entry><entry><id>tag:blogger.com,1999:blog-21184031.post-113824413505262887</id><published>2006-01-25T18:54:00.000-08:00</published><updated>2006-01-25T18:55:35.376-08:00</updated><title type='text'>Using Parameters with a string</title><content type='html'>I posted my first question to the Ruby on Rails list and got an answer right away.&lt;br /&gt;&lt;br /&gt;My question:&lt;br /&gt;&lt;p class="code"&gt;Hello,&lt;br /&gt;&lt;br /&gt;I am learning Ruby on Rails and have a very basic question.&lt;br /&gt;&lt;br /&gt;    def self.home_categories (portal_id)&lt;br /&gt;        find(:all,&lt;br /&gt;             :conditions =&gt; "portal_id=:portal_id"&lt;br /&gt;        )&lt;br /&gt;    end&lt;br /&gt;&lt;br /&gt;How can I put the value of portal_id in the string "portal_id=...". I tried concatenation but I get the error that it cannot convert.&lt;br /&gt;&lt;br /&gt;I can figure it out eventually  but thought someone may have the answer ready.&lt;br /&gt;&lt;br /&gt;Thanks&lt;br /&gt;Frank&lt;br /&gt;&lt;/p&gt;&lt;br /&gt;&lt;br /&gt;The answers I received:&lt;br /&gt;&lt;br /&gt;From Justin Bailey&lt;br /&gt;&lt;blockquote&gt;Easy, ruby can embed expressions into strings:&lt;/blockquote&gt;&lt;br /&gt;&lt;p class="code"&gt;&lt;br /&gt;      def self.home_categories (portal_id)&lt;br /&gt;          find(:all,&lt;br /&gt;               :conditions =&gt; "portal_id=#{portal_id}"&lt;br /&gt;          )&lt;br /&gt;      end&lt;br /&gt;&lt;/p&gt;&lt;br /&gt;&lt;blockquote&gt;&lt;br /&gt;&lt;br /&gt;The #{..} syntax acts like ruby code inside your string, so the value&lt;br /&gt;of portal_id gets into your conditions.&lt;br /&gt;&lt;br /&gt;Now, the fact you are putting this value directly into a SQL statement&lt;br /&gt;might be troubling - it it's from some sort of form submission or URL&lt;br /&gt;you are opening yourself to SQL injection attacks there.&lt;/blockquote&gt;&lt;br /&gt;&lt;br /&gt;Eric Goodwin said:&lt;br /&gt;&lt;br /&gt;&lt;blockquote&gt;Hey, You probably want something like this&lt;/blockquote&gt;&lt;br /&gt;&lt;p class="code"&gt;&lt;br /&gt;def self.home_categories (portal_id)&lt;br /&gt;        find(:all,  :conditions =&gt; [ "portal_id=?", portal_id ] )&lt;br /&gt;end&lt;br /&gt;&lt;/p&gt;&lt;div class="blogger-post-footer"&gt;&lt;img width='1' height='1' src='https://blogger.googleusercontent.com/tracker/21184031-113824413505262887?l=railsruby.blogspot.com' alt='' /&gt;&lt;/div&gt;</content><link rel='replies' type='application/atom+xml' href='http://railsruby.blogspot.com/feeds/113824413505262887/comments/default' title='Post Comments'/><link rel='replies' type='text/html' href='http://www.blogger.com/comment.g?blogID=21184031&amp;postID=113824413505262887' title='2 Comments'/><link rel='edit' type='application/atom+xml' href='http://www.blogger.com/feeds/21184031/posts/default/113824413505262887'/><link rel='self' type='application/atom+xml' href='http://www.blogger.com/feeds/21184031/posts/default/113824413505262887'/><link rel='alternate' type='text/html' href='http://railsruby.blogspot.com/2006/01/using-parameters-with-string.html' title='Using Parameters with a string'/><author><name>Frank</name><email>noreply@blogger.com</email><gd:image rel='http://schemas.google.com/g/2005#thumbnail' width='16' height='16' src='http://img2.blogblog.com/img/b16-rounded.gif'/></author><thr:total>2</thr:total></entry><entry><id>tag:blogger.com,1999:blog-21184031.post-113823267423309732</id><published>2006-01-25T15:42:00.000-08:00</published><updated>2006-01-25T15:44:43.010-08:00</updated><title type='text'>Using and defining functions in Ruby on Rail</title><content type='html'>Simple function definition&lt;br /&gt;&lt;br /&gt;&lt;code&gt;def self.home_categories (portal)&lt;br /&gt;end&lt;/code&gt;&lt;br /&gt;&lt;br /&gt;Calling this function&lt;br /&gt;&lt;code&gt;@categories = Category.home_categories (:current_portal)&lt;/code&gt;&lt;br /&gt;&lt;br /&gt;Simple find&lt;br /&gt;&lt;code&gt;find(:all, &lt;br /&gt;       :conditions =&gt; "portal_id=1"#, #date_available &lt;= now()&lt;br /&gt;#       :order =&gt; "" #date_available desc&lt;br /&gt;  )&lt;br /&gt;&lt;/code&gt;&lt;div class="blogger-post-footer"&gt;&lt;img width='1' height='1' src='https://blogger.googleusercontent.com/tracker/21184031-113823267423309732?l=railsruby.blogspot.com' alt='' /&gt;&lt;/div&gt;</content><link rel='replies' type='application/atom+xml' href='http://railsruby.blogspot.com/feeds/113823267423309732/comments/default' title='Post Comments'/><link rel='replies' type='text/html' href='http://www.blogger.com/comment.g?blogID=21184031&amp;postID=113823267423309732' title='0 Comments'/><link rel='edit' type='application/atom+xml' href='http://www.blogger.com/feeds/21184031/posts/default/113823267423309732'/><link rel='self' type='application/atom+xml' href='http://www.blogger.com/feeds/21184031/posts/default/113823267423309732'/><link rel='alternate' type='text/html' href='http://railsruby.blogspot.com/2006/01/using-and-defining-functions-in-ruby.html' title='Using and defining functions in Ruby on Rail'/><author><name>Frank</name><email>noreply@blogger.com</email><gd:image rel='http://schemas.google.com/g/2005#thumbnail' width='16' height='16' src='http://img2.blogblog.com/img/b16-rounded.gif'/></author><thr:total>0</thr:total></entry><entry><id>tag:blogger.com,1999:blog-21184031.post-113817155866837113</id><published>2006-01-24T22:43:00.000-08:00</published><updated>2006-01-24T22:46:00.666-08:00</updated><title type='text'>Ruby on Rails routing</title><content type='html'>To route Ruby on Rails requests, something like the following works for me: &lt;p class="code"&gt;#BEGIN ROR&lt;br /&gt;# General Apache options&lt;br /&gt;#Options +FollowSymLinks +ExecCGI&lt;br /&gt;AddHandler fastcgi-script .fcgi&lt;br /&gt;AddHandler cgi-script .cgi&lt;br /&gt;RewriteCond  ${lowercase:%{SERVER_NAME}}  domain.com$&lt;br /&gt;RewriteCond  ${lowercase:%{REQUEST_FILENAME}}  !\.js$&lt;br /&gt;RewriteCond  ${lowercase:%{REQUEST_URI}}  !\.js$&lt;br /&gt;RewriteRule  ^/(.*)$  /var/www/html/hosts/domain.com/docs/ror/public/dispatch.fcgi [QSA,L]&lt;br /&gt;RewriteCond  ${lowercase:%{REQUEST_FILENAME}}  prototype.js$&lt;br /&gt;RewriteRule  ^/(.*)$  /var/www/html/hosts/domain.com/docs/ror/public/javascripts/prototype.js [QSA,L]&lt;br /&gt;# END ROR&lt;br /&gt;&lt;/p&gt;&lt;div class="blogger-post-footer"&gt;&lt;img width='1' height='1' src='https://blogger.googleusercontent.com/tracker/21184031-113817155866837113?l=railsruby.blogspot.com' alt='' /&gt;&lt;/div&gt;</content><link rel='replies' type='application/atom+xml' href='http://railsruby.blogspot.com/feeds/113817155866837113/comments/default' title='Post Comments'/><link rel='replies' type='text/html' href='http://www.blogger.com/comment.g?blogID=21184031&amp;postID=113817155866837113' title='0 Comments'/><link rel='edit' type='application/atom+xml' href='http://www.blogger.com/feeds/21184031/posts/default/113817155866837113'/><link rel='self' type='application/atom+xml' href='http://www.blogger.com/feeds/21184031/posts/default/113817155866837113'/><link rel='alternate' type='text/html' href='http://railsruby.blogspot.com/2006/01/ruby-on-rails-routing.html' title='Ruby on Rails routing'/><author><name>Frank</name><email>noreply@blogger.com</email><gd:image rel='http://schemas.google.com/g/2005#thumbnail' width='16' height='16' src='http://img2.blogblog.com/img/b16-rounded.gif'/></author><thr:total>0</thr:total></entry><entry><id>tag:blogger.com,1999:blog-21184031.post-113808929440558243</id><published>2006-01-23T23:42:00.000-08:00</published><updated>2006-01-23T23:54:54.613-08:00</updated><title type='text'>AJAX  on Rails</title><content type='html'>Put in head&lt;br /&gt;&lt;p class="code"&gt;&lt;%= javascript_include_tag "prototype" %&gt;&lt;br /&gt;&lt;/p&gt;&lt;br /&gt;&lt;br /&gt;&lt;br /&gt;And then in body&lt;br /&gt;&lt;p class="code"&gt;&lt;br /&gt;&lt;br /&gt;&lt;%= link_to_remote("Show the AJAX",&lt;br /&gt;:update =&gt; 'mydiv',&lt;br /&gt;:url =&gt; { :action =&gt; :new }) %&gt;&lt;br /&gt;&lt;div id="mydiv"&gt;This text will be changed&lt;/div&gt;&lt;br /&gt;&lt;br /&gt;&lt;br /&gt;&lt;/p&gt;&lt;div class="blogger-post-footer"&gt;&lt;img width='1' height='1' src='https://blogger.googleusercontent.com/tracker/21184031-113808929440558243?l=railsruby.blogspot.com' alt='' /&gt;&lt;/div&gt;</content><link rel='replies' type='application/atom+xml' href='http://railsruby.blogspot.com/feeds/113808929440558243/comments/default' title='Post Comments'/><link rel='replies' type='text/html' href='http://www.blogger.com/comment.g?blogID=21184031&amp;postID=113808929440558243' title='0 Comments'/><link rel='edit' type='application/atom+xml' href='http://www.blogger.com/feeds/21184031/posts/default/113808929440558243'/><link rel='self' type='application/atom+xml' href='http://www.blogger.com/feeds/21184031/posts/default/113808929440558243'/><link rel='alternate' type='text/html' href='http://railsruby.blogspot.com/2006/01/ajax-on-rails.html' title='AJAX  on Rails'/><author><name>Frank</name><email>noreply@blogger.com</email><gd:image rel='http://schemas.google.com/g/2005#thumbnail' width='16' height='16' src='http://img2.blogblog.com/img/b16-rounded.gif'/></author><thr:total>0</thr:total></entry><entry><id>tag:blogger.com,1999:blog-21184031.post-113808803949268855</id><published>2006-01-23T23:32:00.000-08:00</published><updated>2006-01-23T23:33:59.610-08:00</updated><title type='text'>Ruby on Rails split / explode a string</title><content type='html'>To explode or split a string using &lt;a href="http://www.rubyonrails.org/"&gt;Ruby on Rails&lt;/a&gt;:&lt;br /&gt;&lt;br /&gt;&lt;p class="code"&gt; @m=@tag.split('-')&lt;br /&gt;                @my=@m[0];&lt;br /&gt;&lt;/p&gt;&lt;br /&gt;&lt;br /&gt;Then the splitted or exploded value of the string can be accessed by using&lt;br /&gt;&lt;p class="code"&gt;&lt;%= @my  %&gt;&lt;br /&gt;&lt;%= @m[0]  %&gt;&lt;br /&gt;&lt;%= @m[-1]  %&gt;&lt;br /&gt;&lt;/p&gt;&lt;div class="blogger-post-footer"&gt;&lt;img width='1' height='1' src='https://blogger.googleusercontent.com/tracker/21184031-113808803949268855?l=railsruby.blogspot.com' alt='' /&gt;&lt;/div&gt;</content><link rel='replies' type='application/atom+xml' href='http://railsruby.blogspot.com/feeds/113808803949268855/comments/default' title='Post Comments'/><link rel='replies' type='text/html' href='http://www.blogger.com/comment.g?blogID=21184031&amp;postID=113808803949268855' title='3 Comments'/><link rel='edit' type='application/atom+xml' href='http://www.blogger.com/feeds/21184031/posts/default/113808803949268855'/><link rel='self' type='application/atom+xml' href='http://www.blogger.com/feeds/21184031/posts/default/113808803949268855'/><link rel='alternate' type='text/html' href='http://railsruby.blogspot.com/2006/01/ruby-on-rails-split-explode-string.html' title='Ruby on Rails split / explode a string'/><author><name>Frank</name><email>noreply@blogger.com</email><gd:image rel='http://schemas.google.com/g/2005#thumbnail' width='16' height='16' src='http://img2.blogblog.com/img/b16-rounded.gif'/></author><thr:total>3</thr:total></entry><entry><id>tag:blogger.com,1999:blog-21184031.post-113808792037268038</id><published>2006-01-23T23:29:00.000-08:00</published><updated>2006-01-23T23:32:00.506-08:00</updated><title type='text'>Ruby on Rails variables domain</title><content type='html'>To get the value of domain names, put the following in .rhtml file&lt;br /&gt;&lt;p class="code"&gt;&lt;%= request.domain(2) %&gt;&lt;/p&gt;&lt;br /&gt;or render_text request.domain(); in *_controller.rb file&lt;br /&gt;&lt;br /&gt;If no argument is supplied, tld_length will default to 1.&lt;div class="blogger-post-footer"&gt;&lt;img width='1' height='1' src='https://blogger.googleusercontent.com/tracker/21184031-113808792037268038?l=railsruby.blogspot.com' alt='' /&gt;&lt;/div&gt;</content><link rel='replies' type='application/atom+xml' href='http://railsruby.blogspot.com/feeds/113808792037268038/comments/default' title='Post Comments'/><link rel='replies' type='text/html' href='http://www.blogger.com/comment.g?blogID=21184031&amp;postID=113808792037268038' title='0 Comments'/><link rel='edit' type='application/atom+xml' href='http://www.blogger.com/feeds/21184031/posts/default/113808792037268038'/><link rel='self' type='application/atom+xml' href='http://www.blogger.com/feeds/21184031/posts/default/113808792037268038'/><link rel='alternate' type='text/html' href='http://railsruby.blogspot.com/2006/01/ruby-on-rails-variables-domain.html' title='Ruby on Rails variables domain'/><author><name>Frank</name><email>noreply@blogger.com</email><gd:image rel='http://schemas.google.com/g/2005#thumbnail' width='16' height='16' src='http://img2.blogblog.com/img/b16-rounded.gif'/></author><thr:total>0</thr:total></entry><entry><id>tag:blogger.com,1999:blog-21184031.post-113807700155533807</id><published>2006-01-23T20:28:00.000-08:00</published><updated>2006-01-23T20:30:01.736-08:00</updated><title type='text'>Ruby Routes - Custom routes in Ruby</title><content type='html'>Example of how you will create Ruby Routes.&lt;br /&gt;&lt;br /&gt;&lt;p class="code"&gt;  map.connect ':primary/:category', :controller =&gt; 'site', :action =&gt; 'list'&lt;br /&gt;  map.connect 'tag/:tag', :controller =&gt; 'site', :action =&gt; 'list'&lt;br /&gt;  map.connect ':category', :controller =&gt; 'site', :action =&gt; 'list'&lt;br /&gt;&lt;/p&gt;&lt;br /&gt;&lt;br /&gt;Put in routes.rb&lt;div class="blogger-post-footer"&gt;&lt;img width='1' height='1' src='https://blogger.googleusercontent.com/tracker/21184031-113807700155533807?l=railsruby.blogspot.com' alt='' /&gt;&lt;/div&gt;</content><link rel='replies' type='application/atom+xml' href='http://railsruby.blogspot.com/feeds/113807700155533807/comments/default' title='Post Comments'/><link rel='replies' type='text/html' href='http://www.blogger.com/comment.g?blogID=21184031&amp;postID=113807700155533807' title='0 Comments'/><link rel='edit' type='application/atom+xml' href='http://www.blogger.com/feeds/21184031/posts/default/113807700155533807'/><link rel='self' type='application/atom+xml' href='http://www.blogger.com/feeds/21184031/posts/default/113807700155533807'/><link rel='alternate' type='text/html' href='http://railsruby.blogspot.com/2006/01/ruby-routes-custom-routes-in-ruby.html' title='Ruby Routes - Custom routes in Ruby'/><author><name>Frank</name><email>noreply@blogger.com</email><gd:image rel='http://schemas.google.com/g/2005#thumbnail' width='16' height='16' src='http://img2.blogblog.com/img/b16-rounded.gif'/></author><thr:total>0</thr:total></entry><entry><id>tag:blogger.com,1999:blog-21184031.post-113782386525918681</id><published>2006-01-20T22:10:00.000-08:00</published><updated>2006-01-20T22:11:05.370-08:00</updated><title type='text'>rake stats</title><content type='html'>&lt;p class="code"&gt;[root@srv30 layouts]# rake stats&lt;br /&gt;(in /var/www/html/hosts/socialbookmarking.org/docs/ror)&lt;br /&gt;+----------------------+-------+-------+---------+---------+-----+-------+&lt;br /&gt;| Name                 | Lines |   LOC | Classes | Methods | M/C | LOC/M |&lt;br /&gt;+----------------------+-------+-------+---------+---------+-----+-------+&lt;br /&gt;| Helpers              |     7 |     6 |       0 |       0 |   0 |     0 |&lt;br /&gt;| Controllers          |    50 |    36 |       3 |       5 |   1 |     5 |&lt;br /&gt;| Components           |     0 |     0 |       0 |       0 |   0 |     0 |&lt;br /&gt;|   Functional tests   |    36 |    26 |       4 |       6 |   1 |     2 |&lt;br /&gt;| Models               |     6 |     6 |       2 |       0 |   0 |     0 |&lt;br /&gt;|   Unit tests         |    20 |    14 |       2 |       2 |   1 |     5 |&lt;br /&gt;| Libraries            |     0 |     0 |       0 |       0 |   0 |     0 |&lt;br /&gt;+----------------------+-------+-------+---------+---------+-----+-------+&lt;br /&gt;| Total                |   119 |    88 |      11 |      13 |   1 |     4 |&lt;br /&gt;+----------------------+-------+-------+---------+---------+-----+-------+&lt;br /&gt;  Code LOC: 48     Test LOC: 40     Code to Test Ratio: 1:0.8&lt;br /&gt;&lt;/p&gt;&lt;div class="blogger-post-footer"&gt;&lt;img width='1' height='1' src='https://blogger.googleusercontent.com/tracker/21184031-113782386525918681?l=railsruby.blogspot.com' alt='' /&gt;&lt;/div&gt;</content><link rel='replies' type='application/atom+xml' href='http://railsruby.blogspot.com/feeds/113782386525918681/comments/default' title='Post Comments'/><link rel='replies' type='text/html' href='http://www.blogger.com/comment.g?blogID=21184031&amp;postID=113782386525918681' title='0 Comments'/><link rel='edit' type='application/atom+xml' href='http://www.blogger.com/feeds/21184031/posts/default/113782386525918681'/><link rel='self' type='application/atom+xml' href='http://www.blogger.com/feeds/21184031/posts/default/113782386525918681'/><link rel='alternate' type='text/html' href='http://railsruby.blogspot.com/2006/01/rake-stats.html' title='rake stats'/><author><name>Frank</name><email>noreply@blogger.com</email><gd:image rel='http://schemas.google.com/g/2005#thumbnail' width='16' height='16' src='http://img2.blogblog.com/img/b16-rounded.gif'/></author><thr:total>0</thr:total></entry><entry><id>tag:blogger.com,1999:blog-21184031.post-113782381196930026</id><published>2006-01-20T21:06:00.000-08:00</published><updated>2006-01-20T22:10:12.406-08:00</updated><title type='text'>To find by tag</title><content type='html'>To find by tag:&lt;br /&gt;&lt;br /&gt;Modify list method&lt;br /&gt;&lt;br /&gt;&lt;code&gt;        def list&lt;br /&gt;                # new to help find by tags&lt;br /&gt;                @tag = @params['tag']&lt;br /&gt;                # original before search&lt;br /&gt;                @sites = Site.find_all&lt;br /&gt;        end&lt;br /&gt;&lt;/code&gt;&lt;br /&gt;&lt;br /&gt;and edit list.rhtml in views/site directory&lt;br /&gt;&lt;code&gt;&lt;br /&gt;&lt;% @sites.each do |site| %&gt;&lt;br /&gt;&lt;!--Add--&gt;&lt;br /&gt;&lt;% if (@tag == nil) || (@tag == site.tag.tag)%&gt;&lt;br /&gt;&lt;!--End--&gt;&lt;br /&gt;&lt;/code&gt;&lt;br /&gt;&lt;br /&gt;and add&lt;br /&gt;&lt;code&gt;&lt;!-- ADD--&gt;&lt;br /&gt;&lt;%= link_to site.tag.tag,&lt;br /&gt;    :action =&gt; "list",&lt;br /&gt;    :tag =&gt; "#{site.tag.tag}" %&gt;&lt;br /&gt;&lt;!--END--&gt;&lt;br /&gt;&lt;/code&gt;&lt;br /&gt;&lt;br /&gt;Note that because of&lt;br /&gt;&lt;code&gt;:tag =&gt; "#{site.tag.tag}"&lt;/code&gt;&lt;br /&gt;the following gets added to the URL&lt;br /&gt;&lt;code&gt;http://socialbookmarking.org/site/list?tag=encyclopaedia&lt;/code&gt;&lt;div class="blogger-post-footer"&gt;&lt;img width='1' height='1' src='https://blogger.googleusercontent.com/tracker/21184031-113782381196930026?l=railsruby.blogspot.com' alt='' /&gt;&lt;/div&gt;</content><link rel='replies' type='application/atom+xml' href='http://railsruby.blogspot.com/feeds/113782381196930026/comments/default' title='Post Comments'/><link rel='replies' type='text/html' href='http://www.blogger.com/comment.g?blogID=21184031&amp;postID=113782381196930026' title='1 Comments'/><link rel='edit' type='application/atom+xml' href='http://www.blogger.com/feeds/21184031/posts/default/113782381196930026'/><link rel='self' type='application/atom+xml' href='http://www.blogger.com/feeds/21184031/posts/default/113782381196930026'/><link rel='alternate' type='text/html' href='http://railsruby.blogspot.com/2006/01/to-find-by-tag.html' title='To find by tag'/><author><name>Frank</name><email>noreply@blogger.com</email><gd:image rel='http://schemas.google.com/g/2005#thumbnail' width='16' height='16' src='http://img2.blogblog.com/img/b16-rounded.gif'/></author><thr:total>1</thr:total></entry><entry><id>tag:blogger.com,1999:blog-21184031.post-113781967363335587</id><published>2006-01-20T20:58:00.000-08:00</published><updated>2006-01-20T21:01:13.720-08:00</updated><title type='text'>Creating Layouts</title><content type='html'>first open the *_controller.rb you want to edit. In my case, its site_controller.rb&lt;br /&gt;&lt;br /&gt;and add the custom layout&lt;br /&gt;&lt;code&gt;class SiteController &lt; ApplicationController&lt;br /&gt;        # creating the layout&lt;br /&gt;        layout "my-layout"&lt;br /&gt;&lt;/code&gt;&lt;br /&gt;&lt;br /&gt;then create your template in views/layout/my-layout.rhtml and whereever you want the content of the page to appear, insert the following line&lt;br /&gt;&lt;code&gt;&lt;%= @content_for_layout %&gt;&lt;/code&gt;&lt;div class="blogger-post-footer"&gt;&lt;img width='1' height='1' src='https://blogger.googleusercontent.com/tracker/21184031-113781967363335587?l=railsruby.blogspot.com' alt='' /&gt;&lt;/div&gt;</content><link rel='replies' type='application/atom+xml' href='http://railsruby.blogspot.com/feeds/113781967363335587/comments/default' title='Post Comments'/><link rel='replies' type='text/html' href='http://www.blogger.com/comment.g?blogID=21184031&amp;postID=113781967363335587' title='0 Comments'/><link rel='edit' type='application/atom+xml' href='http://www.blogger.com/feeds/21184031/posts/default/113781967363335587'/><link rel='self' type='application/atom+xml' href='http://www.blogger.com/feeds/21184031/posts/default/113781967363335587'/><link rel='alternate' type='text/html' href='http://railsruby.blogspot.com/2006/01/creating-layouts.html' title='Creating Layouts'/><author><name>Frank</name><email>noreply@blogger.com</email><gd:image rel='http://schemas.google.com/g/2005#thumbnail' width='16' height='16' src='http://img2.blogblog.com/img/b16-rounded.gif'/></author><thr:total>0</thr:total></entry><entry><id>tag:blogger.com,1999:blog-21184031.post-113781881674611922</id><published>2006-01-20T20:46:00.000-08:00</published><updated>2006-01-20T20:46:56.890-08:00</updated><title type='text'>Redirect to an action</title><content type='html'>To redirect to an action after processing a request&lt;br /&gt;&lt;code&gt;redirect_to :action =&gt; 'list'&lt;br /&gt;&lt;/code&gt;&lt;div class="blogger-post-footer"&gt;&lt;img width='1' height='1' src='https://blogger.googleusercontent.com/tracker/21184031-113781881674611922?l=railsruby.blogspot.com' alt='' /&gt;&lt;/div&gt;</content><link rel='replies' type='application/atom+xml' href='http://railsruby.blogspot.com/feeds/113781881674611922/comments/default' title='Post Comments'/><link rel='replies' type='text/html' href='http://www.blogger.com/comment.g?blogID=21184031&amp;postID=113781881674611922' title='1 Comments'/><link rel='edit' type='application/atom+xml' href='http://www.blogger.com/feeds/21184031/posts/default/113781881674611922'/><link rel='self' type='application/atom+xml' href='http://www.blogger.com/feeds/21184031/posts/default/113781881674611922'/><link rel='alternate' type='text/html' href='http://railsruby.blogspot.com/2006/01/redirect-to-action.html' title='Redirect to an action'/><author><name>Frank</name><email>noreply@blogger.com</email><gd:image rel='http://schemas.google.com/g/2005#thumbnail' width='16' height='16' src='http://img2.blogblog.com/img/b16-rounded.gif'/></author><thr:total>1</thr:total></entry><entry><id>tag:blogger.com,1999:blog-21184031.post-113781875895888277</id><published>2006-01-20T20:44:00.000-08:00</published><updated>2006-01-20T20:45:59.083-08:00</updated><title type='text'>Find a record with the id from the link</title><content type='html'>To find a record (site) from the id in the link,&lt;br /&gt;&lt;code&gt;Site.find(@params['id'])&lt;/code&gt;&lt;br /&gt;&lt;br /&gt;To delete this record&lt;br /&gt;&lt;code&gt;Site.find(@params['id']).destroy&lt;/code&gt;&lt;div class="blogger-post-footer"&gt;&lt;img width='1' height='1' src='https://blogger.googleusercontent.com/tracker/21184031-113781875895888277?l=railsruby.blogspot.com' alt='' /&gt;&lt;/div&gt;</content><link rel='replies' type='application/atom+xml' href='http://railsruby.blogspot.com/feeds/113781875895888277/comments/default' title='Post Comments'/><link rel='replies' type='text/html' href='http://www.blogger.com/comment.g?blogID=21184031&amp;postID=113781875895888277' title='1 Comments'/><link rel='edit' type='application/atom+xml' href='http://www.blogger.com/feeds/21184031/posts/default/113781875895888277'/><link rel='self' type='application/atom+xml' href='http://www.blogger.com/feeds/21184031/posts/default/113781875895888277'/><link rel='alternate' type='text/html' href='http://railsruby.blogspot.com/2006/01/find-record-with-id-from-link.html' title='Find a record with the id from the link'/><author><name>Frank</name><email>noreply@blogger.com</email><gd:image rel='http://schemas.google.com/g/2005#thumbnail' width='16' height='16' src='http://img2.blogblog.com/img/b16-rounded.gif'/></author><thr:total>1</thr:total></entry><entry><id>tag:blogger.com,1999:blog-21184031.post-113781862993204705</id><published>2006-01-20T20:42:00.000-08:00</published><updated>2006-01-20T20:43:50.056-08:00</updated><title type='text'>Deleting a row using delete</title><content type='html'>When we add a delete link &lt;br /&gt;&lt;code&gt;&lt;br /&gt;&lt;!--The delete link--&gt;&lt;br /&gt; &lt;font size=-1 color="red"&gt;&lt;br /&gt;        &lt;%= link_to "(delete)",&lt;br /&gt;                    {:action =&gt; "delete", :id =&gt; site.id},&lt;br /&gt;                    :confirm =&gt; "Really delete #{site.title}?" %&gt;&lt;br /&gt;        &lt;/font&gt;&lt;br /&gt;&lt;!--the delete link--&gt;&lt;br /&gt;&lt;/code&gt;&lt;br /&gt;We get the error &lt;br /&gt;&lt;blockquote&gt;“Unknown action”&lt;/blockquote&gt;&lt;br /&gt;However, when we create a destroy link, it works.&lt;br /&gt;&lt;br /&gt;If we want to keep the delete link, we must add the action.&lt;br /&gt;&lt;code&gt;&lt;br /&gt;        def delete&lt;br /&gt;                Site.find(@params['id']).destroy&lt;br /&gt;                redirect_to :action =&gt; 'list'&lt;br /&gt;        end&lt;br /&gt;&lt;/code&gt;&lt;div class="blogger-post-footer"&gt;&lt;img width='1' height='1' src='https://blogger.googleusercontent.com/tracker/21184031-113781862993204705?l=railsruby.blogspot.com' alt='' /&gt;&lt;/div&gt;</content><link rel='replies' type='application/atom+xml' href='http://railsruby.blogspot.com/feeds/113781862993204705/comments/default' title='Post Comments'/><link rel='replies' type='text/html' href='http://www.blogger.com/comment.g?blogID=21184031&amp;postID=113781862993204705' title='0 Comments'/><link rel='edit' type='application/atom+xml' href='http://www.blogger.com/feeds/21184031/posts/default/113781862993204705'/><link rel='self' type='application/atom+xml' href='http://www.blogger.com/feeds/21184031/posts/default/113781862993204705'/><link rel='alternate' type='text/html' href='http://railsruby.blogspot.com/2006/01/deleting-row-using-delete.html' title='Deleting a row using delete'/><author><name>Frank</name><email>noreply@blogger.com</email><gd:image rel='http://schemas.google.com/g/2005#thumbnail' width='16' height='16' src='http://img2.blogblog.com/img/b16-rounded.gif'/></author><thr:total>0</thr:total></entry><entry><id>tag:blogger.com,1999:blog-21184031.post-113781826983466219</id><published>2006-01-20T20:20:00.000-08:00</published><updated>2006-01-20T20:37:49.943-08:00</updated><title type='text'>ActiveRecord::StatementInvalid in Site#create</title><content type='html'>So I was getting the following error in my Ruby on Rails application.&lt;br /&gt;&lt;code&gt;Mysql::Error: Column 'added' cannot be null: INSERT INTO mytable (`added`, `highlight`, `modified`, `title`, `tags`, `tag_id`, `username`, `border`, `paid`, `desc`, `site_type`, `link`, `usersubmitted`) VALUES(NULL, '0', NULL, 'testing', '', 1, '', '0', '0', '  testing', '', 'testing', '0')&lt;/code&gt;&lt;br /&gt;&lt;br /&gt;As is obvious, the column 'added' cannot be null. We can fix this by overriding the method create (this is the method where the "new" form is submitted to )&lt;br /&gt;&lt;br /&gt;&lt;code&gt;       def create&lt;br /&gt;                @site = Site.new(@params['site'])&lt;br /&gt;                #we were getting "added cannot be null"&lt;br /&gt;                @site.added = Date.today&lt;br /&gt;                @site.modified = Date.today&lt;br /&gt;                if @site.save&lt;br /&gt;                        redirect_to :action =&gt; 'list'&lt;br /&gt;                else&lt;br /&gt;                        render_action 'new'&lt;br /&gt;                end&lt;br /&gt;        end&lt;br /&gt;&lt;br /&gt;&lt;/code&gt;&lt;br /&gt;&lt;br /&gt;Add the delete link&lt;br /&gt;&lt;code&gt;&lt;!--The delete link--&gt;&lt;br /&gt; &lt;font size=-1 color=red&gt;&lt;br /&gt;        &lt;%= link_to "(delete)",&lt;br /&gt;                    {:action =&gt; "delete", :id =&gt; site.id},&lt;br /&gt;                    :confirm =&gt; "Really delete #{site.title}?" %&gt;&lt;br /&gt;        &lt;/font&gt;&lt;br /&gt;&lt;!--the delete link--&gt;&lt;br /&gt;&lt;/code&gt;&lt;div class="blogger-post-footer"&gt;&lt;img width='1' height='1' src='https://blogger.googleusercontent.com/tracker/21184031-113781826983466219?l=railsruby.blogspot.com' alt='' /&gt;&lt;/div&gt;</content><link rel='replies' type='application/atom+xml' href='http://railsruby.blogspot.com/feeds/113781826983466219/comments/default' title='Post Comments'/><link rel='replies' type='text/html' href='http://www.blogger.com/comment.g?blogID=21184031&amp;postID=113781826983466219' title='1 Comments'/><link rel='edit' type='application/atom+xml' href='http://www.blogger.com/feeds/21184031/posts/default/113781826983466219'/><link rel='self' type='application/atom+xml' href='http://www.blogger.com/feeds/21184031/posts/default/113781826983466219'/><link rel='alternate' type='text/html' href='http://railsruby.blogspot.com/2006/01/activerecordstatementinvalid-in.html' title='ActiveRecord::StatementInvalid in Site#create'/><author><name>Frank</name><email>noreply@blogger.com</email><gd:image rel='http://schemas.google.com/g/2005#thumbnail' width='16' height='16' src='http://img2.blogblog.com/img/b16-rounded.gif'/></author><thr:total>1</thr:total></entry><entry><id>tag:blogger.com,1999:blog-21184031.post-113781710726321835</id><published>2006-01-20T19:54:00.000-08:00</published><updated>2006-01-20T20:18:27.566-08:00</updated><title type='text'>Scaffold: The two in one command</title><content type='html'>Instead of &lt;br /&gt;&lt;code&gt;ruby script/generate model Site&lt;br /&gt;ruby script/generate controller Site&lt;/code&gt;&lt;br /&gt;&lt;br /&gt;we can now use&lt;br /&gt;&lt;code&gt;ruby script/generate scaffold Site&lt;/code&gt;&lt;br /&gt;&lt;br /&gt;WARNING: If the above command is run after you have created custom MVC (models, views and controller), they will be overwritten.&lt;div class="blogger-post-footer"&gt;&lt;img width='1' height='1' src='https://blogger.googleusercontent.com/tracker/21184031-113781710726321835?l=railsruby.blogspot.com' alt='' /&gt;&lt;/div&gt;</content><link rel='replies' type='application/atom+xml' href='http://railsruby.blogspot.com/feeds/113781710726321835/comments/default' title='Post Comments'/><link rel='replies' type='text/html' href='http://www.blogger.com/comment.g?blogID=21184031&amp;postID=113781710726321835' title='0 Comments'/><link rel='edit' type='application/atom+xml' href='http://www.blogger.com/feeds/21184031/posts/default/113781710726321835'/><link rel='self' type='application/atom+xml' href='http://www.blogger.com/feeds/21184031/posts/default/113781710726321835'/><link rel='alternate' type='text/html' href='http://railsruby.blogspot.com/2006/01/scaffold-two-in-one-command.html' title='Scaffold: The two in one command'/><author><name>Frank</name><email>noreply@blogger.com</email><gd:image rel='http://schemas.google.com/g/2005#thumbnail' width='16' height='16' src='http://img2.blogblog.com/img/b16-rounded.gif'/></author><thr:total>0</thr:total></entry><entry><id>tag:blogger.com,1999:blog-21184031.post-113781537541847414</id><published>2006-01-20T19:21:00.000-08:00</published><updated>2006-01-20T19:54:08.356-08:00</updated><title type='text'>Ruby on Rails Update</title><content type='html'>View what version of RubyGems you have installed.&lt;br /&gt;&lt;br /&gt;&lt;code&gt;[root@srv30 ror]# gem list --local&lt;br /&gt;&lt;br /&gt;*** LOCAL GEMS ***&lt;br /&gt;&lt;br /&gt;actionmailer (1.1.5)&lt;br /&gt;    Service layer for easy email delivery and testing.&lt;br /&gt;&lt;br /&gt;actionpack (1.11.2)&lt;br /&gt;    Web-flow and rendering framework putting the VC in MVC.&lt;br /&gt;&lt;br /&gt;actionwebservice (1.0.0)&lt;br /&gt;    Web service support for Action Pack.&lt;br /&gt;&lt;br /&gt;activerecord (1.13.2)&lt;br /&gt;    Implements the ActiveRecord pattern for ORM.&lt;br /&gt;&lt;br /&gt;activesupport (1.2.5)&lt;br /&gt;    Support and utility classes used by the Rails framework.&lt;br /&gt;&lt;br /&gt;fcgi (0.8.6.1)&lt;br /&gt;    FastCGI ruby binding.&lt;br /&gt;&lt;br /&gt;mysql (2.7)&lt;br /&gt;    MySQL/Ruby provides the same functions for Ruby programs that the&lt;br /&gt;    MySQL C API provides for C programs.&lt;br /&gt;&lt;br /&gt;rails (1.0.0)&lt;br /&gt;    Web-application framework with template engine, control-flow layer,&lt;br /&gt;    and ORM.&lt;br /&gt;&lt;br /&gt;rake (0.6.2)&lt;br /&gt;    Ruby based make-like utility.&lt;br /&gt;&lt;br /&gt;sources (0.0.1)&lt;br /&gt;    This package provides download sources for remote gem installation&lt;br /&gt;&lt;/code&gt;&lt;br /&gt;&lt;br /&gt;To view the version of ALL RubyGems available remotely on the rubyforge.org server&lt;br /&gt;&lt;br /&gt;&lt;code&gt;gem list --remote&lt;/code&gt;&lt;br /&gt;&lt;br /&gt;The available versions are&lt;br /&gt;&lt;code&gt;&lt;br /&gt;*** REMOTE GEMS ***&lt;br /&gt;&lt;br /&gt;action_profiler (1.0.0)&lt;br /&gt;    A profiler for Rails controllers&lt;br /&gt;&lt;br /&gt;actionmailer (1.1.5, 1.1.4, 1.1.3, 1.1.2, 1.1.1, 1.0.1, 1.0.0, 0.9.1, 0.9.0, 0.8.1, 0.8.0, 0.7.1, 0.7.0, 0.6.1, 0.6.0, 0.5.0, 0.4.0, 0.3.0)&lt;br /&gt;    Service layer for easy email delivery and testing.&lt;br /&gt;&lt;br /&gt;actionpack (1.11.2, 1.11.1, 1.11.0, 1.10.2, 1.10.1, 1.9.1, 1.9.0, 1.8.1, 1.8.0, 1.7.0, 1.6.0, 1.5.1, 1.5.0, 1.4.0, 1.3.1, 1.3.0, 1.2.0, 1.1.0, 1.0.1, 1.0.0, 0.9.5, 0.9.0, 0.8.5, 0.8.0, 0.7.9, 0.7.8, 0.7.7, 0.7.6, 0.7.5)&lt;br /&gt;    Web-flow and rendering framework putting the VC in MVC.&lt;br /&gt;&lt;br /&gt;actionservice (0.3.0, 0.2.102, 0.2.100, 0.2.99)&lt;br /&gt;    Web service support for Action Pack.&lt;br /&gt;&lt;br /&gt;actionwebservice (1.0.0, 0.9.4, 0.9.3, 0.9.2, 0.9.1, 0.8.1, 0.8.0, 0.7.1, 0.7.0, 0.6.2, 0.6.1, 0.6.0, 0.5.0)&lt;br /&gt;    Web service support for Action Pack.&lt;br /&gt;&lt;br /&gt;activerecord (1.13.2, 1.13.1, 1.13.0, 1.12.2, 1.12.1, 1.11.1, 1.11.0, 1.10.1, 1.10.0, 1.9.1, 1.9.0, 1.8.0, 1.7.0, 1.6.0, 1.5.1, 1.5.0, 1.4.0, 1.3.0, 1.2.0, 1.1.0, 1.0.0, 0.9.5, 0.9.4, 0.9.3, 0.9.2, 0.9.1, 0.9.0, 0.8.4, 0.8.3, 0.8.2, 0.8.1, 0.8.0, 0.7.6, 0.7.5)&lt;br /&gt;    Implements the ActiveRecord pattern for ORM.&lt;br /&gt;&lt;br /&gt;activesalesforce (0.0.3, 0.0.2)&lt;br /&gt;    ActiveSalesforce is an extension to the Rails Framework that allows&lt;br /&gt;    for the dynamic creation and management of ActiveRecord objects&lt;br /&gt;    through the use of Salesforce meta-data and uses a Salesforce.com&lt;br /&gt;    organization as the backing store.&lt;br /&gt;&lt;br /&gt;activesupport (1.2.5, 1.2.4, 1.2.3, 1.2.2, 1.2.1, 1.1.1, 1.1.0, 1.0.4, 1.0.3, 1.0.2, 1.0.1, 1.0.0)&lt;br /&gt;    Support and utility classes used by the Rails framework.&lt;br /&gt;&lt;br /&gt;acts_as_paranoid (0.3.1, 0.2, 0.1.7, 0.1.6, 0.1.5, 0.1.4, 0.1.3)&lt;br /&gt;    acts_as_paranoid keeps models from actually being deleted by setting&lt;br /&gt;    a deleted_at field.&lt;br /&gt;&lt;br /&gt;acts_as_shellable (0.1.0)&lt;br /&gt;    An acts-as mixin providing aliases and shorthand sql generation to&lt;br /&gt;    make ActiveRecord objects more usable in a shell.&lt;br /&gt;&lt;br /&gt;acts_as_taggable (1.0.4)&lt;br /&gt;    An acts-as Mixin for easy applying and searching tags/folksnomies on&lt;br /&gt;    Active Record objects&lt;br /&gt;&lt;br /&gt;acts_as_versioned (0.2.3, 0.2.1, 0.2, 0.1.3, 0.1.2)&lt;br /&gt;    Simple versioning with active record models&lt;br /&gt;&lt;br /&gt;ajax_scaffold (1.0.0)&lt;br /&gt;    [Rails] Ajax scaffold.&lt;br /&gt;&lt;br /&gt;ajax_scaffold_generator (1.0.0)&lt;br /&gt;    [Rails] Ajax scaffold.&lt;br /&gt;&lt;br /&gt;algorithm-diff (0.1)&lt;br /&gt;    Computes the differences between two arrays of elements&lt;br /&gt;&lt;br /&gt;alib (0.3.1)&lt;br /&gt;    alib&lt;br /&gt;&lt;br /&gt;allinoneruby (0.2.7, 0.2.6, 0.2.5, 0.2.4, 0.2.3, 0.2.2, 0.2.1)&lt;br /&gt;    A "Just-in-Time and Temporary Installation of Ruby"&lt;br /&gt;&lt;br /&gt;amatch (0.2.2, 0.2.1, 0.2.0, 0.1.5, 0.1.4, 0.1.3)&lt;br /&gt;    Approximate String Matching library&lt;br /&gt;&lt;br /&gt;ambient (0.1.0)&lt;br /&gt;    Control an Ambient Orb or Beacon from a Ruby app.&lt;br /&gt;&lt;br /&gt;amrita2 (1.9.6)&lt;br /&gt;    Amrita2 is a a xml/xhtml template library for Ruby&lt;br /&gt;&lt;br /&gt;an-app (0.0.3)&lt;br /&gt;    This gem demonstrates executable scripts&lt;br /&gt;&lt;br /&gt;archive-tar-minitar (0.5.1, 0.5.0)&lt;br /&gt;    Provides POSIX tarchive management from Ruby programs.&lt;br /&gt;&lt;br /&gt;archive-tarsimple (1.0.0)&lt;br /&gt;    A simple way to create tar archives&lt;br /&gt;&lt;br /&gt;arrayfields (3.5.0, 3.4.0, 3.3.0)&lt;br /&gt;    arrayfields&lt;br /&gt;&lt;br /&gt;&lt;br /&gt;Asami (0.04)&lt;br /&gt;    Asami is a Gnome2 based Direct Connect client.&lt;br /&gt;&lt;br /&gt;audioscrobbler (0.0.1)&lt;br /&gt;    Library to submit music playlists to Last.fm&lt;br /&gt;&lt;br /&gt;autobuild (0.5, 0.4, 0.3, 0.2, 0.1)&lt;br /&gt;    Rake-based utility to build and install multiple packages with&lt;br /&gt;    dependencies&lt;br /&gt;&lt;br /&gt;aversa (0.3, 0.2, 0.1)&lt;br /&gt;    Aversa is a little utility for creating and viewing BitTorrent&lt;br /&gt;    metainfo files.&lt;br /&gt;&lt;br /&gt;Bangkok (0.1.0)&lt;br /&gt;    Chess game file reader and player; can turn games into MIDI files&lt;br /&gt;&lt;br /&gt;bangkok (0.1.2, 0.1.1, 0.1.0)&lt;br /&gt;    Chess game file reader and player; can turn games into MIDI files&lt;br /&gt;&lt;br /&gt;barcode (0.2)&lt;br /&gt;    Barcode classes.&lt;br /&gt;&lt;br /&gt;bigtinker (0.93)&lt;br /&gt;    bigtinker application is a many pre-loaded applets for the tinker&lt;br /&gt;    framework using RubyWebDialogs.&lt;br /&gt;&lt;br /&gt;bio (0.7.1, 0.7.0)&lt;br /&gt;    BioRuby is a library for bioinformatics (biology + information&lt;br /&gt;    science).&lt;br /&gt;&lt;br /&gt;bioruby (0.6.4, 0.6.3, 0.6.2)&lt;br /&gt;    BioRuby is a library for bioinformatics (biology + information&lt;br /&gt;    science).&lt;br /&gt;&lt;br /&gt;bishop (0.3.0)&lt;br /&gt;    A port of the Reverend Bayesian classification library.&lt;br /&gt;&lt;br /&gt;bits (0.1.1)&lt;br /&gt;    A ruby interface for the Background Intelligent Transfer Service&lt;br /&gt;    (BITS)&lt;br /&gt;&lt;br /&gt;blinkenlights (0.0.2, 0.0.1)&lt;br /&gt;    Control the Blinkenlights on your keyboard from Ruby&lt;br /&gt;&lt;br /&gt;Bloglines4R (0.1.0)&lt;br /&gt;    A library to access the Bloglines API from Ruby&lt;br /&gt;&lt;br /&gt;BlueCloth (1.0.0, 0.0.4, 0.0.3, 0.0.2)&lt;br /&gt;    BlueCloth is a Ruby implementation of Markdown, a text-to-HTML&lt;br /&gt;    conversion tool for web writers. Markdown allows you to write using&lt;br /&gt;    an easy-to-read, easy-to-write plain text format, then convert it to&lt;br /&gt;    structurally valid XHTML (or HTML).&lt;br /&gt;&lt;br /&gt;builder (1.2.4, 1.2.3, 1.2.2, 1.2.1, 1.2.0, 1.1.0, 1.0.0, 0.1.1, 0.1.0)&lt;br /&gt;    Builders for MarkUp.&lt;br /&gt;&lt;br /&gt;cacheAR (0.9.1, 0.9.0)&lt;br /&gt;    cacheAR is a tiny Rails add-on to enable ActiveRecord caching.&lt;br /&gt;&lt;br /&gt;cached_model (1.0.0)&lt;br /&gt;    An ActiveRecord::Base model that caches records&lt;br /&gt;&lt;br /&gt;calendar_grid (1.0.2, 1.0.1, 1.0)&lt;br /&gt;    A utility to build calendars&lt;br /&gt;&lt;br /&gt;calibre (1.1.0, 1.0.0, 0.2.0)&lt;br /&gt;    A large collection of classes, modules and light-weight frameworks.&lt;br /&gt;&lt;br /&gt;calibre-annotation (1.2.1)&lt;br /&gt;    Complete Annotation Framework&lt;br /&gt;&lt;br /&gt;calibre-ansicode (1.0.0)&lt;br /&gt;    Module for working with ANSI codes.&lt;br /&gt;&lt;br /&gt;calibre-association (1.0.0)&lt;br /&gt;    Create Free Associations&lt;br /&gt;&lt;br /&gt;calibre-basicobject (1.0.0)&lt;br /&gt;    BasicObject class is essentially a Kernelless Object.&lt;br /&gt;&lt;br /&gt;calibre-bbcode (1.0.0)&lt;br /&gt;    BBCode markup tool&lt;br /&gt;calibre-binaryreader (1.0.0)&lt;br /&gt;    Mixin for working with Binary data.&lt;br /&gt;&lt;br /&gt;calibre-bitmask (1.0.0)&lt;br /&gt;    Provides bitmask methods.&lt;br /&gt;&lt;br /&gt;calibre-classinherit (2.1.0)&lt;br /&gt;    Provides class-level inheritance for mixin modules.&lt;br /&gt;&lt;br /&gt;calibre-classmethods (2.0.0, 1.0.0)&lt;br /&gt;    Provides class-level inheritance for included modules.&lt;br /&gt;&lt;br /&gt;calibre-cloneable (1.0.0)&lt;br /&gt;    Mixin for making a class clonable&lt;br /&gt;&lt;br /&gt;calibre-consoleapp (0.2.0)&lt;br /&gt;    Commandline to Object Mapping makes quick work of nice Console&lt;br /&gt;    interfaces.&lt;br /&gt;&lt;br /&gt;calibre-coroutine (1.0.0)&lt;br /&gt;    Coroutine is a more flexible and generic type of subroutine.&lt;br /&gt;&lt;br /&gt;calibre-crypt (0.2.0)&lt;br /&gt;    Pure Ruby crypt(3) implementation.&lt;br /&gt;&lt;br /&gt;calibre-dictionary (1.1.0, 1.0.0)&lt;br /&gt;    The Dictionary class is an ordered subclass of Hash.&lt;br /&gt;&lt;br /&gt;calibre-downloader (0.2.1)&lt;br /&gt;    Download files with progress indication.&lt;br /&gt;&lt;br /&gt;calibre-enumerablepass (2.0.0)&lt;br /&gt;    Enumerable with parameter passing.&lt;br /&gt;&lt;br /&gt;calibre-expirable (0.9.0)&lt;br /&gt;    Generic expirability mixin.&lt;br /&gt;&lt;br /&gt;calibre-floatstring (0.4.0)&lt;br /&gt;    FloatString is a String with accessable character gaps.&lt;br /&gt;&lt;br /&gt;calibre-functor (2.0.0)&lt;br /&gt;    Remasterable Meta-Function as Object&lt;br /&gt;&lt;br /&gt;calibre-heap (1.0.0)&lt;br /&gt;    Simple Heap structure and sort.&lt;br /&gt;&lt;br /&gt;calibre-inheritor (0.7.1)&lt;br /&gt;    Create flexible class inheritable variables.&lt;br /&gt;&lt;br /&gt;calibre-interval (1.0.0)&lt;br /&gt;    Similar to Range but a true Interval class.&lt;br /&gt;&lt;br /&gt;calibre-lisp (0.3.0)&lt;br /&gt;    Lisp and Lisp::Format modules give Ruby a wonderfully Lisp flavor.&lt;br /&gt;&lt;br /&gt;calibre-lrucache (1.0.0)&lt;br /&gt;    Least Recently Used Cache&lt;br /&gt;&lt;br /&gt;calibre-mathconstants (2.0.0)&lt;br /&gt;    Rather complete collection of scientific constants.&lt;br /&gt;&lt;br /&gt;calibre-methodprobe (1.0.0)&lt;br /&gt;    Runtime method explorer can report the signiture of a method.&lt;br /&gt;&lt;br /&gt;calibre-mock (0.8.0)&lt;br /&gt;    Quickly create object immitations and arbitrary behavior mockups.&lt;br /&gt;&lt;br /&gt;calibre-multiton (2.0.0, 1.1.0)&lt;br /&gt;    Implementation of the Multiton design pattern.&lt;br /&gt;&lt;br /&gt;calibre-nackclass (0.5.1)&lt;br /&gt;    Nack, which stands for Not-ACKnowledged, is a more efficient tool&lt;br /&gt;    for deferable errors.&lt;br /&gt;&lt;br /&gt;calibre-nilcomparable (1.0.0)&lt;br /&gt;    Has NilClass include Comparable, such that nil is always least.&lt;br /&gt;&lt;br /&gt;calibre-nullclass (1.0.0)&lt;br /&gt;    Null is a alternate to Nil that's doesn't raise NoMethodError.&lt;br /&gt;                                                                                                           &lt;br /&gt;calibre-one (0.3.1)&lt;br /&gt;    Helper library for creating tight one-liners.&lt;br /&gt;&lt;br /&gt;calibre-openobject (1.0.0)&lt;br /&gt;    OpenObject is an improved variation of OpenStruct&lt;br /&gt;&lt;br /&gt;calibre-paramix (1.0.0)&lt;br /&gt;    Utilize mixin modules with include-time options.&lt;br /&gt;&lt;br /&gt;calibre-pool (0.3.0)&lt;br /&gt;    Gerneral implementation of a thread-safe object pool.&lt;br /&gt;&lt;br /&gt;calibre-progressbar (1.0.0)&lt;br /&gt;    Console-based Progressbar.&lt;br /&gt;&lt;br /&gt;calibre-reference (1.0.0)&lt;br /&gt;    Reference is a kind of proxy where the underlying object can be&lt;br /&gt;    changed.&lt;br /&gt;&lt;br /&gt;calibre-semaphore (1.0.0)&lt;br /&gt;    Basic implementation of a counting semaphore.&lt;br /&gt;&lt;br /&gt;calibre-stateparser (3.0.0)&lt;br /&gt;    State machine based parser.&lt;br /&gt;&lt;br /&gt;calibre-statichash (1.0.0)&lt;br /&gt;    Hash with "write-once" entries.&lt;br /&gt;&lt;br /&gt;calibre-system (1.0.0)&lt;br /&gt;    System module is a central facility for platform information.&lt;br /&gt;&lt;br /&gt;calibre-tagiterator (1.3.0)&lt;br /&gt;    Iterate over tagged markup like HTML and XML.&lt;br /&gt;&lt;br /&gt;calibre-timer (1.0.0)&lt;br /&gt;    Versitile timer class which has both "alarm" and "stop-watch" modes.&lt;br /&gt;&lt;br /&gt;calibre-tracepoint (0.9.0)&lt;br /&gt;    TracePoint class ecapsulates a runtime "moment".&lt;br /&gt;&lt;br /&gt;calibre-tuple (2.0.0)&lt;br /&gt;    Fairly Standard implementation N-Tuple.&lt;br /&gt;&lt;br /&gt;calibre-uninheritable (1.0.0)&lt;br /&gt;    Uninheritable classes throws error if subclassed.&lt;br /&gt;&lt;br /&gt;calibre-units (1.0.0)&lt;br /&gt;    Complete Units System&lt;br /&gt;&lt;br /&gt;calibre-yamlstruct (0.3.0)&lt;br /&gt;    Like OpenStruct but the object is instantiated from a YAML document.&lt;br /&gt;&lt;br /&gt;camping (1.1, 1.0)&lt;br /&gt;    miniature rails for stay-at-home moms&lt;br /&gt;&lt;br /&gt;captcha (0.1.2)&lt;br /&gt;    Ruby/CAPTCHA is an implementation of the 'Completely Automated&lt;br /&gt;    Public Turing Test to Tell Computers and Humans Apart'.&lt;br /&gt;&lt;br /&gt;cardinal (0.1.0, 0.0.4)&lt;br /&gt;    Ruby to Parrot compiler.&lt;br /&gt;&lt;br /&gt;caseconverter (0.1.1, 0.1.0)&lt;br /&gt;    Operations that change the casing of a string.&lt;br /&gt;&lt;br /&gt;cast (0.0.1)&lt;br /&gt;    C parser and AST constructor.&lt;br /&gt;&lt;br /&gt;cfruby (0.9.6, 0.9.4, 0.9.3, 0.9.2, 0.9.1, 0.9.0)&lt;br /&gt;    A collection of modules, classes, and tools for system maintenance&lt;br /&gt;    and configuration&lt;br /&gt;&lt;br /&gt;cgikit (1.1.0)&lt;br /&gt;    CGIKit is a componented-oriented web application framework like&lt;br /&gt;    Apple Computers WebObjects.  This framework services&lt;br /&gt;    Model-View-Controller architecture programming by components based&lt;br /&gt;    on a HTML file, a definition file and a Ruby source.&lt;br /&gt;&lt;br /&gt;classifier (1.3.0, 1.2.0, 1.1.1, 1.1, 1.0)&lt;br /&gt;    A general classifier module to allow Bayesian and other types of&lt;br /&gt;    classifications.&lt;br /&gt;&lt;br /&gt;cliblog (0.1.6, 0.1.5)&lt;br /&gt;    cliblog is a command-line blog client.&lt;br /&gt;&lt;br /&gt;cmd (0.7.2, 0.7.1, 0.7.0)&lt;br /&gt;    A generic class to build line-oriented command interpreters.&lt;br /&gt;&lt;br /&gt;cmdparse (2.0.0, 1.0.5, 1.0.4, 1.0.3, 1.0.2, 1.0.1, 1.0.0)&lt;br /&gt;    Advanced command line parser supporting commands&lt;br /&gt;&lt;br /&gt;coderay (0.5.0.100, 0.4.5.73, 0.4.3.48)&lt;br /&gt;    CodeRay is a fast syntax highlighter engine for many languages.&lt;br /&gt;&lt;br /&gt;color-tools (1.3.0, 1.2.0, 1.1.0, 1.0.0)&lt;br /&gt;    color-tools provides colour space definition and manpiulation as&lt;br /&gt;    well as commonly named RGB colours.&lt;br /&gt;&lt;br /&gt;commandline (0.7.10, 0.7.9)&lt;br /&gt;    Tools to facilitate creation of command line applications and&lt;br /&gt;    flexible parsing of command line options.&lt;br /&gt;&lt;br /&gt;CommandLine (0.7.1, 0.7.0, 0.6.0)&lt;br /&gt;    Tools to facilitate creation of command line applications and&lt;br /&gt;    flexible parsing of command line options.&lt;br /&gt;&lt;br /&gt;complearn (0.6.2)&lt;br /&gt;    The CompLearn Toolkit enables you to do data mining using data&lt;br /&gt;    compression. It also allows you to do Quartet Tree Reconstruction as&lt;br /&gt;    well as Support Vector Machine experiments with these techniques.&lt;br /&gt;&lt;br /&gt;Console (0.1)&lt;br /&gt;    Pure-ruby SDL-based quake-like console.&lt;br /&gt;&lt;br /&gt;constraint (0.2, 0.1)&lt;br /&gt;    Ensure that objects comply with some constraints&lt;br /&gt;&lt;br /&gt;contxtlservice (0.1.1)&lt;br /&gt;    The ContextualService library makes it easy to manage and set&lt;br /&gt;    services to a single, global resource such as a database or file&lt;br /&gt;    system.&lt;br /&gt;&lt;br /&gt;copland (1.0.0, 0.8.0, 0.7.1, 0.7.0, 0.6.0, 0.4.0, 0.3.0, 0.2.0, 0.1.0)&lt;br /&gt;    Copland is an "Inversion of Control" (IoC, also called "Dependency&lt;br /&gt;    Injection") container for Ruby, based heavily on the HiveMind&lt;br /&gt;    container for Java. It supports both type-2 (setter) and type-3&lt;br /&gt;    (constructor) injection.&lt;br /&gt;&lt;br /&gt;copland-lib (0.1.0)&lt;br /&gt;    A collection of various non-core Copland services and interceptors.&lt;br /&gt;&lt;br /&gt;copland-remote (0.1.0)&lt;br /&gt;    A collection of Copland service definitions and implementations for&lt;br /&gt;    dealing with remote object manipulation (i.e., via SOAP, DRb, and&lt;br /&gt;    XML-RPC).&lt;br /&gt;&lt;br /&gt;copland-webrick (0.1.0)&lt;br /&gt;    A collection of various Copland services for dealing with WEBrick&lt;br /&gt;    servers and servlets.&lt;br /&gt;&lt;br /&gt;core_ex (0.4.0, 0.3.1, 0.2.0, 0.1.3, 0.1.2, 0.1.1, 0.1.0)&lt;br /&gt;    CoreEx is a proposal for a standard library extension.&lt;br /&gt;&lt;br /&gt;coverage (0.3, 0.2, 0.1)&lt;br /&gt;    identifies inactive code&lt;br /&gt;&lt;br /&gt;creditcard (1.0)&lt;br /&gt;    These functions tell you whether a credit card number is&lt;br /&gt;    self-consistent using known algorithms for credit card numbers.&lt;br /&gt;&lt;br /&gt;crosscase (0.0.1)&lt;br /&gt;    A mixin for auto-generating under_barred aliases for camelCased&lt;br /&gt;    methods, and vice-versa.&lt;br /&gt;&lt;br /&gt;crypt-fog (1.0.0, 0.1.0)&lt;br /&gt;    crypt-fog is a simple encryption mechanism, but slightly better than&lt;br /&gt;    Rot13.  It's primary goal is to provide a reasonable amount of&lt;br /&gt;    obfuscation without having to resort to public/private key&lt;br /&gt;    exchanges, etc.&lt;br /&gt;&lt;br /&gt;crypt-rot13 (1.0.1)&lt;br /&gt;    Character rotation encryption, i.e. Caesar Cipher&lt;br /&gt;&lt;br /&gt;Crypt::ISAAC (0.9.1)&lt;br /&gt;    Ruby implementation of the ISAAC PRNG&lt;br /&gt;csinterface (0.6.2, 0.6.1)&lt;br /&gt;    cs/Interface provides interface (like typing) support for Ruby&lt;br /&gt;    classes and objects.&lt;br /&gt;&lt;br /&gt;cstemplate (0.5.1, 0.4.1, 0.3.1, 0.1.2, 0.1.1)&lt;br /&gt;    cs/Template is a fast, generic text templating engine for Ruby,&lt;br /&gt;    written in C.&lt;br /&gt;&lt;br /&gt;ctapi (0.2.2)&lt;br /&gt;    Ruby extension for Chipcard Cardterminal-API (CTAPI)&lt;br /&gt;&lt;br /&gt;ctype (0.2.0)&lt;br /&gt;    ctype provides Ruby-style methods known from ctype.h.&lt;br /&gt;&lt;br /&gt;cursor (0.9, 0.8, 0.6, 0.5)&lt;br /&gt;    external iterator API&lt;br /&gt;&lt;br /&gt;daapclient (0.1.0, 0.0.2)&lt;br /&gt;    Net::DAAP::Client is an iTunes share client.&lt;br /&gt;&lt;br /&gt;daedalus (2.0.1)&lt;br /&gt;    A daemon for monitoring and reacting to various system and program&lt;br /&gt;    conditions&lt;br /&gt;&lt;br /&gt;daemons (0.4.2, 0.4.1, 0.4.0, 0.3.0, 0.2.1, 0.2.0, 0.0.1)&lt;br /&gt;    A toolkit to create and control daemons in different ways&lt;br /&gt;&lt;br /&gt;damagecontrol (0.5.0.1404, 0.5.0.1393, 0.5.0.1392, 0.5.0.1391, 0.5.0)&lt;br /&gt;    DamageControl&lt;br /&gt;&lt;br /&gt;darcs-ruby (0.0.1)&lt;br /&gt;    Interface to Darcs change control system&lt;br /&gt;&lt;br /&gt;dataview (0.3.1, 0.3.0, 0.2.0, 0.1.1, 0.1.0)&lt;br /&gt;    Data View is a library that creates a view of a data model. The view&lt;br /&gt;    can transform the data of the data model without changing the data.&lt;br /&gt;    Supports ActiveRecord models and other data models that have a&lt;br /&gt;    similar interface.&lt;br /&gt;&lt;br /&gt;&lt;br /&gt;db_structure (1.0.2, 1.0.1, 1.0.0)&lt;br /&gt;    [Rails] Database utilities.&lt;br /&gt;&lt;br /&gt;dbc (2.0.0, 1.3.0, 1.2.3, 1.2.2, 1.2.1, 1.2.0, 1.1.2, 1.1.1, 1.1.0)&lt;br /&gt;    Design by Contract (DBC) for C&lt;br /&gt;&lt;br /&gt;dbdbd (0.2.2)&lt;br /&gt;    dbdbd (David Black's Database Definer) -- for ad hoc flat-file&lt;br /&gt;    database formats&lt;br /&gt;&lt;br /&gt;dbi-dbrc (1.1.0, 1.0.1, 1.0.0)&lt;br /&gt;    A simple way to avoid hard-coding passwords with DBI&lt;br /&gt;&lt;br /&gt;dbmodel (0.1.0)&lt;br /&gt;    A program that generates Rails files from a data model&lt;br /&gt;&lt;br /&gt;dbus (0.1.10, 0.1.9, 0.1.8, 0.1.7, 0.1.5)&lt;br /&gt;    Ruby bindings for D-BUS.&lt;br /&gt;&lt;br /&gt;dctl (1.0.3, 1.0.2, 1.0.1, 1.0.0)&lt;br /&gt;    dctl - a daemon controller written in Ruby&lt;br /&gt;&lt;br /&gt;De.linque.nt (0.0.1)&lt;br /&gt;    Twisted script for ad-hoc Del.icio.us meta-posts.&lt;br /&gt;&lt;br /&gt;debugprint (1.0.0)&lt;br /&gt;    Easy debug() and info() methods for Kernel that use $VERBOSE and&lt;br /&gt;    $INFO&lt;br /&gt;&lt;br /&gt;deplate (0.7.3)&lt;br /&gt;    Convert wiki-like markup to latex, docbook, html, or html-slides&lt;br /&gt;&lt;br /&gt;dev-utils (1.0.1, 1.0)&lt;br /&gt;    Debugging utilities: breakpoints, debugging, and tracing.&lt;br /&gt;&lt;br /&gt;diakonos (0.7.0)&lt;br /&gt;    Diakonos is a customizable, usable console-based text editor.&lt;br /&gt;&lt;br /&gt;diff-lcs (1.1.2, 1.1.1, 1.1.0.1, 1.1.0, 1.0.4.1, 1.0.4, 1.0.3, 1.0.2, 1.0.1, 1.0.0)&lt;br /&gt;    Provides a list of changes that represent the difference between two&lt;br /&gt;    sequenced collections.&lt;br /&gt;&lt;br /&gt;&lt;br /&gt;digest-bubblebabble (1.1.0)&lt;br /&gt;    A Ruby package for creating BubbleBabble fingerprints.&lt;br /&gt;&lt;br /&gt;dnssd (0.6.0)&lt;br /&gt;    DNS Service Discovery (aka Rendezvous) API for Ruby&lt;br /&gt;&lt;br /&gt;ducktypechecker (0.1.1, 0.1.0)&lt;br /&gt;    Check to see if an object "walks like a duck".&lt;br /&gt;&lt;br /&gt;dynaload (0.2.0, 0.1.1, 0.1.0)&lt;br /&gt;    dynaload&lt;br /&gt;&lt;br /&gt;easyprompt (0.1.3, 0.1.2, 0.1.1, 0.1.0)&lt;br /&gt;    EasyPrompt is a utility for command-line scripts.&lt;br /&gt;&lt;br /&gt;ebay (0.5.2, 0.5.1)&lt;br /&gt;    eBay4R is a Ruby wrapper for eBay's Web Services SOAP API. Emphasis&lt;br /&gt;    is on ease of use and small footprint.&lt;br /&gt;&lt;br /&gt;EliteJournal (1.9.492, 1.9.480, 1.9.403, 1.9.401, 1.9.400)&lt;br /&gt;    Easy to install, multi-user blog software&lt;br /&gt;&lt;br /&gt;englishext (0.1.0)&lt;br /&gt;    EnglishExtensions contains a few convenience methods for String.&lt;br /&gt;&lt;br /&gt;eteos-client (0.3.0, 0.2.0)&lt;br /&gt;    Eteos Client for Rails allows cross-website authentication via the&lt;br /&gt;    Eteos authentication service (www.eteos.com) in two lines of code&lt;br /&gt;    for Rails applications. Even integrates with ActiveRecord user&lt;br /&gt;    models simply and easily.&lt;br /&gt;&lt;br /&gt;extensions (0.6.0, 0.5.0, 0.4.0)&lt;br /&gt;    'extensions' is a set of extensions to Ruby's built-in classes.  It&lt;br /&gt;    gathers common idioms, useful additions, and aliases, complete with&lt;br /&gt;    unit testing and documentation, so they are suitable for production&lt;br /&gt;    code.&lt;br /&gt;&lt;br /&gt;extract-curves (0.1.1)&lt;br /&gt;    GUI digitizer of a raster trace of the geometric curve corresponding&lt;br /&gt;    to the characteristics of motion of a process.&lt;br /&gt;&lt;br /&gt;&lt;br /&gt;extract_curves (0.0.1)&lt;br /&gt;    GUI digitizer of a raster trace of the geometric curve corresponding&lt;br /&gt;    to the characteristics of motion of a process.&lt;br /&gt;&lt;br /&gt;extractsbmtags (0.1.0)&lt;br /&gt;    Extract social bookmark service's tags from RSS&lt;br /&gt;&lt;br /&gt;ezcrypto (0.2.1, 0.2, 0.1.1, 0.1)&lt;br /&gt;    Simplified encryption library.&lt;br /&gt;&lt;br /&gt;facade (1.0.1)&lt;br /&gt;    An easy way to implement the facade pattern in your class&lt;br /&gt;&lt;br /&gt;FaceToFace (0.1.0)&lt;br /&gt;    Standardize object conversion and messaging, e.g. '5.to( String )'&lt;br /&gt;    instead 'of 5.to_s'&lt;br /&gt;&lt;br /&gt;facets (2005.10.30, 2005.10.15, 2005.10.11, 1.0.0, 0.7.2, 0.7.1, 0.7.0, 0.6.3)&lt;br /&gt;    The proverbial Zoo-of-More for Ruby&lt;br /&gt;&lt;br /&gt;facter (1.0.1)&lt;br /&gt;    Facter collects Operating system facts.&lt;br /&gt;&lt;br /&gt;FAM-Ruby (0.1.4)&lt;br /&gt;    FAM (SGI's File Alteration Monitor) bindings for Ruby.&lt;br /&gt;&lt;br /&gt;fastercsv (0.1.4, 0.1.3, 0.1.2)&lt;br /&gt;    FasterCSV is CSV, but faster, smaller, and cleaner.&lt;br /&gt;&lt;br /&gt;fcgi (0.8.6.1, 0.8.6, 0.8.5)&lt;br /&gt;    FastCGI ruby binding.&lt;br /&gt;&lt;br /&gt;fckeditor (0.1.0)&lt;br /&gt;    A class for generating the HTML needed for the FCKEditor&lt;br /&gt;&lt;br /&gt;feedreader (0.2.3)&lt;br /&gt;    Example rails project for use with the FeedTools library.&lt;br /&gt;&lt;br /&gt;&lt;br /&gt;&lt;br /&gt;feedtools (0.2.18, 0.2.17, 0.2.16, 0.2.15, 0.2.14, 0.2.13, 0.2.12, 0.2.11, 0.2.10, 0.2.9, 0.2.8, 0.2.7, 0.2.6, 0.2.5, 0.2.4, 0.2.3, 0.2.2, 0.2.1, 0.2.0, 0.1.0)&lt;br /&gt;    Parsing, generation, and caching system for xml news feeds.&lt;br /&gt;&lt;br /&gt;ferret (0.3.2, 0.3.1, 0.3.0, 0.2.2, 0.2.1, 0.2.0, 0.1.4, 0.1.3, 0.1.2, 0.1.1, 0.1.0)&lt;br /&gt;    Ruby indexing library.&lt;br /&gt;&lt;br /&gt;file-tail (0.1.3, 0.1.2)&lt;br /&gt;    File::Tail for Ruby&lt;br /&gt;&lt;br /&gt;filesystem (0.1.0)&lt;br /&gt;    FileSystem is a test-obsessed library for mocking out the entire&lt;br /&gt;    file system.&lt;br /&gt;&lt;br /&gt;fingerserver (0.4.0)&lt;br /&gt;    Exposes hash-style objects via the finger protocol.&lt;br /&gt;&lt;br /&gt;fireruby (0.4.1, 0.4.0, 0.3.2, 0.3.1, 0.3.0, 0.2.2, 0.2.1, 0.2.0, 0.1.0)&lt;br /&gt;    Ruby interface library for the Firebird database.&lt;br /&gt;&lt;br /&gt;FixedPt (0.0.1)&lt;br /&gt;    Fixed point class&lt;br /&gt;&lt;br /&gt;fixrbconfig (1.2, 1.0)&lt;br /&gt;    Fixes the rbconfig.rb that ships with Mac OS X 10.4 (Tiger), which&lt;br /&gt;    makes it impossible to compile C extensions&lt;br /&gt;&lt;br /&gt;flexmock (0.1.7, 0.1.6, 0.1.5, 0.1.4, 0.1.3, 0.1.2, 0.1.1, 0.0.3)&lt;br /&gt;    Simple and Flexible Mock Objects for Testing&lt;br /&gt;&lt;br /&gt;flickr (1.0.0)&lt;br /&gt;    An insanely easy interface to the Flickr photo-sharing service. By&lt;br /&gt;    Scott Raymond.&lt;br /&gt;&lt;br /&gt;formvalidator (0.1.3)&lt;br /&gt;    FormValidator is a Ruby port of Perl's Data::FormValidator library.&lt;br /&gt;&lt;br /&gt;Freshmeat-Ruby (0.1.0)&lt;br /&gt;    Freshmeat (http://freshmeat.net/) bindings for Ruby.&lt;br /&gt;&lt;br /&gt;fxri (0.3.2, 0.3.1, 0.3.0, 0.2.0, 0.1.0)&lt;br /&gt;    Graphical interface to the RI documentation, with search engine.&lt;br /&gt;&lt;br /&gt;fxruby (1.4.3, 1.4.2, 1.4.1, 1.4.0, 1.2.6, 1.2.5, 1.2.4, 1.2.3, 1.2.2, 1.2.1)&lt;br /&gt;    FXRuby is the Ruby binding to the FOX GUI toolkit.&lt;br /&gt;&lt;br /&gt;gambit (0.1.1, 0.1.0)&lt;br /&gt;    Gambit is a pure Ruby framework for building Web games.&lt;br /&gt;&lt;br /&gt;gd2 (1.0)&lt;br /&gt;    Ruby interface to gd 2 library.&lt;br /&gt;&lt;br /&gt;gdiff (0.0.1)&lt;br /&gt;    An implementation of the gdiff protocol&lt;br /&gt;&lt;br /&gt;gen (0.27.0, 0.26.0, 0.25.0, 0.24.0)&lt;br /&gt;    A simple code generation system.&lt;br /&gt;&lt;br /&gt;genie (0.1)&lt;br /&gt;    No summary: please specify a summary in metainfo/properties.rb&lt;br /&gt;&lt;br /&gt;genx4r (0.05, 0.04)&lt;br /&gt;    GenX4r is a Ruby wrapper around the GenX library, which allows you&lt;br /&gt;    to programatically generate correct, cannonical XML output.&lt;br /&gt;&lt;br /&gt;geoip (0.2.0, 0.1.0)&lt;br /&gt;    GeoIP looks up a GeoIP database to provide geographical data for an&lt;br /&gt;    IP address or Internet hostname. The free version of the GeoIP&lt;br /&gt;    database available from www.maxmind.com only contains country&lt;br /&gt;    information. This library supports that and the GeoIPCity file (both&lt;br /&gt;    revisions). The data is much more reliable than using the country&lt;br /&gt;    codes at the end of the hosts' domain names.&lt;br /&gt;&lt;br /&gt;getopt (1.3.1, 1.3.0, 1.2.0, 1.1.0, 1.0.0)&lt;br /&gt;    Getopt::Std for Ruby&lt;br /&gt;&lt;br /&gt;getopt-declare (1.12, 1.09.7)&lt;br /&gt;    Getopt-Declare is a command-line argument parser.&lt;br /&gt;&lt;br /&gt;&lt;br /&gt;gettext (1.1.1, 1.1.0, 1.0.0)&lt;br /&gt;    Ruby-GetText-Package is Native Language Support Library and Tools&lt;br /&gt;    which modeled after GNU gettext package.&lt;br /&gt;&lt;br /&gt;ggenv (0.5)&lt;br /&gt;    Environment variable manipulation using ruby arrays.&lt;br /&gt;&lt;br /&gt;glue (0.27.0, 0.26.0, 0.25.0, 0.24.0, 0.23.0, 0.22.0, 0.21.2, 0.21.0, 0.20.0, 0.19.0, 0.18.1, 0.18.0, 0.17.0, 0.16.0, 0.15.0, 0.14.0, 0.13.0)&lt;br /&gt;    Utility methods and classes for Nitro.&lt;br /&gt;&lt;br /&gt;gmailer (0.1.0, 0.0.9, 0.0.8, 0.0.7, 0.0.6, 0.0.5)&lt;br /&gt;    An class interface of the Google's webmail service&lt;br /&gt;&lt;br /&gt;gnuplot (2.2, 2.1, 2.0, 1.0)&lt;br /&gt;    Utility library to aid in interacting with gnuplot&lt;br /&gt;&lt;br /&gt;GongFox (0.2.3, 0.2.2, 0.2.1, 0.2.0, 0.1.0)&lt;br /&gt;    GUI &amp; alternative for 'net send'&lt;br /&gt;&lt;br /&gt;grammar (0.5)&lt;br /&gt;    BNF-like grammar specified directly in ruby&lt;br /&gt;&lt;br /&gt;gruff (0.0.9, 0.0.8, 0.0.7, 0.0.6, 0.0.5, 0.0.4, 0.0.3, 0.0.2, 0.0.1)&lt;br /&gt;    Beautiful graphs for one or multiple datasets.&lt;br /&gt;&lt;br /&gt;hatenabm (0.1.2, 0.1.1, 0.1.0)&lt;br /&gt;    Hatena Bookmark AtomAPI Binding for Ruby&lt;br /&gt;&lt;br /&gt;hessian (0.5.0)&lt;br /&gt;    A Ruby Hessian client.&lt;br /&gt;&lt;br /&gt;highline (1.0.1, 1.0.0, 0.6.1, 0.6.0, 0.5.0, 0.4.0, 0.3.0, 0.2.0)&lt;br /&gt;    HighLine is a high-level line oriented console interface.&lt;br /&gt;&lt;br /&gt;hprevalence (0.2.0, 0.1.1, 0.1.0)&lt;br /&gt;    Ruby based prevalence engine.&lt;br /&gt;&lt;br /&gt;html-table (1.2.2)&lt;br /&gt;    A Ruby interface for generating HTML tables&lt;br /&gt;&lt;br /&gt;htmlclipping (0.1.5, 0.1.4, 0.1.3, 0.1.2, 0.1.1, 0.1.0)&lt;br /&gt;    HtmlClipping generates excerpts from an HTML page that has a link&lt;br /&gt;    pointing to a particular URI.&lt;br /&gt;&lt;br /&gt;htmltokenizer (1.0)&lt;br /&gt;    A class to tokenize HTML.&lt;br /&gt;&lt;br /&gt;htmltools (1.09, 1.0.8)&lt;br /&gt;    This is a Ruby library for building trees representing HTML&lt;br /&gt;    structure.&lt;br /&gt;&lt;br /&gt;icalendar (0.96.4, 0.96.3, 0.96.2, 0.96.1, 0.96, 0.95)&lt;br /&gt;    A ruby implementation of the iCalendar specification (RFC-2445).&lt;br /&gt;&lt;br /&gt;idn (0.0.1)&lt;br /&gt;    LibIDN Ruby Bindings&lt;br /&gt;&lt;br /&gt;ifmapper (0.9.7, 0.9.6, 0.9.5, 0.9, 0.8.5, 0.8.1, 0.8, 0.7, 0.6, 0.5)&lt;br /&gt;    Interactive Fiction Mapping Tool.&lt;br /&gt;&lt;br /&gt;ikko (0.1)&lt;br /&gt;    A simple templating engine&lt;br /&gt;&lt;br /&gt;Imlib2-Ruby (0.5.1, 0.4.3)&lt;br /&gt;    Imlib2 bindings for Ruby.&lt;br /&gt;&lt;br /&gt;instiki (0.10.2, 0.10.1, 0.10.0, 0.9.2)&lt;br /&gt;    Easy to install WikiClone running on WEBrick and Madeleine&lt;br /&gt;&lt;br /&gt;insurance (0.2, 0.1)&lt;br /&gt;    Code coverage analysis package.&lt;br /&gt;&lt;br /&gt;interface (1.0.0)&lt;br /&gt;    Java style interfaces for ruby&lt;br /&gt;&lt;br /&gt;io-reactor (0.05)&lt;br /&gt;    An implementation of the Reactor design pattern for multiplexed&lt;br /&gt;    asynchronous single-thread IO.&lt;br /&gt;&lt;br /&gt;IO-Reactor (0.0.6)&lt;br /&gt;    An implementation of the Reactor design pattern for multiplexed&lt;br /&gt;    asynchronous single-thread IO.&lt;br /&gt;&lt;br /&gt;&lt;br /&gt;iotaz (0.1.0)&lt;br /&gt;    Object-relational mapping library.&lt;br /&gt;&lt;br /&gt;ip (0.0.3, 0.0.2, 0.0.1)&lt;br /&gt;    Ruby classes to work with IP address, ranges, and netmasks&lt;br /&gt;&lt;br /&gt;ipadmin (0.1.0)&lt;br /&gt;    A package for manipulating IPv4/IPv6 address space.&lt;br /&gt;&lt;br /&gt;iphoto2 (1.0.1, 1.0.0)&lt;br /&gt;    iphoto contains methods to parse and access the contents of the&lt;br /&gt;    iPhoto pictures.&lt;br /&gt;&lt;br /&gt;irb-history (1.0.0)&lt;br /&gt;    Persistent, shared IRB Readline history&lt;br /&gt;&lt;br /&gt;iterator (0.8, 0.6, 0.5)&lt;br /&gt;    bidirectional external iterators&lt;br /&gt;&lt;br /&gt;jabber4r (0.8.0, 0.7.0)&lt;br /&gt;    Jabber4r is a pure-Ruby Jabber client library&lt;br /&gt;&lt;br /&gt;jobserver (0.1.4)&lt;br /&gt;    Jobserver serves to run programs on multiple machines in a network&lt;br /&gt;    using ssh.&lt;br /&gt;&lt;br /&gt;Joystick-Ruby (0.1.0)&lt;br /&gt;    Linux joystick support for Ruby.&lt;br /&gt;&lt;br /&gt;jpeg2pdf (0.12)&lt;br /&gt;    jpeg2pdf is a free program that converts a directory of JPEG files&lt;br /&gt;    to a PDF file.&lt;br /&gt;&lt;br /&gt;json (0.4.0)&lt;br /&gt;    A JSON implementation in Ruby&lt;br /&gt;&lt;br /&gt;keyedlist (0.4.0)&lt;br /&gt;    A Hash which automatically computes keys.&lt;br /&gt;&lt;br /&gt;khammurabi (0.2)&lt;br /&gt;    An inference engine.&lt;br /&gt;&lt;br /&gt;&lt;br /&gt;KirbyBase (2.5.2, 2.5.1, 2.5)&lt;br /&gt;    KirbyBase is a simple, pure-Ruby, plain-text, flat-file database&lt;br /&gt;    management system.&lt;br /&gt;&lt;br /&gt;kitchen (0.0.3)&lt;br /&gt;    kitchen provides an easy way to destructively test your code.&lt;br /&gt;&lt;br /&gt;kodekopelli (0.8.0)&lt;br /&gt;    Making code generation rock since 2003. Do it well. Do it once. Let&lt;br /&gt;    Kodekopelli do the rest.&lt;br /&gt;&lt;br /&gt;kreed (0.0.2, 0.0.1)&lt;br /&gt;    Kyle's Ruby Extendable Editor For Doom&lt;br /&gt;&lt;br /&gt;kwaff (1.0.0)&lt;br /&gt;    a friendly formatter to generate XHML&lt;br /&gt;&lt;br /&gt;kwalify (0.5.1, 0.5.0, 0.3.0, 0.2.0, 0.1.0)&lt;br /&gt;    a tiny schema validator for YAML document.&lt;br /&gt;&lt;br /&gt;kwartz-ruby (2.0.4, 2.0.3, 2.0.2, 2.0.1, 2.0.0)&lt;br /&gt;    a template system for Ruby, PHP, and Java&lt;br /&gt;&lt;br /&gt;kwatable (0.0.1)&lt;br /&gt;    SQL and DTO generator from table definition&lt;br /&gt;&lt;br /&gt;ladspar (0.1)&lt;br /&gt;    Interface to LADSPA plugins&lt;br /&gt;&lt;br /&gt;lafcadio (0.9.1, 0.9.0, 0.8.2, 0.8.1, 0.8.0, 0.7.5, 0.7.4, 0.7.3, 0.7.2, 0.7.1, 0.7.0, 0.6.6, 0.6.5, 0.6.4, 0.6.3, 0.6.2, 0.6.1, 0.6.0, 0.5.2, 0.5.1, 0.5.0, 0.4.3, 0.4.2, 0.4.1, 0.4.0, 0.3.6, 0.3.5, 0.3.4)&lt;br /&gt;    Lafcadio is an object-relational mapping layer&lt;br /&gt;&lt;br /&gt;latex (0.1.3, 0.1.2, 0.1.1)&lt;br /&gt;    Latex is a LaTeX text generation library for Ruby.&lt;br /&gt;&lt;br /&gt;lazylist (0.2.2, 0.2.1, 0.2.0, 0.1.3, 0.1.2)&lt;br /&gt;    Implementation of lazy lists for Ruby&lt;br /&gt;&lt;br /&gt;libbz2 (0.4)&lt;br /&gt;    Ruby-BZ2 is a Ruby extension to use libbz2.&lt;br /&gt;&lt;br /&gt;&lt;br /&gt;&lt;br /&gt;libgnucap-ruby (0.1)&lt;br /&gt;    gnucap-ruby is a ruby binding to gnucap&lt;br /&gt;&lt;br /&gt;libinject (0.1.0)&lt;br /&gt;    LibInject is a developer tool for injecting external dependencies&lt;br /&gt;    into a Ruby file.&lt;br /&gt;&lt;br /&gt;libxosd-ruby (0.4)&lt;br /&gt;    libxosd-ruby is a ruby interface to libxosd&lt;br /&gt;&lt;br /&gt;libxosd2-ruby (0.4)&lt;br /&gt;    libxosd-ruby is a ruby interface to libxosd&lt;br /&gt;&lt;br /&gt;Linguistics (1.0.3, 1.0.2)&lt;br /&gt;    A generic, language-neutral framework for extending Ruby objects&lt;br /&gt;    with linguistic methods.&lt;br /&gt;&lt;br /&gt;localization_generator (1.0.8, 1.0.7, 1.0.6, 1.0.5, 1.0.4, 1.0.3, 1.0.2, 1.0.1, 1.0.0)&lt;br /&gt;    [Rails] Localization generator.&lt;br /&gt;&lt;br /&gt;lockfile (1.4.0, 1.3.0, 1.1.0)&lt;br /&gt;    lockfile&lt;br /&gt;&lt;br /&gt;log4r (1.0.5)&lt;br /&gt;    Log4r is a comprehensive and flexible logging library for Ruby.&lt;br /&gt;&lt;br /&gt;login_generator (1.1.0)&lt;br /&gt;    [Rails] Login generator.&lt;br /&gt;&lt;br /&gt;logmerge (1.0.0)&lt;br /&gt;    Resolves IP addresses and merges Apache access logs.&lt;br /&gt;&lt;br /&gt;lxl (0.4.3, 0.4.2, 0.4.1, 0.4.0, 0.3.8, 0.3.4, 0.3.1, 0.3.0, 0.2.4, 0.2.3, 0.2.2, 0.2.0, 0.1.1, 0.1.0)&lt;br /&gt;    LXL (Like Excel) is a mini-language that mimics Microsoft Excel&lt;br /&gt;    formulas. Easily extended with new constants and functions.&lt;br /&gt;&lt;br /&gt;madeleine (0.7.1, 0.6.1, 0.6)&lt;br /&gt;    Madeleine is a Ruby implementation of Object Prevalence&lt;br /&gt;&lt;br /&gt;mailfactory (1.2.1, 1.0.2, 1.0.1, 1.0.0, 0.5.3, 0.5.2, 0.5.1, 0.5.0)&lt;br /&gt;    MailFactory is a pure-ruby MIME mail generator&lt;br /&gt;&lt;br /&gt;marc (0.0.8, 0.0.7, 0.0.6, 0.0.5, 0.0.4, 0.0.3, 0.0.2, 0.0.1)&lt;br /&gt;    A ruby library for working with Machine Readable Cataloging&lt;br /&gt;&lt;br /&gt;markaby (0.2)&lt;br /&gt;    Markup as Ruby, write HTML in your native Ruby tongue&lt;br /&gt;&lt;br /&gt;MB-Ruby (0.2.1, 0.1.0)&lt;br /&gt;    MusicBrainz bindings for Ruby.&lt;br /&gt;&lt;br /&gt;mechanize (0.3.1, 0.3.0, 0.2.3, 0.2.2, 0.2.1, 0.2.0, 0.1.3, 0.1.2, 0.1.1, 0.1.0)&lt;br /&gt;    Automated web-browsing.&lt;br /&gt;&lt;br /&gt;memcache-client (1.0.3)&lt;br /&gt;    A Ruby memcached client&lt;br /&gt;&lt;br /&gt;memoize (1.2.0, 1.1.0, 1.0.0)&lt;br /&gt;    Speeds up methods at the cost of memory (or disk space)&lt;br /&gt;&lt;br /&gt;merge3 (0.8)&lt;br /&gt;    This gem demonstrates executable scripts&lt;br /&gt;&lt;br /&gt;meta_project (0.4.13, 0.4.12, 0.4.11, 0.4.10, 0.4.9, 0.4.8, 0.4.7, 0.4.6, 0.4.5, 0.4.4, 0.4.3, 0.4.2, 0.4.1)&lt;br /&gt;    Ruby library for interacting with project hosting servers, scms and&lt;br /&gt;    issue trackers.&lt;br /&gt;&lt;br /&gt;metaid (1.0)&lt;br /&gt;    slight metaprogramming helpers&lt;br /&gt;&lt;br /&gt;midilib (0.8.5, 0.8.4, 0.8.3, 0.8.2, 0.8.1, 0.8.0)&lt;br /&gt;    MIDI file and event manipulation library&lt;br /&gt;&lt;br /&gt;mime-types (1.13.1)&lt;br /&gt;    Manages a MIME Content-Type that will return the Content-Type for a&lt;br /&gt;    given filename.&lt;br /&gt;&lt;br /&gt;mockery (0.4.1)&lt;br /&gt;    Dynamic mock objects&lt;br /&gt;&lt;br /&gt;mockfs (0.1.2, 0.1.1)&lt;br /&gt;    MockFS is a test-obsessed library for mocking out the entire file&lt;br /&gt;    system.&lt;br /&gt;&lt;br /&gt;model_security_generator (0.0.9, 0.0.8, 0.0.7, 0.0.6, 0.0.5, 0.0.3, 0.0.2, 0.0.1)&lt;br /&gt;    [Rails] Model security and authentication generator.&lt;br /&gt;&lt;br /&gt;money (1.5.9, 1.5.8, 1.5.6, 1.5, 1.4, 1.3.2)&lt;br /&gt;    Class aiding in the handling of Money.&lt;br /&gt;&lt;br /&gt;month (0.1.0)&lt;br /&gt;    Month is a utility class for representing months in Ruby.&lt;br /&gt;&lt;br /&gt;multi (0.1)&lt;br /&gt;    Multiple Dispatch/Pattern Matching for Ruby&lt;br /&gt;&lt;br /&gt;multiblocks (0.1.0)&lt;br /&gt;    multiblocks is a framework for emulating Smalltalk-like method calls&lt;br /&gt;    which can take more than one block parameter&lt;br /&gt;&lt;br /&gt;MultipartAlternativeLite (0.0.1)&lt;br /&gt;    Lib for creating multipart/alternative HTML messages.&lt;br /&gt;&lt;br /&gt;mw-template (0.9.1)&lt;br /&gt;    MuraveyWeb::Template is a decent template library,  part of&lt;br /&gt;    MuraveyWeb framework.&lt;br /&gt;&lt;br /&gt;mysql (2.7, 2.6, 2.5.1)&lt;br /&gt;    MySQL/Ruby provides the same functions for Ruby programs that the&lt;br /&gt;    MySQL C API provides for C programs.&lt;br /&gt;&lt;br /&gt;namecase (1.0.0)&lt;br /&gt;    NameCase is a Ruby implementation of Lingua::EN::NameCase, a library&lt;br /&gt;    for converting strings to be properly cased.&lt;br /&gt;&lt;br /&gt;narf (0.7.3, 0.7.2, 0.7.1, 0.6.3, 0.6.2, 0.6.1, 0.5.1)&lt;br /&gt;    NARF is a replacement for and derivative of the Ruby CGI library. It&lt;br /&gt;    exists to trivialize web development .&lt;br /&gt;&lt;br /&gt;ncurses (0.9.1)&lt;br /&gt;    This wrapper provides access to the functions, macros, global&lt;br /&gt;    variables and constants of the ncurses library.  These are mapped to&lt;br /&gt;    a Ruby Module named "Ncurses":  Functions and external variables are&lt;br /&gt;    implemented as singleton functions of the Module Ncurses.&lt;br /&gt;&lt;br /&gt;&lt;br /&gt;needle (1.3.0, 1.2.1, 1.2.0, 1.1.0, 1.0.0, 0.9.0, 0.6.0, 0.5.0)&lt;br /&gt;    Needle is a Dependency Injection/Inversion of Control container for&lt;br /&gt;    Ruby. It supports both type-2 (setter) and type-3 (constructor)&lt;br /&gt;    injection. It takes advantage of the dynamic nature of Ruby to&lt;br /&gt;    provide a rich and flexible approach to injecting dependencies.&lt;br /&gt;&lt;br /&gt;needle-extras (1.0.0)&lt;br /&gt;    Needle-Extras is a collection of additional services that can be&lt;br /&gt;    used with Needle. This is basically a test-bed of services that may&lt;br /&gt;    eventually find their way into Needle itself.&lt;br /&gt;&lt;br /&gt;neelix (0.0.3)&lt;br /&gt;    Recipe management system&lt;br /&gt;&lt;br /&gt;nemo (0.1.3, 0.1.2, 0.1.0)&lt;br /&gt;    Ruby port of Mewa for Wee&lt;br /&gt;&lt;br /&gt;net-netrc (0.2.0, 0.1.0)&lt;br /&gt;    Net::Netrc provides ftp(1)-style .netrc parsing&lt;br /&gt;&lt;br /&gt;net-ping (1.1.0, 1.0.1, 1.0.0)&lt;br /&gt;    A ping interface for Ruby&lt;br /&gt;&lt;br /&gt;net-sftp (1.1.0, 1.0.1, 1.0.0, 0.9.0, 0.5.0)&lt;br /&gt;    Net::SFTP is a pure-Ruby implementation of the SFTP client protocol.&lt;br /&gt;&lt;br /&gt;net-ssh (1.0.6, 1.0.5, 1.0.4, 1.0.3, 1.0.2, 1.0.1, 1.0.0, 0.9.0, 0.6.0, 0.5.0, 0.1.0, 0.0.5, 0.0.4, 0.0.3, 0.0.2, 0.0.1)&lt;br /&gt;    Net::SSH is a pure-Ruby implementation of the SSH2 client protocol.&lt;br /&gt;&lt;br /&gt;net-tftp (0.1.0)&lt;br /&gt;    Net::TFTP is a pure Ruby implementation of the Trivial File Transfer&lt;br /&gt;    Protocol (RFC 1350)&lt;br /&gt;&lt;br /&gt;net-tnsping (1.1.0, 1.0.0)&lt;br /&gt;    A package for pinging Oracle listeners and databases&lt;br /&gt;&lt;br /&gt;neuro (0.4.0)&lt;br /&gt;    Neural Network Extension for Ruby&lt;br /&gt;&lt;br /&gt;&lt;br /&gt;nitro (0.27.0, 0.26.0, 0.25.0, 0.24.0, 0.23.0, 0.22.0, 0.21.2, 0.21.0, 0.20.0, 0.19.0, 0.18.1, 0.18.0, 0.17.0, 0.16.0, 0.15.0, 0.14.0, 0.13.0, 0.12.0, 0.11.0, 0.10.0, 0.9.5, 0.9.3, 0.8.0, 0.7.0, 0.6.0, 0.5.0, 0.4.1, 0.3.0, 0.2.0, 0.1.2)&lt;br /&gt;    Everything you need to create Web 2.0 applications with Ruby and&lt;br /&gt;    Javascript&lt;br /&gt;&lt;br /&gt;nitro-auth (0.2.0)&lt;br /&gt;    Provides configurable, extensible authentication and authorization&lt;br /&gt;    for Nitro.&lt;br /&gt;&lt;br /&gt;ObjectGraph (1.0.1, 1.0)&lt;br /&gt;    A simple script that generates a graph of the ruby class&lt;br /&gt;    hierarchies. Uses GraphViz (separate install).&lt;br /&gt;&lt;br /&gt;og (0.27.0, 0.26.0, 0.25.0, 0.24.0, 0.23.0, 0.22.0, 0.21.2, 0.21.0, 0.20.0, 0.19.0, 0.18.1, 0.18.0, 0.17.0, 0.16.0, 0.15.0, 0.14.0, 0.13.0, 0.12.0, 0.11.0, 0.10.0, 0.9.5, 0.9.3, 0.8.0, 0.7.0, 0.6.0, 0.5.0)&lt;br /&gt;    State of the art object-relational mapping system.&lt;br /&gt;&lt;br /&gt;Ook (1.0.2)&lt;br /&gt;    A Ruby interpreter for the Ook!&lt;br /&gt;    (www.dangermouse.net/esoteric/ook.html) and BrainF*ck&lt;br /&gt;    (www.catseye.mb.ca/esoteric/bf/index.html) programming languages.&lt;br /&gt;&lt;br /&gt;openid (0.0.1)&lt;br /&gt;    OpenID support for Ruby&lt;br /&gt;&lt;br /&gt;opensearch (0.0.1)&lt;br /&gt;    Search A9 OpenSearch compatible engines&lt;br /&gt;&lt;br /&gt;OptionParser (0.5.1, 0.5.0)&lt;br /&gt;    A flexible command line option parser.&lt;br /&gt;&lt;br /&gt;Orbjson (0.0.4, 0.0.3, 0.0.2, 0.0.1)&lt;br /&gt;    Lib for creating JSON-RPC server applications.&lt;br /&gt;&lt;br /&gt;packrat (0.1.0)&lt;br /&gt;    A package documentation extractor/generator for Copland.&lt;br /&gt;&lt;br /&gt;PageTemplate (2.1.6, 2.1.5, 2.1.3, 2.1.2, 2.1.1, 2.1.0, 2.0.0, 1.2.0, 1.1.2, 1.1.1)&lt;br /&gt;    A simple templating system for Web sites.&lt;br /&gt;&lt;br /&gt;&lt;br /&gt;parseinput (0.0.1)&lt;br /&gt;    Parse Input is a chain-saw tool for data mining.&lt;br /&gt;&lt;br /&gt;ParseTree (1.3.7, 1.3.6, 1.3.5, 1.3.4, 1.3.3, 1.3.2, 1.3.0, 1.2.0, 1.1.1, 1.1.0)&lt;br /&gt;    Extract and enumerate ruby parse trees.&lt;br /&gt;&lt;br /&gt;pathname2 (1.4.0, 1.3.1, 1.3.0, 1.2.1, 1.2.0, 1.1.0, 1.0.0)&lt;br /&gt;    An alternate implementation of the Pathname class&lt;br /&gt;&lt;br /&gt;payment (1.0.1, 0.9)&lt;br /&gt;    Payment is used to process credit cards and electronic cash through&lt;br /&gt;    merchant accounts.&lt;br /&gt;&lt;br /&gt;paymentonline (0.1)&lt;br /&gt;    Ruby interface for the Payment Online Direct Connect API&lt;br /&gt;&lt;br /&gt;paypal (1.0.1, 1.0.0, 0.9.0, 0.5.1, 0.5.0)&lt;br /&gt;    Paypal IPN integration library for rails and other web applications&lt;br /&gt;&lt;br /&gt;pdf-writer (1.1.3, 1.1.2, 1.1.1, 1.1.0, 1.0.1, 1.0.0)&lt;br /&gt;    A pure Ruby PDF document creation library.&lt;br /&gt;&lt;br /&gt;permutation (0.1.3, 0.1.2, 0.1.1)&lt;br /&gt;    Permutation library in pure Ruby&lt;br /&gt;&lt;br /&gt;pidify (0.1.1, 0.1.0)&lt;br /&gt;    This allows a script to check if there is currently another running&lt;br /&gt;    instance of itself, and give it the ability to kill that instance&lt;br /&gt;    based on PID.&lt;br /&gt;&lt;br /&gt;Pimki (1.8.092, 1.7.092, 1.6.092, 1.5.092, 1.4.092, 1.3.092, 1.2.092, 1.1.092, 1.0.092)&lt;br /&gt;    A Personal Information Manager (PIM) based on Instiki's Wiki&lt;br /&gt;    technology.&lt;br /&gt;&lt;br /&gt;pippin (0.1)&lt;br /&gt;    High level XML marshalling/unmarshalling framework.&lt;br /&gt;&lt;br /&gt;Platform (0.4.0, 0.3.0, 0.2.0)&lt;br /&gt;    Hopefully robust platform sensing&lt;br /&gt;&lt;br /&gt;plist (1.0.0)&lt;br /&gt;    plist parses Mac OS X plist files into ruby data types.&lt;br /&gt;&lt;br /&gt;podcast (0.0.4, 0.0.3, 0.0.2)&lt;br /&gt;    Create podcasts from MP3 files&lt;br /&gt;&lt;br /&gt;posixlock (0.0.1)&lt;br /&gt;    Methods to add posix (fcntl based and nfs safe) locking to the&lt;br /&gt;    builtin File class&lt;br /&gt;&lt;br /&gt;postgres (0.7.1)&lt;br /&gt;    The extension library to access a PostgreSQL database from Ruby.&lt;br /&gt;&lt;br /&gt;postgres-pr (0.4.0, 0.3.6, 0.3.5, 0.3.4, 0.3.3, 0.3.2, 0.3.1, 0.3.0, 0.2.2, 0.2.1, 0.2.0, 0.1.1, 0.1.0, 0.0.1)&lt;br /&gt;    A pure Ruby interface to the PostgreSQL (&gt;= 7.4) database&lt;br /&gt;&lt;br /&gt;pqa (0.7, 0.6, 0.5)&lt;br /&gt;    SQL query analyzer&lt;br /&gt;&lt;br /&gt;precedence (0.8.0, 0.6.0)&lt;br /&gt;    A library for the creation manipulation and analysis of precedence&lt;br /&gt;    networks.&lt;br /&gt;&lt;br /&gt;PrettyException (0.9.5, 0.9.3, 0.9.2, 0.9.1)&lt;br /&gt;    PrettyException is a library to output pretty html output for raised&lt;br /&gt;    exceptions.&lt;br /&gt;&lt;br /&gt;PriorityQueue (0.1.2, 0.1.0)&lt;br /&gt;    This is a fibonacci-heap priority-queue implementation&lt;br /&gt;&lt;br /&gt;production_log_analyzer (1.3.0, 1.2.1, 1.2.0, 1.1.0)&lt;br /&gt;    Extracts statistics from Rails production logs&lt;br /&gt;&lt;br /&gt;progressbar (0.0.3)&lt;br /&gt;    Ruby/ProgressBar is a text progress bar library for Ruby.  It can&lt;br /&gt;    indicate progress with percentage, a progress bar, and estimated&lt;br /&gt;    remaining time.&lt;br /&gt;&lt;br /&gt;ptools (1.0.0)&lt;br /&gt;    Extra methods for the File class&lt;br /&gt;&lt;br /&gt;puppet (0.9.2)&lt;br /&gt;    Puppet is a server configuration management tool.&lt;br /&gt;&lt;br /&gt;purplepkg (0.0.6, 0.0.5, 0.0.4, 0.0.3)&lt;br /&gt;    A simple pre-packaging tool with meta-package plugin support.&lt;br /&gt;&lt;br /&gt;queuehash (0.1.0)&lt;br /&gt;    A QueueHash is an ordered hash: Keys are ordered according to when&lt;br /&gt;    they were inserted.&lt;br /&gt;&lt;br /&gt;r43 (0.3.0, 0.2.0)&lt;br /&gt;    A Ruby wrapper for the 43 Things web services API&lt;br /&gt;&lt;br /&gt;ragi (1.0.1, 1.0.0)&lt;br /&gt;    RAGI allows you to create useful telephony applications using&lt;br /&gt;    Asterisk and Ruby [on Rails].&lt;br /&gt;&lt;br /&gt;rail_stat_generator (0.1.3, 0.1.1, 0.1.0)&lt;br /&gt;    RailStat is a real-time web site statistics package which uses Ruby&lt;br /&gt;    on Rails web application framework.&lt;br /&gt;&lt;br /&gt;rails (1.0.0, 0.14.4, 0.14.3, 0.14.2, 0.14.1, 0.13.1, 0.13.0, 0.12.1, 0.12.0, 0.11.1, 0.11.0, 0.10.1, 0.10.0, 0.9.5, 0.9.4.1, 0.9.4, 0.9.3, 0.9.2, 0.9.1, 0.9.0, 0.8.5, 0.8.0, 0.7.0, 0.6.5, 0.6.0)&lt;br /&gt;    Web-application framework with template engine, control-flow layer,&lt;br /&gt;    and ORM.&lt;br /&gt;&lt;br /&gt;rails_analyzer_tools (1.1.0, 1.0.0)&lt;br /&gt;    Tools for analyzing the performance of web sites.&lt;br /&gt;&lt;br /&gt;rails_product (0.6, 0.5)&lt;br /&gt;    Creates a ready-to-go productized Ruby on Rails application from a&lt;br /&gt;    single command ('rails_product').&lt;br /&gt;&lt;br /&gt;RailsEditor (0.0.21)&lt;br /&gt;    A screen + vim IDE setup for editing a Rails tree&lt;br /&gt;&lt;br /&gt;rake (0.7.0, 0.6.2, 0.6.0, 0.5.4, 0.5.3, 0.5.0, 0.4.15, 0.4.14, 0.4.13, 0.4.12, 0.4.11, 0.4.10, 0.4.9, 0.4.8, 0.4.7, 0.4.6, 0.4.4, 0.4.3, 0.4.2, 0.4.0, 0.3.2)&lt;br /&gt;    Ruby based make-like utility.&lt;br /&gt;&lt;br /&gt;rakepp (0.0.1)&lt;br /&gt;    Cpp Support for Rake.&lt;br /&gt;&lt;br /&gt;rami (0.4, 0.3, 0.2, 0.1)&lt;br /&gt;    A proxy server/client api for the Asterisk Manager Interface&lt;br /&gt;&lt;br /&gt;rant (0.5.4, 0.5.2, 0.5.0, 0.4.8, 0.4.6, 0.4.4, 0.4.2, 0.4.0, 0.3.8, 0.3.6, 0.3.4, 0.3.2, 0.3.0)&lt;br /&gt;    Rant is a Ruby based build tool.&lt;br /&gt;&lt;br /&gt;rb_cdio (0.2.0, 0.1.1, 0.1.0)&lt;br /&gt;    Bindings for libcdio and libcddb: Cross-platform CD-ROM reading and&lt;br /&gt;    control&lt;br /&gt;&lt;br /&gt;rbeai (1.0.1, 0.0.1)&lt;br /&gt;    Simple EAI Engine.&lt;br /&gt;&lt;br /&gt;rbibtex (0.1.0, 0.0.2, 0.0.1)&lt;br /&gt;    A bibtex parsing library written in pure ruby&lt;br /&gt;&lt;br /&gt;rbot (0.9.9)&lt;br /&gt;    A modular ruby IRC bot.&lt;br /&gt;&lt;br /&gt;rbpm (0.0.3, 0.0.2, 0.0.1)&lt;br /&gt;    lightweight (jbpm-like) workflow framework&lt;br /&gt;&lt;br /&gt;rcss (0.3.1)&lt;br /&gt;    Rcss - CSS Server-side Constants for Ruby/Rails&lt;br /&gt;&lt;br /&gt;rdf (0.3)&lt;br /&gt;    RubyRDF is a wrapper over the Redland RDF framework&lt;br /&gt;&lt;br /&gt;rdf-redland (0.5.1.3, 0.5.1.2, 0.5.1, 0.5)&lt;br /&gt;    rdf-redland is a wrapper over the Redland RDF framework&lt;br /&gt;&lt;br /&gt;realrand (1.0.2)&lt;br /&gt;    Generate real random numbers with Ruby.&lt;br /&gt;&lt;br /&gt;reap (2005.10.17, 2005.10.10, 5.10.10, 4.0, 3.01, 0.6.1, 0.5.0, 0.4.0)&lt;br /&gt;    Tools for Ruby project testing, management and assistance.&lt;br /&gt;&lt;br /&gt;RedCloth (3.0.4, 3.0.3, 3.0.2, 3.0.1, 3.0.0, 2.0.11, 2.0.10, 2.0.9, 2.0.8, 2.0.7, 2.0.6, 2.0.5, 2.0.4, 2.0.3, 2.0.2)&lt;br /&gt;    RedCloth is a module for using Textile and Markdown in Ruby. Textile&lt;br /&gt;    and Markdown are text formats.  A very simple text format. Another&lt;br /&gt;    stab at making readable text that can be converted to HTML.&lt;br /&gt;&lt;br /&gt;&lt;br /&gt;&lt;br /&gt;refe (0.8.0.2, 0.8.0.1, 0.8.0.0)&lt;br /&gt;    ReFe is yet another command line Ruby Reference Manual browser. It&lt;br /&gt;    supports only Japanese.&lt;br /&gt;&lt;br /&gt;reference (0.5)&lt;br /&gt;    provides reference/pointer functionality of other languages&lt;br /&gt;&lt;br /&gt;reg (0.4.6)&lt;br /&gt;    The reg pattern matching/replacement language&lt;br /&gt;&lt;br /&gt;regexp-engine (0.9, 0.8)&lt;br /&gt;    regular expression engine&lt;br /&gt;&lt;br /&gt;reliable-msg (1.1.0)&lt;br /&gt;    Reliable messaging and persistent queues for building asynchronous&lt;br /&gt;    applications in Ruby&lt;br /&gt;&lt;br /&gt;revolution (0.5, 0.4, 0.3, 0.2, 0.1)&lt;br /&gt;    Revolution is a binding for the Evolution email client&lt;br /&gt;&lt;br /&gt;rfs (0.3, 0.2, 0.1)&lt;br /&gt;    A utility that allows you to use regular expressions to rename large&lt;br /&gt;    sets of files or folders. Fxruby and cmd-line interfaces.&lt;br /&gt;&lt;br /&gt;rgl (0.2.3, 0.2.2)&lt;br /&gt;    Ruby Graph Library&lt;br /&gt;&lt;br /&gt;RGnuchess (0.1.0)&lt;br /&gt;    An interface for working with gnuchess, providing some basic chess&lt;br /&gt;    tools.&lt;br /&gt;&lt;br /&gt;rhizmail (0.1.4, 0.1.3, 0.1.2, 0.1.1, 0.1.0)&lt;br /&gt;    RhizMail is a test-friendly library for sending out customized&lt;br /&gt;    emails.&lt;br /&gt;&lt;br /&gt;ri18n (0.0.3, 0.0.2)&lt;br /&gt;    Ruby application internationalization and localization library&lt;br /&gt;&lt;br /&gt;ribit (0.3.0)&lt;br /&gt;    Ribit - Wiki for Mobiles&lt;br /&gt;&lt;br /&gt;rio (0.3.4, 0.3.3, 0.3.2, 0.3.1)&lt;br /&gt;    Rio - Ruby I/O Comfort Class&lt;br /&gt;&lt;br /&gt;ritex (0.1)&lt;br /&gt;    WebTeX to MathML conversion library.&lt;br /&gt;&lt;br /&gt;rlirc (0.3.1, 0.3, 0.2, 0.1)&lt;br /&gt;    a replacement for irexec and irxevent from lirc&lt;br /&gt;&lt;br /&gt;rmagick (1.9.3, 1.9.2, 1.9.1, 1.9.0, 1.8.3, 1.8.2, 1.8.1, 1.8.0, 1.7.4, 1.7.3, 1.7.2, 1.7.1)&lt;br /&gt;    RMagick is an interface between the Ruby programming language and&lt;br /&gt;    the ImageMagick and GraphicsMagick image processing libraries.&lt;br /&gt;&lt;br /&gt;rmail (0.17)&lt;br /&gt;    This is RubyMail, a lightweight mail library containing various&lt;br /&gt;    utility classes and modules that allow Ruby scripts to parse,&lt;br /&gt;    modify, and generate MIME mail messages.&lt;br /&gt;&lt;br /&gt;rmarc (0.2.0, 0.1.1)&lt;br /&gt;    RMARC is a library for working with MARC and MARC XML data in Ruby&lt;br /&gt;&lt;br /&gt;Rodo (1.1)&lt;br /&gt;    Rodo attempts to help user organizes his ToDo files.&lt;br /&gt;&lt;br /&gt;rook (0.0.2, 0.0.1)&lt;br /&gt;    a SCM tool like Make, Rake, Ant, and so on.&lt;br /&gt;&lt;br /&gt;rools (0.1.4)&lt;br /&gt;    A Rules Engine written in Ruby&lt;br /&gt;&lt;br /&gt;ropenlaszlo (0.4.0, 0.3.0, 0.2.0)&lt;br /&gt;    Ruby interface to OpenLaszlo.&lt;br /&gt;&lt;br /&gt;rote (0.3.2.2, 0.3.2, 0.3.0.2, 0.3.0, 0.2.4.1, 0.2.4, 0.2.2, 0.2.0, 0.1.6)&lt;br /&gt;    Adds template-based doc support to Rake.&lt;br /&gt;&lt;br /&gt;rq (0.1.7)&lt;br /&gt;    rq is an __experimental__ tool used to manage nfs mounted work&lt;br /&gt;    queues&lt;br /&gt;&lt;br /&gt;rrename (0.3.0, 0.2.0)&lt;br /&gt;    A GNOME2 based tool for interactively renameing files  with regular&lt;br /&gt;    expressions.&lt;br /&gt;&lt;br /&gt;&lt;br /&gt;rrt_ruby (0.3.1, 0.3.0, 0.2.1)&lt;br /&gt;    rrt_ruby is a Ruby library providing access to Rose RealTime models&lt;br /&gt;    through RRTEI&lt;br /&gt;&lt;br /&gt;rscm (0.4.0, 0.3.16, 0.3.15, 0.3.14, 0.3.13, 0.3.12, 0.3.11, 0.3.10, 0.3.9, 0.3.8, 0.3.7, 0.3.6, 0.3.5, 0.3.4, 0.3.3, 0.3.2, 0.3.1, 0.3.0, 0.2.1.1404, 0.2.0, 0.1.0.1338, 0.1.0.1337, 0.1.0.999, 0.1.0)&lt;br /&gt;    RSCM - Ruby Source Control Management&lt;br /&gt;&lt;br /&gt;rscm-accurev (0.0.7, 0.0.6, 0.0.4, 0.0.3, 0.0.2, 0.0.1, 0.0)&lt;br /&gt;    RSCM::Accurev - RSCM API for Accurev&lt;br /&gt;&lt;br /&gt;rsi (0.4)&lt;br /&gt;    RSI (Ruby Simple Indexer) is a simple full text index&lt;br /&gt;&lt;br /&gt;rspec (0.3.2, 0.3.1, 0.3.0, 0.2.0, 0.1.7, 0.1.6, 0.1.5, 0.1.4, 0.1.3, 0.1.2, 0.1.1, 0.1.0)&lt;br /&gt;    Behaviour Specification Framework for Ruby&lt;br /&gt;&lt;br /&gt;rstyx (0.2.0)&lt;br /&gt;    RStyx is an implementation of the Styx/9P2000 distributed filesystem&lt;br /&gt;    protocol for Ruby.&lt;br /&gt;&lt;br /&gt;rsyncmanager (1.1)&lt;br /&gt;    RsyncManager is a daemon for controlling and monitoring rsync&lt;br /&gt;    transfers&lt;br /&gt;&lt;br /&gt;rtaglib (0.1.1, 0.1.0)&lt;br /&gt;    Bindings for taglib&lt;br /&gt;&lt;br /&gt;rtf (0.1.0)&lt;br /&gt;    Ruby library to create rich text format documents.&lt;br /&gt;&lt;br /&gt;Rubilicious (0.1.5, 0.1.4, 0.1.2, 0.1.0)&lt;br /&gt;    Delicious (http://del.icio.us/) bindings for Ruby.&lt;br /&gt;&lt;br /&gt;rubinium (0.1.1)&lt;br /&gt;    Code generator for Selenium with test validation&lt;br /&gt;&lt;br /&gt;rublog (0.8.0)&lt;br /&gt;    RubLog is a simple web log, based around the idea of displaying a&lt;br /&gt;    set of regular files in a log-format.&lt;br /&gt;&lt;br /&gt;ruby-activeldap (0.6.0, 0.5.9, 0.5.8, 0.5.7, 0.5.5, 0.5.4, 0.5.3, 0.5.2, 0.5.1, 0.5.0, 0.4.4, 0.4.3, 0.4.2, 0.4.1)&lt;br /&gt;    Ruby/ActiveLDAP is a object-oriented API to LDAP&lt;br /&gt;&lt;br /&gt;ruby-activeldap-debug (0.6.0, 0.5.9, 0.5.8, 0.5.7, 0.5.6, 0.5.5)&lt;br /&gt;    Ruby/ActiveLDAP is a object-oriented API to LDAP&lt;br /&gt;&lt;br /&gt;ruby-agi (1.1.0, 1.0.2)&lt;br /&gt;    Ruby Language API for Asterisk&lt;br /&gt;&lt;br /&gt;ruby-ajp (0.1.5)&lt;br /&gt;    An implementation of Apache Jserv Protocol 1.3 in Ruby&lt;br /&gt;&lt;br /&gt;ruby-breakpoint (0.5.0)&lt;br /&gt;    ruby-breakpoint lets you inspect and modify state at run time.&lt;br /&gt;&lt;br /&gt;ruby-cache (0.3.0)&lt;br /&gt;    Ruby/Cache is a library for caching objects based on the LRU&lt;br /&gt;    algorithm for Ruby.&lt;br /&gt;&lt;br /&gt;ruby-contract (0.1.1)&lt;br /&gt;    ruby-contract provides support for describing and using types via&lt;br /&gt;    unit-tests.&lt;br /&gt;&lt;br /&gt;ruby-doom (0.8)&lt;br /&gt;    Ruby-DOOM provides a scripting API for creating DOOM maps. It also&lt;br /&gt;    provides higher-level APIs to make map creation easier.&lt;br /&gt;&lt;br /&gt;ruby-gdchart (1.0.0)&lt;br /&gt;    A Ruby wrapper around Bruce Verderaime's GDChart chart-drawing&lt;br /&gt;    utility. (Note: The C library that this gem wraps is included, but&lt;br /&gt;    requires the installation of gd-2.0.28 or higher.)&lt;br /&gt;&lt;br /&gt;ruby-growl (1.0.1, 1.0.0)&lt;br /&gt;    Pure-Ruby Growl Notifier&lt;br /&gt;&lt;br /&gt;ruby-json (1.1.1)&lt;br /&gt;    ruby-json is a library for using the JavaScript Object Notation&lt;br /&gt;&lt;br /&gt;    (JSON) under Ruby.&lt;br /&gt;&lt;br /&gt;ruby-managesieve (0.2.0, 0.1.0)&lt;br /&gt;    A Ruby library for the MANAGESIEVE protocol&lt;br /&gt;&lt;br /&gt;Ruby-MemCache (0.0.1)&lt;br /&gt;    This is a client library for memcached, a high-performance&lt;br /&gt;    distributed memory cache.&lt;br /&gt;&lt;br /&gt;ruby-mp3info (0.4)&lt;br /&gt;    ruby-mp3info is a pure-ruby library that gives low level&lt;br /&gt;    informations on mp3 files&lt;br /&gt;&lt;br /&gt;ruby-postgres (0.7.1.2005.12.21, 0.7.1.2005.12.20, 0.7.1.2005.11.27, 0.7.1.2005.11.24)&lt;br /&gt;    Ruby extension library providing an API to PostgreSQL&lt;br /&gt;&lt;br /&gt;ruby-web (1.1.1)&lt;br /&gt;    Web libraries for ruby&lt;br /&gt;&lt;br /&gt;ruby_ex (0.3.0, 0.2.0, 0.1.2, 0.1.1)&lt;br /&gt;    RubyEx contains general purpose Ruby extensions.&lt;br /&gt;&lt;br /&gt;ruby_odeum (0.2.1)&lt;br /&gt;    Ruby/Odeum is a simple full text reverse indexer that lets you index&lt;br /&gt;    a set of files and then search through them very quickly.&lt;br /&gt;&lt;br /&gt;rubyacl (1.0)&lt;br /&gt;    Library for handling ACL's&lt;br /&gt;&lt;br /&gt;rubyforge (0.0.1, 0.0.0)&lt;br /&gt;    rubyforge&lt;br /&gt;&lt;br /&gt;rubyful_soup (1.0.3, 1.0.2, 1.0.1)&lt;br /&gt;    An HTML/XML parser that handles bad markup and provides tree&lt;br /&gt;    traversal methods.&lt;br /&gt;&lt;br /&gt;rubygems-update (0.8.11, 0.8.10, 0.8.8, 0.8.6, 0.8.5, 0.8.4, 0.8.3, 0.8.1, 0.8.0)&lt;br /&gt;    RubyGems Update GEM&lt;br /&gt;&lt;br /&gt;&lt;br /&gt;RubyInline (3.4.0, 3.3.2, 3.3.1, 3.3.0, 3.2.1, 3.2.0, 3.1.0)&lt;br /&gt;    Multi-language extension coding within ruby.&lt;br /&gt;&lt;br /&gt;RubyJDWP (0.0.1)&lt;br /&gt;    Ruby implementation of the Java Debug Wire Protocol. This version is&lt;br /&gt;    pre-alpha.&lt;br /&gt;&lt;br /&gt;rubylexer (0.6.2)&lt;br /&gt;    lexer of ruby in ruby&lt;br /&gt;&lt;br /&gt;rubypants (0.2.0)&lt;br /&gt;    RubyPants is a Ruby port of the smart-quotes library SmartyPants.&lt;br /&gt;&lt;br /&gt;rubyscript2exe (0.4.0, 0.3.6, 0.3.5, 0.3.4, 0.3.3)&lt;br /&gt;    A Ruby Compiler&lt;br /&gt;&lt;br /&gt;rubySelenium (0.0.8)&lt;br /&gt;    rubySelenium is a wrapper around Selenium that generates the&lt;br /&gt;    FitRunner style HTML on the fly so you can write selenium scripts&lt;br /&gt;    programmatically.&lt;br /&gt;&lt;br /&gt;rubyslippers (1.03, 1.02, 1.01, 1.00, 0.99, 0.98, 0.97, 0.96, 0.95, 0.94, 0.93, 0.92)&lt;br /&gt;    RubySlippers is a GUI wrapper for RubyGems using RubyWebDialogs.&lt;br /&gt;&lt;br /&gt;rubystats (0.1.1, 0.1.0)&lt;br /&gt;    Classes for statistical calculations, e.g., binomial, beta, and&lt;br /&gt;    normal distributions with PDF, CDF and inverse CDF (all ported from&lt;br /&gt;    PHPMath) as well as Fisher's Exact Test&lt;br /&gt;&lt;br /&gt;RubyToC (1.0.0.4)&lt;br /&gt;    Ruby (subset) to C translator.&lt;br /&gt;&lt;br /&gt;rubytree (0.2.2)&lt;br /&gt;    Ruby implementation of the Tree data structure.&lt;br /&gt;&lt;br /&gt;rubywebdialogs (0.2.0)&lt;br /&gt;    The Web Browser as a Graphical User Interface for Ruby Applications&lt;br /&gt;&lt;br /&gt;rubyzip (0.5.12, 0.5.11, 0.5.9, 0.5.8, 0.5.7, 0.5.5)&lt;br /&gt;    rubyzip is a ruby module for reading and writing zip files&lt;br /&gt;&lt;br /&gt;RuCodeGen (0.1.0)&lt;br /&gt;    Simple code generation tool&lt;br /&gt;&lt;br /&gt;runt (0.3.0, 0.2.0)&lt;br /&gt;    Ruby Temporal Expressions.&lt;br /&gt;&lt;br /&gt;ruport (0.2.9, 0.2.5, 0.2.4, 0.2.2, 0.2.0, 0.1.0)&lt;br /&gt;    A generalized Ruby report generation and templating engine.&lt;br /&gt;&lt;br /&gt;rutils (0.1.4, 0.1.3, 0.1.2, 0.1.1, 0.1.0, 0.0.4, 0.0.3)&lt;br /&gt;    Simple processing of russian strings&lt;br /&gt;&lt;br /&gt;ruvi (0.4.12, 0.4.11, 0.4.10, 0.4.9, 0.4.8, 0.4.7)&lt;br /&gt;    Pure Ruby Vim-wannabe&lt;br /&gt;&lt;br /&gt;ruwiki (0.9.3, 0.9.2, 0.9.1, 0.9.0)&lt;br /&gt;    A simple, extensible, and fast Wiki-clone.&lt;br /&gt;&lt;br /&gt;rvsh (0.4.5)&lt;br /&gt;    VIM clone&lt;br /&gt;&lt;br /&gt;rwb (0.2.1)&lt;br /&gt;    Ruby Web Bench, a web performance and load testing framework&lt;br /&gt;&lt;br /&gt;rwdaddresses (1.03, 1.02, 1.01, 0.99, 0.98, 0.97, 0.95, 0.94, 0.93, 0.92, 0.91, 0.9, 0.8)&lt;br /&gt;    rwdaddresses is contact book application using rwdtinker and&lt;br /&gt;    RubyWebDialogs.&lt;br /&gt;&lt;br /&gt;rwddemo (0.92, 0.91, 0.90, 0.8, 0.7, 0.6)&lt;br /&gt;    rwddemo application shows rwdtinker and RubyWebDialogs features.&lt;br /&gt;&lt;br /&gt;rwdgutenberg (0.07, 0.06, 0.05, 0.04, 0.03)&lt;br /&gt;    rwdgutenberg application is a text file reader for RubyWebDialogs.&lt;br /&gt;&lt;br /&gt;rwdhypernote (0.10, 0.09, 0.08, 0.07, 0.06, 0.05, 0.04, 0.03)&lt;br /&gt;    rwdhypernote application is a hierarchical note taker for&lt;br /&gt;    RubyWebDialogs.&lt;br /&gt;&lt;br /&gt;&lt;br /&gt;rwdmovies (0.95, 0.94, 0.93, 0.92, 0.91, 0.90, 0.7, 0.6)&lt;br /&gt;    rwdmovies application is a movie database using RubyWebDialogs.&lt;br /&gt;&lt;br /&gt;rwdschedule (1.02, 1.01, 1.00, 0.99, 0.98, 0.97, 0.96, 0.95, 0.94, 0.93, 0.92, 0.91, 0.9, 0.8, 0.6, 0.5)&lt;br /&gt;    rwdschedule is an calendar application using rwdtinker and&lt;br /&gt;    RubyWebDialogs.&lt;br /&gt;&lt;br /&gt;rwdshell (1.00, 0.99, 0.98, 0.97, 0.96, 0.95, 0.94, 0.93, 0.92, 0.9)&lt;br /&gt;    rwdshell is a GUI front end for operating system commands with&lt;br /&gt;    rwdtinker and RubyWebDialogs features.&lt;br /&gt;&lt;br /&gt;rwdtinker (1.67, 1.66, 1.65, 1.64, 1.63, 1.62, 1.61, 1.60, 1.59, 1.58, 1.57, 1.56, 1.55, 1.54, 1.53, 1.52, 1.51, 1.48, 1.47, 1.46, 1.45, 1.44, 1.43, 1.42, 1.41, 1.24, 1.23, 1.4, 1.3, 1.2)&lt;br /&gt;    rwdtinker application is a framework to program for RubyWebDialogs.&lt;br /&gt;&lt;br /&gt;rwdtorrent (0.04, 0.03, 0.02, 0.01)&lt;br /&gt;    rwdtorrent is a GUI front end for BitTorrent with rwdtinker and&lt;br /&gt;    RubyWebDialogs features.&lt;br /&gt;&lt;br /&gt;rwdziparubyslippers (0.99)&lt;br /&gt;    rubyslippers is frontend for the RubyGems system using rwdtinker and&lt;br /&gt;    RubyWebDialogs. Requires rwdtinker &gt;1.51&lt;br /&gt;&lt;br /&gt;rwdziprwdanimatedgifs (0.70)&lt;br /&gt;    rwdziprwdanimatedgifs is a animated gifs viewer using rwdtinker and&lt;br /&gt;    RubyWebDialogs. Requires rwdtinker &gt;1.51&lt;br /&gt;&lt;br /&gt;rwdziprwdaschedule (1.02, 1.00, 0.97, 0.93)&lt;br /&gt;    rwdziprwdwschedule is a event schedule application using rwdtinker&lt;br /&gt;    and RubyWebDialogs. Requires rwdtinker &gt;1.51&lt;br /&gt;&lt;br /&gt;rwdziprwdmp3 (0.02)&lt;br /&gt;    rwdziprwdmp3 is a Mp3 Player Control application using rwdtinker and&lt;br /&gt;    RubyWebDialogs. Requires rwdtinker &gt;1.51&lt;br /&gt;&lt;br /&gt;rwdziprwdwaddresses (1.04, 1.00, 0.99, 0.97)&lt;br /&gt;    rwdaddresses is a Contact Book using rwdtinker and RubyWebDialogs.&lt;br /&gt;    Requires rwdtinker &gt;1.56&lt;br /&gt;&lt;br /&gt;rwdziprwdwcalc (0.50)&lt;br /&gt;    rwdcalc is calculator using rwdtinker and RubyWebDialogs.&lt;br /&gt;&lt;br /&gt;&lt;br /&gt;rwdziprwdwgutenberg (0.03)&lt;br /&gt;    rwdgutenberg application is a text file reader for RubyWebDialogs.&lt;br /&gt;&lt;br /&gt;rwdziprwdwhypernote (0.07, 0.04)&lt;br /&gt;    rwdziprwdwhypernote is a hierarchical note editor using rwdtinker&lt;br /&gt;    and RubyWebDialogs. Requires rwdtinker &gt;1.51&lt;br /&gt;&lt;br /&gt;rwdziprwdwmovies (0.90)&lt;br /&gt;    rwdziprwdwmovies is a DVD and Video database application using&lt;br /&gt;    rwdtinker and RubyWebDialogs. Requires rwdtinker &gt;1.51&lt;br /&gt;&lt;br /&gt;rwdziprwdwrefreshacpi (0.5)&lt;br /&gt;    rwdziprwdwrefreshacpi is a Linux log reading application using&lt;br /&gt;    rwdtinker and RubyWebDialogs. Requires rwdtinker &gt;1.51&lt;br /&gt;&lt;br /&gt;rwdziprwdwshell (0.96, 0.95)&lt;br /&gt;    rwdziprwdaschedule is a event schedule application using rwdtinker&lt;br /&gt;    and RubyWebDialogs. Requires rwdtinker &gt;1.51&lt;br /&gt;&lt;br /&gt;rwdziprwdwwords (0.02)&lt;br /&gt;    rwdwords is a Dictonary lookup tool using rwdtinker and&lt;br /&gt;    RubyWebDialogs. Requires rwdtinker &gt;1.56&lt;br /&gt;&lt;br /&gt;salted_login_generator (1.1.1, 1.1.0, 1.0.9, 1.0.8, 1.0.7, 1.0.6, 1.0.5, 1.0.4, 1.0.3, 1.0.2, 1.0.1)&lt;br /&gt;    [Rails] Login generator with salted passwords.&lt;br /&gt;&lt;br /&gt;schema_generator (1.0.2, 1.0.1, 1.0.0, 0.9.0, 0.2.0, 0.1.0)&lt;br /&gt;    The rails schema generator generates complete SQL schemas from a&lt;br /&gt;    collection of rails migrations.  It currently produces one schema&lt;br /&gt;    file each for MySQL, PostgreSQL, and SQLite.&lt;br /&gt;&lt;br /&gt;Schmock (0.9)&lt;br /&gt;    Simple mock objects&lt;br /&gt;&lt;br /&gt;Scratch (1.1, 1.0)&lt;br /&gt;    Excessively minimalist weblog.&lt;br /&gt;&lt;br /&gt;sds (0.3, 0.2)&lt;br /&gt;    SDS is a database access and O/R mapping library&lt;br /&gt;&lt;br /&gt;search_generator (0.5.1, 0.5, 0.4)&lt;br /&gt;    [Rails] Search generator.&lt;br /&gt;&lt;br /&gt;selenium (0.2.468)&lt;br /&gt;    Selenium is a test tool for web applications. Note that this is an&lt;br /&gt;    unofficial build of Selenium based on changeset 468 from the&lt;br /&gt;    Selenium subversion repository.&lt;br /&gt;&lt;br /&gt;sentry (0.3.1, 0.3, 0.2.9, 0.2.8)&lt;br /&gt;    Sentry provides painless encryption services with a wrapper around&lt;br /&gt;    some OpenSSL classes&lt;br /&gt;&lt;br /&gt;session (2.4.0, 2.1.9)&lt;br /&gt;    session&lt;br /&gt;&lt;br /&gt;shipping (1.3.0, 1.2.1, 1.2.0, 1.1.0, 1.0.0)&lt;br /&gt;    A general shipping module to find out the shipping prices via UPS or&lt;br /&gt;    FedEx.&lt;br /&gt;&lt;br /&gt;shorturl (0.8.2, 0.8.1, 0.8.0, 0.7.0, 0.6.0, 0.5.0, 0.4.0, 0.3.0, 0.2.1, 0.2.0, 0.1.0, 0.0.1)&lt;br /&gt;    Shortens URLs using services such as TinyURL and RubyURL&lt;br /&gt;&lt;br /&gt;silhouette (1.0.0)&lt;br /&gt;    A 2 stage profiler&lt;br /&gt;&lt;br /&gt;simple-rss (1.0.0)&lt;br /&gt;    A simple, flexible, extensible, and liberal RSS and Atom reader for&lt;br /&gt;    Ruby. It is designed to be backwards compatible with the standard&lt;br /&gt;    RSS parser, but will never do RSS generation.&lt;br /&gt;&lt;br /&gt;SimpleSearch (0.5.0)&lt;br /&gt;    SimpleSearch is a simple vector space text search engine.&lt;br /&gt;&lt;br /&gt;SimpleTrace (0.0.1)&lt;br /&gt;    This module implements a simple tracing/logging scheme&lt;br /&gt;&lt;br /&gt;site_generator (0.6, 0.5)&lt;br /&gt;    Generates a Rails site in conjunction with the rails_product gem.&lt;br /&gt;&lt;br /&gt;smagacor (0.0.1)&lt;br /&gt;    A collection of small games in ruby&lt;br /&gt;&lt;br /&gt;&lt;br /&gt;snmp (0.6.0, 0.5.1, 0.5.0, 0.4.1, 0.4.0, 0.3.0, 0.2.0, 0.1.0)&lt;br /&gt;    A Ruby implementation of SNMP (the Simple Network Management&lt;br /&gt;    Protocol).&lt;br /&gt;&lt;br /&gt;Soks (1.0.3, 1.0.2, 1.0.1, 1.0.0, 0.0.7, 0.0.6, 0.0.5, 0.0.4, 0.0.3, 0.0.2)&lt;br /&gt;    Yet another wiki.&lt;br /&gt;&lt;br /&gt;sparklines (0.2.6, 0.2.5, 0.2.4, 0.2.3, 0.2.2, 0.2.1)&lt;br /&gt;    Tiny graphs for concise data.&lt;br /&gt;&lt;br /&gt;sparklines_generator (0.2.2, 0.2.1)&lt;br /&gt;    Sparklines generator makes a Rails controller and helper for making&lt;br /&gt;    small graphs in your web pages. See examples at&lt;br /&gt;    http://nubyonrails.topfunky.com&lt;br /&gt;&lt;br /&gt;sql_dep_graph (1.0.0)&lt;br /&gt;    Graphs table dependencies based on usage from SQL logs&lt;br /&gt;&lt;br /&gt;SQLDependencyGrapher (1.0.0)&lt;br /&gt;    Graphs table dependencies based on usage from SQL logs&lt;br /&gt;&lt;br /&gt;sqliki (0.0.4, 0.0.3)&lt;br /&gt;    [Rails] SQL-based wiki generator.&lt;br /&gt;&lt;br /&gt;sqliki_generator (0.0.4, 0.0.2, 0.0.1)&lt;br /&gt;    [Rails] SQL-based wiki generator.&lt;br /&gt;&lt;br /&gt;sqlite (2.0.1, 2.0.0, 1.3.1, 1.3.0, 1.2.9.1, 1.2.0, 1.1.3, 1.1.2, 1.1.1, 1.1)&lt;br /&gt;    SQLite/Ruby is a module to allow Ruby scripts to interface with a&lt;br /&gt;    SQLite database. VERSIONS &gt;=2.0.0 ARE BETA RELEASES. THEY ARE&lt;br /&gt;    INTENDED FOR TESTING ONLY, AND SHOULD NOT BE CONSIDERED&lt;br /&gt;    PRODUCTION-WORTHY YET.&lt;br /&gt;&lt;br /&gt;sqlite-ruby (2.2.3, 2.2.2, 2.2.1, 2.2.0, 2.1.0, 2.0.3, 2.0.2)&lt;br /&gt;    SQLite/Ruby is a module to allow Ruby scripts to interface with a&lt;br /&gt;    SQLite database.&lt;br /&gt;&lt;br /&gt;sqlite3-ruby (1.1.0, 1.0.1, 1.0.0, 0.9.0, 0.6.0, 0.5.0)&lt;br /&gt;    SQLite3/Ruby is a module to allow Ruby scripts to interface with a&lt;br /&gt;    SQLite database.&lt;br /&gt;&lt;br /&gt;&lt;br /&gt;&lt;br /&gt;sstruct (1.0.1)&lt;br /&gt;    SuperStruct class: Best of Struct, OpenStruct, Array, Hash, etc.&lt;br /&gt;&lt;br /&gt;staticweb (0.2.0)&lt;br /&gt;    Staticweb is a command line static webpage generation tool&lt;br /&gt;&lt;br /&gt;statistics (2001.2.28)&lt;br /&gt;    module Math::Statistics provides common statistical functions&lt;br /&gt;&lt;br /&gt;stemmer (1.0.1, 1.0.0)&lt;br /&gt;    Word stemming algorithm(s)&lt;br /&gt;&lt;br /&gt;stemmer4r (0.6, 0.5, 0.4, 0.3, 0.2, 0.1)&lt;br /&gt;    Stemmer4r is a Ruby extension that wraps the snowball stemmer&lt;br /&gt;    library (libstemmer).&lt;br /&gt;&lt;br /&gt;stomp (1.0.1, 1.0.0)&lt;br /&gt;    Ruby client for the Stomp messaging protocol&lt;br /&gt;&lt;br /&gt;stream (0.5)&lt;br /&gt;    Stream - Extended External Iterators&lt;br /&gt;&lt;br /&gt;substitution_solver (0.5.1, 0.5.0)&lt;br /&gt;    Program for solving mono-alphabetic simple substitution ciphers, (as&lt;br /&gt;    in cryptoquotes), without word lengths.&lt;br /&gt;&lt;br /&gt;SwedishTV (0.0.3, 0.0.2)&lt;br /&gt;    Shows Swedish TV channel schedules in web browser.&lt;br /&gt;&lt;br /&gt;sweph4ruby (0.0.1)&lt;br /&gt;    An astrology library&lt;br /&gt;&lt;br /&gt;swin (2004.03.14)&lt;br /&gt;    Swin is a Ruby native extension that interfaces to the Win32&lt;br /&gt;    graphics API&lt;br /&gt;&lt;br /&gt;switchtower (0.10.0, 0.9.0)&lt;br /&gt;    SwitchTower is a framework and utility for executing commands in&lt;br /&gt;    parallel     on multiple remote machines, via SSH. The primary goal&lt;br /&gt;    is to simplify and     automate the deployment of web applications.&lt;br /&gt;&lt;br /&gt;&lt;br /&gt;sws (0.3, 0.2.1)&lt;br /&gt;    SWS is a sophisticated web development library in spirit of Apple&lt;br /&gt;    WebObjects&lt;br /&gt;&lt;br /&gt;Syndic8-Ruby (0.2.0)&lt;br /&gt;    Syndic8 (http://www.syndic8.com/) bindings for Ruby.&lt;br /&gt;&lt;br /&gt;syndication (0.5.0, 0.4.0)&lt;br /&gt;    A web syndication parser for Atom and RSS with a uniform API&lt;br /&gt;&lt;br /&gt;syntax (1.0.0, 0.7.0, 0.5.0)&lt;br /&gt;    Syntax is Ruby library for performing simple syntax highlighting.&lt;br /&gt;&lt;br /&gt;syntaxi (0.5.0)&lt;br /&gt;    Syntaxi formats code blocks in text (line number, line wrap, syntax&lt;br /&gt;    color)&lt;br /&gt;&lt;br /&gt;table (0.1.1)&lt;br /&gt;    Rails Table Generator&lt;br /&gt;&lt;br /&gt;table_generator (0.1.2, 0.1.1)&lt;br /&gt;    Rails Table Generator&lt;br /&gt;&lt;br /&gt;tagtools (0.0.3, 0.0.2, 0.0.1)&lt;br /&gt;    Folksonomy system for Rails.&lt;br /&gt;&lt;br /&gt;tar2rubyscript (0.4.7, 0.4.6, 0.4.5)&lt;br /&gt;    A Tool for Distributing Ruby Applications&lt;br /&gt;&lt;br /&gt;Technorati-Ruby (0.1.0)&lt;br /&gt;    Technorati(http://technorati.com/) bindings for Ruby.&lt;br /&gt;&lt;br /&gt;TeleAuth (0.5)&lt;br /&gt;    Ruby library for the TeleAuth authentication system. Requires a&lt;br /&gt;    TeleAuth API key.&lt;br /&gt;&lt;br /&gt;term-ansicolor (1.0.2, 1.0.1, 1.0.0, 0.0.4)&lt;br /&gt;    Ruby library that colors strings using ANSI escape sequences&lt;br /&gt;&lt;br /&gt;termios (0.9.4)&lt;br /&gt;    Termios module are simple wrapper for termios(3). It can be included&lt;br /&gt;                                                                                                          into IO-family classes and can extend IO-family objects. In&lt;br /&gt;    addition, the methods can use as module function.&lt;br /&gt;&lt;br /&gt;test-unit-mock (0.30)&lt;br /&gt;    Test::Unit::Mock is a class for conveniently building mock objects&lt;br /&gt;    in Test::Unit test cases.&lt;br /&gt;&lt;br /&gt;testunitxml (0.1.3)&lt;br /&gt;    Unit test suite for XML documents&lt;br /&gt;&lt;br /&gt;tex-hyphen (0.5.0, 0.4.0)&lt;br /&gt;    Hyphenates a word according to a TeX pattern file.&lt;br /&gt;&lt;br /&gt;text-format (1.0.0)&lt;br /&gt;    Text::Format formats fixed-width text nicely.&lt;br /&gt;&lt;br /&gt;text-highlight (1.0.2)&lt;br /&gt;    A Ruby module for highlighting text, using ANSI escape sequences or&lt;br /&gt;    HTML.&lt;br /&gt;&lt;br /&gt;text-hyphen (1.0.0)&lt;br /&gt;    Multilingual word hyphenation according to modified TeX hyphenation&lt;br /&gt;    pattern files.&lt;br /&gt;&lt;br /&gt;text-reform (0.2.0)&lt;br /&gt;    Text::Reform reformats text according to formatting pictures.&lt;br /&gt;&lt;br /&gt;textamerica (0.1)&lt;br /&gt;    A Ruby API for interacting with TextAmerica.com&lt;br /&gt;&lt;br /&gt;theme_generator (1.3.0, 1.2.2, 1.2.1, 1.2.0, 1.1.1, 1.1.0)&lt;br /&gt;    [Rails] Theme generator adds support for themes into Rails&lt;br /&gt;    applications&lt;br /&gt;&lt;br /&gt;tidy (1.1.2, 1.1.1, 1.1.0, 1.0.1, 1.0.0)&lt;br /&gt;    Ruby interface to HTML Tidy Library Project&lt;br /&gt;&lt;br /&gt;tkregreplace (0.1.1, 0.1.0)&lt;br /&gt;    TK program which visualizes and caries out regular expression&lt;br /&gt;    matches and or replacements on text files&lt;br /&gt;&lt;br /&gt;traits (0.9.0, 0.8.1, 0.8.0)&lt;br /&gt;    traits&lt;br /&gt;&lt;br /&gt;transaction-simple (1.3.0, 1.2.0)&lt;br /&gt;    Simple object transaction support for Ruby.&lt;br /&gt;&lt;br /&gt;tree (0.2.1)&lt;br /&gt;    Ruby implementation of the Tree data structure.&lt;br /&gt;&lt;br /&gt;trestle_generator (1.0.1, 1.0.0)&lt;br /&gt;    [Rails] A drop-in replacement for the scaffold generator that&lt;br /&gt;    produces production-ready controllers that are safe from&lt;br /&gt;    state-changing HTTP GET requests and that have streamlined URLs.&lt;br /&gt;&lt;br /&gt;trie (0.0.1)&lt;br /&gt;    Implemention of a trie data structure&lt;br /&gt;&lt;br /&gt;trimurti (0.1)&lt;br /&gt;    Applications that assemble themselves, plugins&lt;br /&gt;&lt;br /&gt;tRuTag (0.5.0)&lt;br /&gt;    A tag aggregator (taggregator) for personal or web use.&lt;br /&gt;&lt;br /&gt;tsql_shparser (0.0.1)&lt;br /&gt;    tsql_shparser is a Shallow Parser for t-SQL (which is the procedural&lt;br /&gt;    language for  MS SQL Server 2000).&lt;br /&gt;&lt;br /&gt;ttk (0.2.1, 0.2.0, 0.1.580, 0.1.579, 0.1.576)&lt;br /&gt;    TTK is an extensible framework for dynamic testing.&lt;br /&gt;&lt;br /&gt;turing (0.0.9)&lt;br /&gt;    Another implementation of captcha (http://captcha.net/)&lt;br /&gt;&lt;br /&gt;tzinfo (0.1.1, 0.1.0, 0.0.4, 0.0.3, 0.0.2, 0.0.1)&lt;br /&gt;    Daylight-savings aware timezone library&lt;br /&gt;&lt;br /&gt;uformatparser (1.0.1, 1.0.0)&lt;br /&gt;    Microformat parser for extracting microcontent from (X)HTML&lt;br /&gt;&lt;br /&gt;unicode (0.1)&lt;br /&gt;    Unicode normalization library.&lt;br /&gt;&lt;br /&gt;units (1.0.1, 1.0.0)&lt;br /&gt;    A general way to add units and conversion ability to numbers in&lt;br /&gt;    Ruby.&lt;br /&gt;&lt;br /&gt;urirequire (0.1.0)&lt;br /&gt;    urirequire hijacks Kernel.require to download and eval Ruby code&lt;br /&gt;    somewhere else on the internets.&lt;br /&gt;&lt;br /&gt;usage (0.0.4, 0.0.3)&lt;br /&gt;    This module implements a simple no thought command line option&lt;br /&gt;    parser&lt;br /&gt;&lt;br /&gt;Usage (0.0.2, 0.0.1)&lt;br /&gt;    This module implements a simple no thought command line option&lt;br /&gt;    parser&lt;br /&gt;&lt;br /&gt;uscommerce (0.1.0)&lt;br /&gt;    UsCommerce contains a few handy methods for handling business&lt;br /&gt;    functions specific to the United States.&lt;br /&gt;&lt;br /&gt;use (1.1.0, 1.0.0)&lt;br /&gt;    Selectively mixin methods from a given module&lt;br /&gt;&lt;br /&gt;uuid (1.0.0)&lt;br /&gt;    UUID generator&lt;br /&gt;&lt;br /&gt;uuidtools (0.1.4, 0.1.3, 0.1.2, 0.1.1, 0.1.0)&lt;br /&gt;    Generation of UUIDs.&lt;br /&gt;&lt;br /&gt;vcs (0.4.1, 0.4.0, 0.3.0, 0.2.148, 0.1)&lt;br /&gt;    A wrapper over Version Control Systems&lt;br /&gt;&lt;br /&gt;vim-ruby (2005.10.07, 2005.10.05, 2005.09.15, 2004.09.20)&lt;br /&gt;    Ruby configuration files for Vim.  Run 'vim-ruby-install.rb' to&lt;br /&gt;    complete installation.&lt;br /&gt;&lt;br /&gt;&lt;br /&gt;VRTools (0.0.1)&lt;br /&gt;    This module implements extensions to the VRuby/Swin libraries&lt;br /&gt;&lt;br /&gt;vruby (2004.08.07)&lt;br /&gt;    VRuby is a set of vr* series of ruby scripts which wrap swin.&lt;br /&gt;&lt;br /&gt;w3mrefe (1.0.0)&lt;br /&gt;    an interface to the on-line ruby reference manuals by w3m and refe.&lt;br /&gt;&lt;br /&gt;watir (1.4.1)&lt;br /&gt;    Automated testing tool for web applications.&lt;br /&gt;&lt;br /&gt;webgen (0.3.8, 0.3.6, 0.3.5, 0.3.4, 0.3.3, 0.3.2, 0.3.1, 0.3.0, 0.2.0, 0.1.0)&lt;br /&gt;    Webgen is a templated based static website generator.&lt;br /&gt;&lt;br /&gt;webrick-webdav (1.0)&lt;br /&gt;    WebDAV handler for WEBrick, Ruby's HTTP toolkit.&lt;br /&gt;&lt;br /&gt;wee (0.10.0, 0.9.1, 0.9.0, 0.8.0, 0.7.0, 0.6.0, 0.5.0, 0.4.0, 0.3.1, 0.1.0)&lt;br /&gt;    Wee is a framework for building highly dynamic web applications.&lt;br /&gt;&lt;br /&gt;weft-qda (0.9.8, 0.9.6)&lt;br /&gt;    GUI Qualitative Data Analysis Tool.&lt;br /&gt;&lt;br /&gt;wet-winobj (0.1)&lt;br /&gt;    Ruby library for Win32 objects&lt;br /&gt;&lt;br /&gt;Wiki2Go (1.17.1, 1.17.0, 1.16.1, 1.16.0, 1.15.1, 1.15.0, 1.14.4, 1.14.3, 1.14.1, 1.14.0)&lt;br /&gt;    Wiki2Go is a Ruby Wiki&lt;br /&gt;&lt;br /&gt;win32-sapi (0.1.3, 0.1.2)&lt;br /&gt;    An interface to the MS SAPI (Sound API) library.&lt;br /&gt;&lt;br /&gt;wxrubylayouts (0.0.3, 0.0.2, 0.0.1)&lt;br /&gt;    wxrubylayouts is a library of layout managers for wxRuby&lt;br /&gt;&lt;br /&gt;x10-cm17a (1.0.1, 1.0.0, 0.9.0)&lt;br /&gt;    Ruby based X10 CM17A Firecracker Controller&lt;br /&gt;&lt;br /&gt;xampl (0.1.0)&lt;br /&gt;    xampl&lt;br /&gt;&lt;br /&gt;xampl-generator (0.1.0)&lt;br /&gt;    xampl code generator&lt;br /&gt;&lt;br /&gt;XDCC-Fetch (1.409, 1.386)&lt;br /&gt;    XDCC-Fetch, written entirely in Ruby, is an intuitive, no-nonsense&lt;br /&gt;    tool for searching, collecting and downloading XDCC  announcements&lt;br /&gt;    within IRC  channels. XDCC-Fetch is released under the BSD license&lt;br /&gt;    and available for free.&lt;br /&gt;&lt;br /&gt;xforge (0.4.0, 0.3.5, 0.3.4, 0.3.3, 0.3.2, 0.3.1, 0.2.1, 0.2.0, 0.1.9, 0.1.8, 0.1.7, 0.1.6, 0.1.5, 0.1.4, 0.1.3, 0.1.2, 0.1.1, 0.1)&lt;br /&gt;    Ruby based make-like utility.&lt;br /&gt;&lt;br /&gt;xhtmldiff (1.0.0)&lt;br /&gt;    XHTMLDiff is a tool and library for taking valid XHTML documents as&lt;br /&gt;    input, and generating redlined valid XHTML text highlighting the&lt;br /&gt;    changes between them as output.&lt;br /&gt;&lt;br /&gt;xiacc (0.1)&lt;br /&gt;    A Compiler-Compiler&lt;br /&gt;&lt;br /&gt;xml-mapping (0.8.1, 0.8)&lt;br /&gt;    An easy to use, extensible library for mapping Ruby objects to XML&lt;br /&gt;    and back. Includes an XPath interpreter.&lt;br /&gt;&lt;br /&gt;xml-simple (1.0.7)&lt;br /&gt;    A very simple API for XML processing.&lt;br /&gt;&lt;br /&gt;xmlelements (0.1.2, 0.1.1)&lt;br /&gt;    Strange Xml-Api.&lt;br /&gt;&lt;br /&gt;xmlresume2x (0.2.1, 0.2.0)&lt;br /&gt;    Converts an xml resume to various output formats&lt;br /&gt;&lt;br /&gt;xmltv2html (0.5.5, 0.5.4, 0.5.3)&lt;br /&gt;    xmltv2html generates a HTML page from the output of XMLTV.&lt;br /&gt;&lt;br /&gt;XMMS-Ruby (0.1.2)&lt;br /&gt;    XMMS bindings for Ruby.&lt;br /&gt;&lt;br /&gt;yax (0.1)&lt;br /&gt;    YAX: Yet Another eXpect (chock-full of Ruby goodness)&lt;br /&gt;&lt;br /&gt;yip (0.8.2)&lt;br /&gt;    Adds interpolation to YAML; primarily for use in configuration files&lt;br /&gt;&lt;br /&gt;ZenHacks (1.0.1, 1.0.0)&lt;br /&gt;    Tools and toys of mine that don't have a better home.&lt;br /&gt;&lt;/code&gt;&lt;br /&gt;&lt;br /&gt;To install rails&lt;br /&gt;&lt;code&gt;&lt;br /&gt;gem install rails&lt;/code&gt;&lt;div class="blogger-post-footer"&gt;&lt;img width='1' height='1' src='https://blogger.googleusercontent.com/tracker/21184031-113781537541847414?l=railsruby.blogspot.com' alt='' /&gt;&lt;/div&gt;</content><link rel='replies' type='application/atom+xml' href='http://railsruby.blogspot.com/feeds/113781537541847414/comments/default' title='Post Comments'/><link rel='replies' type='text/html' href='http://www.blogger.com/comment.g?blogID=21184031&amp;postID=113781537541847414' title='3 Comments'/><link rel='edit' type='application/atom+xml' href='http://www.blogger.com/feeds/21184031/posts/default/113781537541847414'/><link rel='self' type='application/atom+xml' href='http://www.blogger.com/feeds/21184031/posts/default/113781537541847414'/><link rel='alternate' type='text/html' href='http://railsruby.blogspot.com/2006/01/ruby-on-rails-update.html' title='Ruby on Rails Update'/><author><name>Frank</name><email>noreply@blogger.com</email><gd:image rel='http://schemas.google.com/g/2005#thumbnail' width='16' height='16' src='http://img2.blogblog.com/img/b16-rounded.gif'/></author><thr:total>3</thr:total></entry><entry><id>tag:blogger.com,1999:blog-21184031.post-113781226422590492</id><published>2006-01-20T18:55:00.000-08:00</published><updated>2006-01-20T18:57:44.233-08:00</updated><title type='text'>How to get a collection?</title><content type='html'>The following code will get a collection from the database.&lt;br /&gt;&lt;code&gt;def edit&lt;br /&gt;                @site = Site.find(@params["id"])&lt;br /&gt;                @tags = Tag.find_all&lt;br /&gt;        end&lt;br /&gt;&lt;/code&gt;&lt;div class="blogger-post-footer"&gt;&lt;img width='1' height='1' src='https://blogger.googleusercontent.com/tracker/21184031-113781226422590492?l=railsruby.blogspot.com' alt='' /&gt;&lt;/div&gt;</content><link rel='replies' type='application/atom+xml' href='http://railsruby.blogspot.com/feeds/113781226422590492/comments/default' title='Post Comments'/><link rel='replies' type='text/html' href='http://www.blogger.com/comment.g?blogID=21184031&amp;postID=113781226422590492' title='0 Comments'/><link rel='edit' type='application/atom+xml' href='http://www.blogger.com/feeds/21184031/posts/default/113781226422590492'/><link rel='self' type='application/atom+xml' href='http://www.blogger.com/feeds/21184031/posts/default/113781226422590492'/><link rel='alternate' type='text/html' href='http://railsruby.blogspot.com/2006/01/how-to-get-collection.html' title='How to get a collection?'/><author><name>Frank</name><email>noreply@blogger.com</email><gd:image rel='http://schemas.google.com/g/2005#thumbnail' width='16' height='16' src='http://img2.blogblog.com/img/b16-rounded.gif'/></author><thr:total>0</thr:total></entry><entry><id>tag:blogger.com,1999:blog-21184031.post-113773934147255876</id><published>2006-01-19T22:41:00.000-08:00</published><updated>2006-01-19T22:52:32.580-08:00</updated><title type='text'>Cannot instantiate constant</title><content type='html'>If you get this error then most likely the reason is that you don't have the model class created.&lt;br /&gt;&lt;br /&gt;Create it with a command like:&lt;br /&gt;&lt;code&gt;ruby script/generate model Site&lt;/code&gt;&lt;div class="blogger-post-footer"&gt;&lt;img width='1' height='1' src='https://blogger.googleusercontent.com/tracker/21184031-113773934147255876?l=railsruby.blogspot.com' alt='' /&gt;&lt;/div&gt;</content><link rel='replies' type='application/atom+xml' href='http://railsruby.blogspot.com/feeds/113773934147255876/comments/default' title='Post Comments'/><link rel='replies' type='text/html' href='http://www.blogger.com/comment.g?blogID=21184031&amp;postID=113773934147255876' title='0 Comments'/><link rel='edit' type='application/atom+xml' href='http://www.blogger.com/feeds/21184031/posts/default/113773934147255876'/><link rel='self' type='application/atom+xml' href='http://www.blogger.com/feeds/21184031/posts/default/113773934147255876'/><link rel='alternate' type='text/html' href='http://railsruby.blogspot.com/2006/01/cannot-instantiate-constant.html' title='Cannot instantiate constant'/><author><name>Frank</name><email>noreply@blogger.com</email><gd:image rel='http://schemas.google.com/g/2005#thumbnail' width='16' height='16' src='http://img2.blogblog.com/img/b16-rounded.gif'/></author><thr:total>0</thr:total></entry><entry><id>tag:blogger.com,1999:blog-21184031.post-113773814469545353</id><published>2006-01-19T22:19:00.000-08:00</published><updated>2006-01-19T22:43:17.883-08:00</updated><title type='text'>The single-table inheritance mechanism failed to locate the subclass</title><content type='html'>Today I was working  on creating my first Ruby on Rails application when I ran into this error:&lt;br /&gt;&lt;br /&gt;&lt;pre&gt;&lt;span style="font-weight: bold;"&gt;The single-table inheritance mechanism failed to locate the subclass:&lt;br /&gt;'Community Blog'. This error is raised because the column 'type' is reserved for storing the class in case of inheritance. Please rename this column if you didn't intend it to be used for storing the inheritance class or overwrite Site.inheritance_column to use another column for that information.&lt;/span&gt;&lt;br /&gt;&lt;br /&gt;&lt;br /&gt;&lt;/pre&gt;Apparently the reason for the error is specified within the error. The error is being caused because one of my columns in the table was named type. Now I had two options, either to rename the column or to "overwrite Site.inheritance_column to use another column for that information"&lt;br /&gt;&lt;br /&gt; You can guess what I did. That's right, I simply renamed my column.&lt;br /&gt;&lt;br /&gt;Frank&lt;div class="blogger-post-footer"&gt;&lt;img width='1' height='1' src='https://blogger.googleusercontent.com/tracker/21184031-113773814469545353?l=railsruby.blogspot.com' alt='' /&gt;&lt;/div&gt;</content><link rel='replies' type='application/atom+xml' href='http://railsruby.blogspot.com/feeds/113773814469545353/comments/default' title='Post Comments'/><link rel='replies' type='text/html' href='http://www.blogger.com/comment.g?blogID=21184031&amp;postID=113773814469545353' title='1 Comments'/><link rel='edit' type='application/atom+xml' href='http://www.blogger.com/feeds/21184031/posts/default/113773814469545353'/><link rel='self' type='application/atom+xml' href='http://www.blogger.com/feeds/21184031/posts/default/113773814469545353'/><link rel='alternate' type='text/html' href='http://railsruby.blogspot.com/2006/01/single-table-inheritance-mechanism.html' title='The single-table inheritance mechanism failed to locate the subclass'/><author><name>Frank</name><email>noreply@blogger.com</email><gd:image rel='http://schemas.google.com/g/2005#thumbnail' width='16' height='16' src='http://img2.blogblog.com/img/b16-rounded.gif'/></author><thr:total>1</thr:total></entry></feed>
