<?xml version="1.0" encoding="UTF-8" ?>
<?xml-stylesheet type="text/xsl" href="http://blogs.msdn.com/utility/FeedStylesheets/rss.xsl" media="screen"?><rss version="2.0" xmlns:dc="http://purl.org/dc/elements/1.1/" xmlns:slash="http://purl.org/rss/1.0/modules/slash/" xmlns:wfw="http://wellformedweb.org/CommentAPI/"><channel><title>basketweaving for the mind : rubyonrails</title><link>http://blogs.msdn.com/nickhodge/archive/tags/rubyonrails/default.aspx</link><description>Tags: rubyonrails</description><dc:language>en-US</dc:language><generator>CommunityServer 2.1 SP1 (Build: 61025.2)</generator><item><title>IIS7.x, Server Farms and Ruby</title><link>http://blogs.msdn.com/nickhodge/archive/2009/02/24/iis7-5-server-farms-and-ruby.aspx</link><pubDate>Tue, 24 Feb 2009 12:20:00 GMT</pubDate><guid isPermaLink="false">91d46819-8472-40ad-a661-2c78acb4018c:9442377</guid><dc:creator>nhodge</dc:creator><slash:comments>4</slash:comments><comments>http://blogs.msdn.com/nickhodge/comments/9442377.aspx</comments><wfw:commentRss>http://blogs.msdn.com/nickhodge/commentrss.aspx?PostID=9442377</wfw:commentRss><wfw:comment>http://blogs.msdn.com/nickhodge/rsscomments.aspx?PostID=9442377</wfw:comment><description>&lt;P&gt;(Caution: Ruby application names are as prolific, esoteric and funny as Microsoft code names) &lt;/P&gt;
&lt;P&gt;The previous post (broadly) demonstrated how to use a combination of URL Rewrite and FastCGI to put a &lt;A href="http://blogs.msdn.com/nickhodge/archive/2009/02/23/windows-7-iis-7-5-and-ruby-on-rails.aspx" mce_href="http://blogs.msdn.com/nickhodge/archive/2009/02/23/windows-7-iis-7-5-and-ruby-on-rails.aspx"&gt;Ruby on Rails application on IIS7.5&lt;/A&gt;.&lt;/P&gt;
&lt;P&gt;As &lt;A href="http://rubyonrails.org/" mce_href="http://rubyonrails.org/"&gt;Rails&lt;/A&gt;, &lt;A href="http://www.merbivore.com/" mce_href="http://www.merbivore.com/"&gt;Merb&lt;/A&gt; (&lt;EM&gt;which I am reliably informed is what all the cool kids use today&lt;/EM&gt;) and &lt;A href="http://www.sinatrarb.com/" mce_href="http://www.sinatrarb.com/"&gt;Sinatra&lt;/A&gt; &lt;/P&gt;
&lt;P&gt;Another more common method of deploying Rails applications is behind a small web server such &lt;A href="http://mongrel.rubyforge.org/" mce_href="http://mongrel.rubyforge.org/"&gt;mongrel&lt;/A&gt;, &lt;A href="http://code.macournoyer.com/thin/" mce_href="http://code.macournoyer.com/thin/"&gt;thin&lt;/A&gt; or whilst development ruby’s inbuilt &lt;A href="http://www.webrick.org/" mce_href="http://www.webrick.org/"&gt;WEBrick&lt;/A&gt;. These servers are attached to one instance of the ruby application with a front-end web server &lt;A href="http://en.wikipedia.org/wiki/Reverse_proxy" mce_href="http://en.wikipedia.org/wiki/Reverse_proxy"&gt;acting as the reverse proxy server&lt;/A&gt;. This server forwards requests from the outside world to one of the instances of your ruby application; and ‘proxies’ the response back to the browser on the client.&lt;/P&gt;
&lt;P&gt;Using an reverse proxy server architecture provides various goodness: easy instance creation, simple scaling and relatively easy deployment. If you get the configuration right.&lt;/P&gt;
&lt;P&gt;To deploy a reverse proxy server with IIS previously required third party ISAPI such as &lt;A href="http://www.isapirewrite.com/" mce_href="http://www.isapirewrite.com/"&gt;ISAPIRewrite&lt;/A&gt;.&lt;/P&gt;
&lt;P&gt;As complex deployments are becoming more common, Microsoft has released the &lt;A href="http://www.iis.net/downloads/default.aspx?tabid=34&amp;amp;g=6&amp;amp;i=1712" mce_href="http://www.iis.net/downloads/default.aspx?tabid=34&amp;amp;g=6&amp;amp;i=1712"&gt;Microsoft Application Request Routing Version 1 for IIS 7 (get it here)&lt;/A&gt;. Note that the server also requires &lt;A href="http://www.iis.net/extensions/URLRewrite" mce_href="http://www.iis.net/extensions/URLRewrite"&gt;URL Rewrite&lt;/A&gt;.&lt;/P&gt;
&lt;P&gt;The following is my simple setup.&lt;/P&gt;
&lt;H3&gt;How to Setup&lt;/H3&gt;
&lt;P&gt;As I have &lt;EM&gt;mongrel&lt;/EM&gt; installed on my development machine, and am experimenting with &lt;EM&gt;sinatra&lt;/EM&gt;: mongrel is chosen as the default server.&lt;/P&gt;
&lt;P&gt;With a simple batch script, I launch the instances of my simple application. The ruby application is &lt;STRONG&gt;hi.rb&lt;/STRONG&gt;. In this instance, ruby.exe is in my PATH. The '-p 4567' tells Sinatra and Mongrel to use port 4567 as the listening port. There are mechanisms to make these services. This machine is development only, so I’ll leave that alone&lt;/P&gt;&lt;PRE&gt;@ECHO OFF
ruby.exe hi.rb -p 4567&lt;/PRE&gt;
&lt;P&gt;Install &lt;A href="http://www.iis.net/downloads/default.aspx?tabid=34&amp;amp;g=6&amp;amp;i=1712" mce_href="http://www.iis.net/downloads/default.aspx?tabid=34&amp;amp;g=6&amp;amp;i=1712"&gt;Microsoft Application Request Routing Version 1 for IIS 7&lt;/A&gt;. Note that the server also requires &lt;A href="http://www.iis.net/extensions/URLRewrite" mce_href="http://www.iis.net/extensions/URLRewrite"&gt;URL Rewrite&lt;/A&gt;.&lt;/P&gt;
&lt;P&gt;Launch the Internet Information Services (IIS) Manager&lt;/P&gt;
&lt;P&gt;&lt;STRONG&gt;Create a Server Farm&lt;/STRONG&gt;. A farm is a collection of servers (IIS7 and others) the server is going to farm the incoming requests to&lt;/P&gt;
&lt;P&gt;&lt;A href="http://www.flickr.com/photos/nickhodge/3304987789/" mce_href="http://www.flickr.com/photos/nickhodge/3304987789/"&gt;&lt;IMG style="BORDER-RIGHT-WIDTH: 0px; DISPLAY: inline; BORDER-TOP-WIDTH: 0px; BORDER-BOTTOM-WIDTH: 0px; BORDER-LEFT-WIDTH: 0px" title=ServerFarm-1 border=0 alt=ServerFarm-1 src="http://blogs.msdn.com/blogfiles/nickhodge/WindowsLiveWriter/IIS7.5ServerFarmsandRuby_CB02/ServerFarm-1_6bb47f88-b8c9-48b3-b226-feb5605e548f.jpg" width=312 height=288 mce_src="http://blogs.msdn.com/blogfiles/nickhodge/WindowsLiveWriter/IIS7.5ServerFarmsandRuby_CB02/ServerFarm-1_6bb47f88-b8c9-48b3-b226-feb5605e548f.jpg"&gt;&lt;/A&gt;&lt;/P&gt;
&lt;P&gt;Provide a name for your farm&lt;/P&gt;
&lt;P&gt;&lt;A href="http://www.flickr.com/photos/nickhodge/3304990693/" mce_href="http://www.flickr.com/photos/nickhodge/3304990693/"&gt;&lt;IMG style="BORDER-RIGHT-WIDTH: 0px; DISPLAY: inline; BORDER-TOP-WIDTH: 0px; BORDER-BOTTOM-WIDTH: 0px; BORDER-LEFT-WIDTH: 0px" title=ServerFarm-2 border=0 alt=ServerFarm-2 src="http://blogs.msdn.com/blogfiles/nickhodge/WindowsLiveWriter/IIS7.5ServerFarmsandRuby_CB02/ServerFarm-2_57081937-13d9-4ed5-9133-8f69935ec468.png" width=307 height=217 mce_src="http://blogs.msdn.com/blogfiles/nickhodge/WindowsLiveWriter/IIS7.5ServerFarmsandRuby_CB02/ServerFarm-2_57081937-13d9-4ed5-9133-8f69935ec468.png"&gt;&lt;/A&gt;&lt;/P&gt;
&lt;P&gt;On my test server, I wish to use multiple ports on the same server. That is, more than one application instance bound to separate ports.&lt;/P&gt;
&lt;P&gt;Type the address (without the port) of &lt;STRONG&gt;an application instance&lt;/STRONG&gt;. After clicking “&lt;EM&gt;Add&lt;/EM&gt;”, click on the entry in the server address, and click on the “&lt;EM&gt;Advanced settings…&lt;/EM&gt;”. Sinatra’s default port for an instance is :4567. As extra instances are added; add them to the farm with the appropriate port. &lt;/P&gt;
&lt;BLOCKQUOTE&gt;
&lt;P&gt;&lt;STRONG&gt;NOTE 1&lt;/STRONG&gt;: The UI when adding a httpPort for each address is a little weird. What I found working is to type the Server address:, expand ‘applicationRequestRoutin’, enter the port (if not the default port 80), click add. Then re-click on the entry in the list, and re-enter the httpPort (as it seems to revert back to :80)&lt;/P&gt;
&lt;P&gt;&lt;STRONG&gt;NOTE 2&lt;/STRONG&gt;: Each server address must be unique in the Server farm. Therefore, if you have multiple instances of the same application, although on separate ports, on the same server: you will need to do some work on the DNS or &lt;STRONG&gt;hosts&lt;/STRONG&gt; file. On my test machine, I have created aliases in my machine’s &lt;STRONG&gt;hosts&lt;/STRONG&gt; file to the same server (run Notepad.exe as administrator!):&lt;/P&gt;&lt;PRE&gt;%windir%\System32\drivers\etc\hosts
127.0.0.1&amp;nbsp;&amp;nbsp;&amp;nbsp; localhost localhost-1 localhost-2&lt;/PRE&gt;&lt;/BLOCKQUOTE&gt;
&lt;P&gt;Server farms can also exist across physical IP addresses: this may be different IIS instances, different virtual machines or different physical machines.&lt;/P&gt;
&lt;P&gt;&lt;A href="http://www.flickr.com/photos/nickhodge/3304998577/" mce_href="http://www.flickr.com/photos/nickhodge/3304998577/"&gt;&lt;IMG style="BORDER-RIGHT-WIDTH: 0px; DISPLAY: inline; BORDER-TOP-WIDTH: 0px; BORDER-BOTTOM-WIDTH: 0px; BORDER-LEFT-WIDTH: 0px" title=ServerFarm-3 border=0 alt=ServerFarm-3 src="http://blogs.msdn.com/blogfiles/nickhodge/WindowsLiveWriter/IIS7.5ServerFarmsandRuby_CB02/ServerFarm-3_c5d07261-9078-4ff3-a486-aeb3c615829d.png" width=338 height=242 mce_src="http://blogs.msdn.com/blogfiles/nickhodge/WindowsLiveWriter/IIS7.5ServerFarmsandRuby_CB02/ServerFarm-3_c5d07261-9078-4ff3-a486-aeb3c615829d.png"&gt;&lt;/A&gt;&lt;/P&gt;
&lt;P&gt;To match the incoming requests with a particular farm, a &lt;STRONG&gt;URL Rewrite Rule&lt;/STRONG&gt; is automatically created.&lt;/P&gt;
&lt;P&gt;&lt;A href="http://www.flickr.com/photos/nickhodge/3305858896/" mce_href="http://www.flickr.com/photos/nickhodge/3305858896/"&gt;&lt;IMG style="BORDER-RIGHT-WIDTH: 0px; DISPLAY: inline; BORDER-TOP-WIDTH: 0px; BORDER-BOTTOM-WIDTH: 0px; BORDER-LEFT-WIDTH: 0px" title=ServerFarm-4 border=0 alt=ServerFarm-4 src="http://blogs.msdn.com/blogfiles/nickhodge/WindowsLiveWriter/IIS7.5ServerFarmsandRuby_CB02/ServerFarm-4_b8ea6fa1-883d-4148-9107-d92582ead7a3.png" width=365 height=136 mce_src="http://blogs.msdn.com/blogfiles/nickhodge/WindowsLiveWriter/IIS7.5ServerFarmsandRuby_CB02/ServerFarm-4_b8ea6fa1-883d-4148-9107-d92582ead7a3.png"&gt;&lt;/A&gt;&lt;/P&gt;
&lt;P mce_keep="true"&gt;&amp;nbsp;&lt;/P&gt;
&lt;P mce_keep="true"&gt;&amp;nbsp;&lt;/P&gt;
&lt;P mce_keep="true"&gt;&amp;nbsp;&lt;/P&gt;
&lt;P&gt;The below rule will matching any incoming request (which you may wish to tweak) to the server farm. Note the &lt;EM&gt;Action properties:&lt;/EM&gt; pointing to a particular farm, passing on the &lt;EM&gt;{R:0},&lt;/EM&gt; or the pattern matched in the &lt;EM&gt;Match URL&lt;/EM&gt;:&lt;/P&gt;
&lt;P&gt;&lt;A href="http://www.flickr.com/photos/nickhodge/3305037127/" mce_href="http://www.flickr.com/photos/nickhodge/3305037127/"&gt;&lt;IMG style="BORDER-RIGHT-WIDTH: 0px; DISPLAY: inline; BORDER-TOP-WIDTH: 0px; BORDER-BOTTOM-WIDTH: 0px; BORDER-LEFT-WIDTH: 0px" title=ServerFarm-5 border=0 alt=ServerFarm-5 src="http://blogs.msdn.com/blogfiles/nickhodge/WindowsLiveWriter/IIS7.5ServerFarmsandRuby_CB02/ServerFarm-5_1af8dc93-7be4-458e-943b-e470e002b8b5.png" width=474 height=404 mce_src="http://blogs.msdn.com/blogfiles/nickhodge/WindowsLiveWriter/IIS7.5ServerFarmsandRuby_CB02/ServerFarm-5_1af8dc93-7be4-458e-943b-e470e002b8b5.png"&gt;&lt;/A&gt;&lt;/P&gt;
&lt;H3&gt;The .config file&lt;/H3&gt;
&lt;P&gt;The configuration (on my machine) looks something like:&lt;/P&gt;&lt;PRE&gt;%windir%\System32\inetsrv\config\applicationHost.config

&amp;lt;webfarms&amp;gt; 
&lt;BR&gt;&amp;nbsp;&amp;nbsp;&amp;nbsp; &amp;lt;webfarm enabled="true" name="localhost"&amp;gt; &lt;BR&gt;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp; &amp;lt;server enabled="true" address="localhost-1"&amp;gt;
&lt;BR&gt;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp; &amp;lt;applicationrequestrouting httpport="4567" /&amp;gt;
&lt;BR&gt;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp; &amp;lt;/server&amp;gt;
&lt;BR&gt;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp; &amp;lt;server enabled="true" address="localhost-2"&amp;gt;
&lt;BR&gt;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp; &amp;lt;applicationrequestrouting httpport="4568" /&amp;gt;
&lt;BR&gt;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp; &amp;lt;/server&amp;gt;
&lt;BR&gt;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp; &amp;lt;applicationrequestrouting&amp;gt;
&lt;BR&gt;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp; &amp;lt;loadbalancing algorithm="WeightedRoundRobin" /&amp;gt;
&lt;BR&gt;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp; &amp;lt;protocol httpversion="Http10" /&amp;gt;
&lt;BR&gt;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp; &amp;lt;/applicationrequestrouting&amp;gt;
&lt;BR&gt;&amp;nbsp;&amp;nbsp;&amp;nbsp; &amp;lt;/webfarm&amp;gt;
&lt;BR&gt;&amp;nbsp;&amp;nbsp;&amp;nbsp; &amp;lt;applicationrequestrouting&amp;gt;
&lt;BR&gt;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp; &amp;lt;hostaffinityproviderlist&amp;gt;
&lt;BR&gt;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp; &amp;lt;add name="Microsoft.Web.Arr.HostNameRoundRobin" /&amp;gt;
&lt;BR&gt;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp; &amp;lt;add name="Microsoft.Web.Arr.HostNameMemory" /&amp;gt;
&lt;BR&gt;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp; &amp;lt;/hostaffinityproviderlist&amp;gt;
&lt;BR&gt;&amp;nbsp;&amp;nbsp;&amp;nbsp; &amp;lt;/applicationrequestrouting&amp;gt;
&lt;BR&gt;&amp;lt;/webfarms&amp;gt;&lt;/PRE&gt;
&lt;H3&gt;For Further Research&lt;/H3&gt;
&lt;UL&gt;
&lt;LI&gt;The Server Farms have extra features for checking the health of instances. Wiring these into mongrel would be cool.&lt;/LI&gt;
&lt;LI&gt;Load Balancing mechanisms: wiring these for deeper integration&lt;/LI&gt;
&lt;LI&gt;IronRuby. Now that would be cool.&lt;/LI&gt;&lt;/UL&gt;&lt;img src="http://blogs.msdn.com/aggbug.aspx?PostID=9442377" width="1" height="1"&gt;</description><category domain="http://blogs.msdn.com/nickhodge/archive/tags/iis7/default.aspx">iis7</category><category domain="http://blogs.msdn.com/nickhodge/archive/tags/ruby/default.aspx">ruby</category><category domain="http://blogs.msdn.com/nickhodge/archive/tags/rubyonrails/default.aspx">rubyonrails</category></item><item><title>Windows 7, IIS 7.5 and Ruby on Rails</title><link>http://blogs.msdn.com/nickhodge/archive/2009/02/23/windows-7-iis-7-5-and-ruby-on-rails.aspx</link><pubDate>Mon, 23 Feb 2009 07:50:25 GMT</pubDate><guid isPermaLink="false">91d46819-8472-40ad-a661-2c78acb4018c:9440961</guid><dc:creator>nhodge</dc:creator><slash:comments>1</slash:comments><comments>http://blogs.msdn.com/nickhodge/comments/9440961.aspx</comments><wfw:commentRss>http://blogs.msdn.com/nickhodge/commentrss.aspx?PostID=9440961</wfw:commentRss><wfw:comment>http://blogs.msdn.com/nickhodge/rsscomments.aspx?PostID=9440961</wfw:comment><description>&lt;p&gt;Having spent the weekend working on Ruby on Rails with IIS/SQLServer 2008 Express backend via FastCGI, here are some tips to get you going:&lt;/p&gt;  &lt;ol&gt;   &lt;li&gt;The best resource is &lt;a href="http://ruslany.net/2008/08/ruby-on-rails-in-iis-70-with-url-rewriter/"&gt;Ruslan’s post on Rails and IIS7&lt;/a&gt;. In fact, go and bookmark this site right now. In Ruslan’s post, the &lt;em&gt;web.config&lt;/em&gt; shown is best edited in a text editor. &lt;/li&gt;    &lt;li&gt;When installing IIS7.5 on Windows 7 Beta (build 7000) is easy: Using the &lt;em&gt;Control Panels\Programs,&lt;/em&gt; Turn Windows Features On/Off. Underneath the Internet Information Services, you need to also install the CGI feature (to get FastCGI) &lt;/li&gt;    &lt;li&gt;Windows 7 and URL Rewrite: This forum post &lt;a href="http://forums.iis.net/t/1154240.aspx"&gt;http://forums.iis.net/t/1154240.aspx&lt;/a&gt; will get you going whilst Windows 7 is in beta &lt;/li&gt;    &lt;li&gt;Database connectivity to &lt;a href="http://www.microsoft.com/express/sql/"&gt;SQLServer&lt;/a&gt; seems to be a common question. Installing the option “sqlserver adaptor” which is now an optional part of ActiveRecord:       &lt;br /&gt;      &lt;pre&gt;gem install activerecord-sqlserver-adapter --source=http://gems.rubyonrails.org&lt;/pre&gt;
Connecting via the ODBC adaptor via the SQL Native Client worked, rather than the ADO connector. My connector string looked something like this: 

    &lt;br /&gt;

    &lt;pre&gt;development: 
  adapter: sqlserver 
  mode: odbc 
  dsn: Driver={SQL Native Client};Server=.\SQLEXPRESS;Database=xxxxx;&lt;/pre&gt;
  &lt;/li&gt;

  &lt;li&gt;As I am installing underneath the IIS7 root directory (that is: &lt;a href="http://server/myapp"&gt;http://server/myapp&lt;/a&gt;) there are 3 small Rails tweaks required inform the application all the goodies are in a subdirectory:

    &lt;br /&gt; 

    &lt;br /&gt;&lt;em&gt;in config/environment.rb, the header, define a global variable:&lt;/em&gt; 

    &lt;pre&gt;PATH_PREFIX = '/myapp'&lt;/pre&gt;

    &lt;p&gt;&lt;em&gt;in config/environment.rb, in the Initializer, set the asset home directory:&lt;/em&gt;&lt;/p&gt;

    &lt;pre&gt;Rails::Initializer.run do |config|
    config.action_controller.asset_host = PATH_PREFIX&lt;/pre&gt;

    &lt;p&gt;&lt;em&gt;in config/routes.rb, ActionController::Routing::Routes.draw:&lt;/em&gt;&lt;/p&gt;

    &lt;pre&gt;  map.connect PATH_PREFIX + '/:controller/:action/:id'
  map.connect PATH_PREFIX + '/:controller/:action/:id.:format'
end&lt;/pre&gt;
  &lt;/li&gt;
&lt;/ol&gt;&lt;img src="http://blogs.msdn.com/aggbug.aspx?PostID=9440961" width="1" height="1"&gt;</description><category domain="http://blogs.msdn.com/nickhodge/archive/tags/iis7/default.aspx">iis7</category><category domain="http://blogs.msdn.com/nickhodge/archive/tags/ruby/default.aspx">ruby</category><category domain="http://blogs.msdn.com/nickhodge/archive/tags/rubyonrails/default.aspx">rubyonrails</category></item></channel></rss>