since 1999


4 minutes estimated reading time.

Integrate Blog Content with your Rails 3 Website with Pure Ruby Code and RSS

The full sample code used for this post is available as a Ruby on Rails 3.1 project at

Suppose you have built an amazing new website using Ruby on Rails 3. It has tons of features and some great content.  However, one thing it is lacking is a solid blog section. You would like to avoid writing your own blog code in Rails since there are already tons of solid blog applications to choose from - Wordpress, Moveable Type, Typepad,, and more.

I personally like because:

  1. Its run by Google and integrates nicely with Google Analytics and my Google Apps account
  2. It supports being run as a subdomain of your website with a simple DNS entry ( instead of just
  3. Supports RSS feeds for both the main blog and for labels
  4. Posts are indexed quickly for Google Search results

Parsing a Blog RSS Feed in Ruby 1.9

Ruby supports loading RSS feeds natively without requiring any gem!  To see if yourself, fire up IRB on your command line and run the following:

  require 'rss'
  blog_posts = RSS::Parser.parse(
      open('').read, false

The RSS module (which is a native part of Ruby) will load the latest five blog posts from this blog into the blog_posts Array object.  Each post in the array is an instance of RSS::Rss::Channel::Item.  The object has quite a few methods and attributes, but the ones of primary interest to us are:

Integrating with a Rails 3 Website

In your controller:

# It is important to require the RSS module.  If you leave this off, the blog feed will not load.
require 'rss'
class PagesController < ApplicationController
  def index
       @latest_blog_posts = RSS::Parser.parse(open('').read, false).items[05]
       # Do nothing, just continue.  The view will skip the blog section if the feed is nil.
       @latest_blog_posts = nil

In your view that includes the blog:

<h1>Simple Blog Feed</h1>
<% unless @latest_blog_posts.nil? %>
 The latest <%= pluralize(@latest_blog_posts.count, “post”) %> from the blog.
  <% @latest_blog_posts.each do |post| %>
   <% if nil != post && post.respond_to?(:pubDate) %>
     <%= link_to post.title,, :target => “_blank” %>
     (<%= time_ago_in_words(post.pubDate) %> ago via blog feed)
   <% end %>
  <% end %>
<% else %>
  <em>No blog posts to show.</em>
<% end %>

Resulting in the following:

The result will be a bullet list of the latest posts (up to 5) that looks something like this:

{% img center /images/posts/2012-01-02/simple_blog_feed_screenshot.png ‘A Simple Blog Feed Formatted as a Bulleted List’ %}

Loading Feeds for Specific Labels

Blogger supports full site, comments-only, and label-specific feeds in Atom and RSS format as per Blogger Feed URLs.

An RSS feed for a label is referenced like this:

The label appears after the -/. It is case sensitive such that “Marketing” is not the same as “marketing”.

Please note that at the time of this writing the Google page had an error in that they were showing the a label feed as

Unfortunately, this does not work.  Attempting to access that feed like that results in an “Unsupported alt type” error from Blogger’s web server.

The example code includes a full example of loading feeds from a couple of different labels.

Loading Feeds from Your Twitter

Twitter used to make it easy to get the RSS feed for your tweets.  You can still access them through the following URL (be sure to replace the xxxxx with the Twitter username you want to use):

(see Here is How to Find Your Twitter RSS Feed and Your Twitter Favorites RSS Feed for a fuller explanation of the Twitter feed urls.)

Further Reading


Frank Rietta
Excellent! Glad to be of service to you, Ed :-)
Ed Trollope
Thank you for this. I was trying to create a feed to a specific label and ran afoul of the incorrect information on Google's site (as you describe here, which is how I found you!). Your link works perfectly :)
Great post, thanks!
This comment has been removed by the author.
This comment has been removed by the author.