<?xml version="1.0" encoding="UTF-8"?>
<rss xmlns:itunes="http://www.itunes.com/dtds/podcast-1.0.dtd" xmlns:media="http://search.yahoo.com/mrss/" version="2.0">
  <channel>
    <title>RailsCasts (Mobile)</title>
    <link>http://railscasts.com</link>
    <description>Every other week you will be treated to a new, free RailsCasts episode featuring tips and tricks with Ruby on Rails, the popular web development framework. These screencasts are short and focus on one technique so you can quickly move on to applying it to your own project. The topics are geared toward the intermediate Rails developer, but beginners and experts will get something out of it as well. A Pro option is also available containing more screencasts each week. This version is for mobile devices which cannot support the full resolution version.</description>
    <language>en</language>
    <pubDate>Sun, 16 Jun 2013 00:00:00 -0700</pubDate>
    <lastBuildDate>Sun, 16 Jun 2013 00:00:00 -0700</lastBuildDate>
    <itunes:author>Ryan Bates</itunes:author>
    <itunes:keywords>rails, ruby on rails, screencasts, podcasts, tips, tricks, tutorials, training, programming, railscast, mobile</itunes:keywords>
    <itunes:explicit>clean</itunes:explicit>
    <itunes:image href="http://media.railscasts.com/assets/railscasts_mobile_itunes_black.jpg"/>
    <itunes:owner>
      <itunes:name>Ryan Bates</itunes:name>
      <itunes:email>ryan@railscasts.com</itunes:email>
    </itunes:owner>
    <itunes:block>no</itunes:block>
    <itunes:category text="Technology">
      <itunes:category text="Software How-To"/>
    </itunes:category>
    <itunes:category text="Education">
      <itunes:category text="Training"/>
    </itunes:category>
    <item>
      <title>#417 Foundation</title>
      <description>ZURB's Foundation is a front-end for quickly building applications and prototypes. It is similar to Twitter Bootstrap but uses Sass instead of LESS. Here you will learn the basics of the grid system, navigation, tooltips and more.</description>
      <pubDate>Sun, 16 Jun 2013 00:00:00 -0700</pubDate>
      <enclosure url="http://media.railscasts.com/assets/episodes/videos/417-foundation.m4v" length="19443914" type="video/mp4"/>
      <link>http://railscasts.com/episodes/417-foundation</link>
      <guid isPermaLink="false">foundation</guid>
      <itunes:author>Ryan Bates</itunes:author>
      <itunes:subtitle>ZURB's Foundation is a front-end for quickly building applications and prototypes. It is similar to Twitter Bootstrap but uses Sass instead of LESS...</itunes:subtitle>
      <itunes:summary>ZURB's Foundation is a front-end for quickly building applications and prototypes. It is similar to Twitter Bootstrap but uses Sass instead of LESS. Here you will learn the basics of the grid system, navigation, tooltips and more.</itunes:summary>
      <itunes:explicit>no</itunes:explicit>
      <itunes:duration>11:06</itunes:duration>
    </item>
    <item>
      <title>#415 Upgrading to Rails 4</title>
      <description>With the release of Rails 4.0.0.rc1 it's time to try it out and report any bugs. Here I walk you through the steps to upgrade a Rails 3.2 application to Rails 4.</description>
      <pubDate>Mon, 06 May 2013 00:00:00 -0700</pubDate>
      <enclosure url="http://media.railscasts.com/assets/episodes/videos/415-upgrading-to-rails-4.m4v" length="18606659" type="video/mp4"/>
      <link>http://railscasts.com/episodes/415-upgrading-to-rails-4</link>
      <guid isPermaLink="false">upgrading-to-rails-4</guid>
      <itunes:author>Ryan Bates</itunes:author>
      <itunes:subtitle>With the release of Rails 4.0.0.rc1 it's time to try it out and report any bugs. Here I walk you through the steps to upgrade a Rails 3.2 applicati...</itunes:subtitle>
      <itunes:summary>With the release of Rails 4.0.0.rc1 it's time to try it out and report any bugs. Here I walk you through the steps to upgrade a Rails 3.2 application to Rails 4.</itunes:summary>
      <itunes:explicit>no</itunes:explicit>
      <itunes:duration>12:44</itunes:duration>
    </item>
    <item>
      <title>#412 Fast Rails Commands</title>
      <description>Rails commands, such as generators, migrations, and tests, have a tendency to be slow because they need to load the Rails app each time. Here I show three tools to make this faster: Zeus, Spring, and Commands.</description>
      <pubDate>Thu, 04 Apr 2013 00:00:00 -0700</pubDate>
      <enclosure url="http://media.railscasts.com/assets/episodes/videos/412-fast-rails-commands.m4v" length="10181312" type="video/mp4"/>
      <link>http://railscasts.com/episodes/412-fast-rails-commands</link>
      <guid isPermaLink="false">fast-rails-commands</guid>
      <itunes:author>Ryan Bates</itunes:author>
      <itunes:subtitle>Rails commands, such as generators, migrations, and tests, have a tendency to be slow because they need to load the Rails app each time. Here I sho...</itunes:subtitle>
      <itunes:summary>Rails commands, such as generators, migrations, and tests, have a tendency to be slow because they need to load the Rails app each time. Here I show three tools to make this faster: Zeus, Spring, and Commands.</itunes:summary>
      <itunes:explicit>no</itunes:explicit>
      <itunes:duration>8:06</itunes:duration>
    </item>
    <item>
      <title>#409 Active Model Serializers</title>
      <description>The ActiveModel::Serializers gem can help you build JSON APIs through serializer objects. This provides a dedicated place to fully customize the JSON output.</description>
      <pubDate>Sat, 09 Mar 2013 00:00:00 -0800</pubDate>
      <enclosure url="http://media.railscasts.com/assets/episodes/videos/409-active-model-serializers.m4v" length="12090158" type="video/mp4"/>
      <link>http://railscasts.com/episodes/409-active-model-serializers</link>
      <guid isPermaLink="false">active-model-serializers</guid>
      <itunes:author>Ryan Bates</itunes:author>
      <itunes:subtitle>The ActiveModel::Serializers gem can help you build JSON APIs through serializer objects. This provides a dedicated place to fully customize the JS...</itunes:subtitle>
      <itunes:summary>The ActiveModel::Serializers gem can help you build JSON APIs through serializer objects. This provides a dedicated place to fully customize the JSON output.</itunes:summary>
      <itunes:explicit>no</itunes:explicit>
      <itunes:duration>10:58</itunes:duration>
    </item>
    <item>
      <title>#406 Public Activity</title>
      <description>Learn how to easily add a user activity feed using the public_activity gem. Here I show both the default setup using model callbacks and a manual way to trigger activities.</description>
      <pubDate>Wed, 13 Feb 2013 00:00:00 -0800</pubDate>
      <enclosure url="http://media.railscasts.com/assets/episodes/videos/406-public-activity.m4v" length="12752761" type="video/mp4"/>
      <link>http://railscasts.com/episodes/406-public-activity</link>
      <guid isPermaLink="false">public-activity</guid>
      <itunes:author>Ryan Bates</itunes:author>
      <itunes:subtitle>Learn how to easily add a user activity feed using the public_activity gem. Here I show both the default setup using model callbacks and a manual w...</itunes:subtitle>
      <itunes:summary>Learn how to easily add a user activity feed using the public_activity gem. Here I show both the default setup using model callbacks and a manual way to trigger activities.</itunes:summary>
      <itunes:explicit>no</itunes:explicit>
      <itunes:duration>10:59</itunes:duration>
    </item>
    <item>
      <title>#402 Better Errors &amp; RailsPanel</title>
      <description>Here we take a look at two tools to aid us in development: Better Errors which makes it easier than ever to debug exceptions, and RailsPanel, a Chrome extension to see Rails requests.</description>
      <pubDate>Fri, 25 Jan 2013 00:00:00 -0800</pubDate>
      <enclosure url="http://media.railscasts.com/assets/episodes/videos/402-better-errors-railspanel.m4v" length="11613052" type="video/mp4"/>
      <link>http://railscasts.com/episodes/402-better-errors-railspanel</link>
      <guid isPermaLink="false">better-errors-railspanel</guid>
      <itunes:author>Ryan Bates</itunes:author>
      <itunes:subtitle>Here we take a look at two tools to aid us in development: Better Errors which makes it easier than ever to debug exceptions, and RailsPanel, a Chr...</itunes:subtitle>
      <itunes:summary>Here we take a look at two tools to aid us in development: Better Errors which makes it easier than ever to debug exceptions, and RailsPanel, a Chrome extension to see Rails requests.</itunes:summary>
      <itunes:explicit>no</itunes:explicit>
      <itunes:duration>8:06</itunes:duration>
    </item>
    <item>
      <title>#400 What's New in Rails 4</title>
      <description>Rails 4.0 is still unfinished, but it is shaping up to become a great release. Here I show how to setup a new Rails 4.0 (edge) application and walk through many of its new features.</description>
      <pubDate>Fri, 04 Jan 2013 00:00:00 -0800</pubDate>
      <enclosure url="http://media.railscasts.com/assets/episodes/videos/400-what-s-new-in-rails-4.m4v" length="24775946" type="video/mp4"/>
      <link>http://railscasts.com/episodes/400-what-s-new-in-rails-4</link>
      <guid isPermaLink="false">what-s-new-in-rails-4</guid>
      <itunes:author>Ryan Bates</itunes:author>
      <itunes:subtitle>Rails 4.0 is still unfinished, but it is shaping up to become a great release. Here I show how to setup a new Rails 4.0 (edge) application and walk...</itunes:subtitle>
      <itunes:summary>Rails 4.0 is still unfinished, but it is shaping up to become a great release. Here I show how to setup a new Rails 4.0 (edge) application and walk through many of its new features.</itunes:summary>
      <itunes:explicit>no</itunes:explicit>
      <itunes:duration>20:23</itunes:duration>
    </item>
    <item>
      <title>#396 Importing CSV and Excel</title>
      <description>Allow users to import records into the database by uploading a CSV or Excel document. Here I show how to use Roo to parse these files and present a solution for validations.</description>
      <pubDate>Sat, 08 Dec 2012 00:00:00 -0800</pubDate>
      <enclosure url="http://media.railscasts.com/assets/episodes/videos/396-importing-csv-and-excel.m4v" length="12600838" type="video/mp4"/>
      <link>http://railscasts.com/episodes/396-importing-csv-and-excel</link>
      <guid isPermaLink="false">importing-csv-and-excel</guid>
      <itunes:author>Ryan Bates</itunes:author>
      <itunes:subtitle>Allow users to import records into the database by uploading a CSV or Excel document. Here I show how to use Roo to parse these files and present a...</itunes:subtitle>
      <itunes:summary>Allow users to import records into the database by uploading a CSV or Excel document. Here I show how to use Roo to parse these files and present a solution for validations.</itunes:summary>
      <itunes:explicit>no</itunes:explicit>
      <itunes:duration>10:19</itunes:duration>
    </item>
    <item>
      <title>#393 Guest User Record</title>
      <description>Instead of presenting a sign up form to the user, consider creating a temporary guest record so the user can try out the application without filling in their information up front. They can then become a permanent member afterwards.</description>
      <pubDate>Wed, 21 Nov 2012 00:00:00 -0800</pubDate>
      <enclosure url="http://media.railscasts.com/assets/episodes/videos/393-guest-user-record.m4v" length="10764918" type="video/mp4"/>
      <link>http://railscasts.com/episodes/393-guest-user-record</link>
      <guid isPermaLink="false">guest-user-record</guid>
      <itunes:author>Ryan Bates</itunes:author>
      <itunes:subtitle>Instead of presenting a sign up form to the user, consider creating a temporary guest record so the user can try out the application without fillin...</itunes:subtitle>
      <itunes:summary>Instead of presenting a sign up form to the user, consider creating a temporary guest record so the user can try out the application without filling in their information up front. They can then become a permanent member afterwards.</itunes:summary>
      <itunes:explicit>no</itunes:explicit>
      <itunes:duration>9:27</itunes:duration>
    </item>
    <item>
      <title>#390 Turbolinks</title>
      <description>Turbolinks can make your Rails app feel faster by using JavaScript to replace the page content when clicking a link. It will be default in new Rails 4.0 applications, but here I show how to use it in Rails 3 and mention some of the gotchas.</description>
      <pubDate>Mon, 05 Nov 2012 00:00:00 -0800</pubDate>
      <enclosure url="http://media.railscasts.com/assets/episodes/videos/390-turbolinks.m4v" length="9870800" type="video/mp4"/>
      <link>http://railscasts.com/episodes/390-turbolinks</link>
      <guid isPermaLink="false">turbolinks</guid>
      <itunes:author>Ryan Bates</itunes:author>
      <itunes:subtitle>Turbolinks can make your Rails app feel faster by using JavaScript to replace the page content when clicking a link. It will be default in new Rail...</itunes:subtitle>
      <itunes:summary>Turbolinks can make your Rails app feel faster by using JavaScript to replace the page content when clicking a link. It will be default in new Rails 4.0 applications, but here I show how to use it in Rails 3 and mention some of the gotchas.</itunes:summary>
      <itunes:explicit>no</itunes:explicit>
      <itunes:duration>7:45</itunes:duration>
    </item>
    <item>
      <title>#387 Cache Digests</title>
      <description>The cache_digests gem (also included in Rails 4) will automatically add a digest to the fragment cache key based on the template. If a template changes the cache will auto-expire. But watch out for the gotchas!</description>
      <pubDate>Sat, 20 Oct 2012 00:00:00 -0700</pubDate>
      <enclosure url="http://media.railscasts.com/assets/episodes/videos/387-cache-digests.m4v" length="8470839" type="video/mp4"/>
      <link>http://railscasts.com/episodes/387-cache-digests</link>
      <guid isPermaLink="false">cache-digests</guid>
      <itunes:author>Ryan Bates</itunes:author>
      <itunes:subtitle>The cache_digests gem (also included in Rails 4) will automatically add a digest to the fragment cache key based on the template. If a template cha...</itunes:subtitle>
      <itunes:summary>The cache_digests gem (also included in Rails 4) will automatically add a digest to the fragment cache key based on the template. If a template changes the cache will auto-expire. But watch out for the gotchas!</itunes:summary>
      <itunes:explicit>no</itunes:explicit>
      <itunes:duration>7:39</itunes:duration>
    </item>
    <item>
      <title>#384 Exploring RubyGems</title>
      <description>RubyGems can make it easy to add a feature to a Rails application, but it can also cause headaches down the road. Here I give some tips on researching gems to decide which one to choose, or when to do it from scratch.</description>
      <pubDate>Sun, 07 Oct 2012 00:00:00 -0700</pubDate>
      <enclosure url="http://media.railscasts.com/assets/episodes/videos/384-exploring-rubygems.m4v" length="12000545" type="video/mp4"/>
      <link>http://railscasts.com/episodes/384-exploring-rubygems</link>
      <guid isPermaLink="false">exploring-rubygems</guid>
      <itunes:author>Ryan Bates</itunes:author>
      <itunes:subtitle>RubyGems can make it easy to add a feature to a Rails application, but it can also cause headaches down the road. Here I give some tips on research...</itunes:subtitle>
      <itunes:summary>RubyGems can make it easy to add a feature to a Rails application, but it can also cause headaches down the road. Here I give some tips on researching gems to decide which one to choose, or when to do it from scratch.</itunes:summary>
      <itunes:explicit>no</itunes:explicit>
      <itunes:duration>7:20</itunes:duration>
    </item>
    <item>
      <title>#382 Tagging</title>
      <description>There are several gems to help implement tags in a Rails app. Here I show you how to integrate acts-as-taggable-on and then show how to do it from scratch.</description>
      <pubDate>Sat, 22 Sep 2012 00:00:00 -0700</pubDate>
      <enclosure url="http://media.railscasts.com/assets/episodes/videos/382-tagging.m4v" length="14469077" type="video/mp4"/>
      <link>http://railscasts.com/episodes/382-tagging</link>
      <guid isPermaLink="false">tagging</guid>
      <itunes:author>Ryan Bates</itunes:author>
      <itunes:subtitle>There are several gems to help implement tags in a Rails app. Here I show you how to integrate acts-as-taggable-on and then show how to do it from ...</itunes:subtitle>
      <itunes:summary>There are several gems to help implement tags in a Rails app. Here I show you how to integrate acts-as-taggable-on and then show how to do it from scratch.</itunes:summary>
      <itunes:explicit>no</itunes:explicit>
      <itunes:duration>11:03</itunes:duration>
    </item>
    <item>
      <title>#378 FnordMetric</title>
      <description>FnordMetric allows you to chart events in real time. This is great for keeping track of user activity in your Rails app as demonstrated in this episode.</description>
      <pubDate>Tue, 04 Sep 2012 00:00:00 -0700</pubDate>
      <enclosure url="http://media.railscasts.com/assets/episodes/videos/378-fnordmetric.m4v" length="13560869" type="video/mp4"/>
      <link>http://railscasts.com/episodes/378-fnordmetric</link>
      <guid isPermaLink="false">fnordmetric</guid>
      <itunes:author>Ryan Bates</itunes:author>
      <itunes:subtitle>FnordMetric allows you to chart events in real time. This is great for keeping track of user activity in your Rails app as demonstrated in this epi...</itunes:subtitle>
      <itunes:summary>FnordMetric allows you to chart events in real time. This is great for keeping track of user activity in your Rails app as demonstrated in this episode.</itunes:summary>
      <itunes:explicit>no</itunes:explicit>
      <itunes:duration>10:04</itunes:duration>
    </item>
    <item>
      <title>#376 JRuby Basics</title>
      <description>JRuby is a polished and stable Ruby implementation. Here I show the basics of setting it up and executing Java from within Ruby. I also see how it compares with MRI at running threads.</description>
      <pubDate>Thu, 30 Aug 2012 00:00:00 -0700</pubDate>
      <enclosure url="http://media.railscasts.com/assets/episodes/videos/376-jruby-basics.m4v" length="13434201" type="video/mp4"/>
      <link>http://railscasts.com/episodes/376-jruby-basics</link>
      <guid isPermaLink="false">jruby-basics</guid>
      <itunes:author>Ryan Bates</itunes:author>
      <itunes:subtitle>JRuby is a polished and stable Ruby implementation. Here I show the basics of setting it up and executing Java from within Ruby. I also see how it ...</itunes:subtitle>
      <itunes:summary>JRuby is a polished and stable Ruby implementation. Here I show the basics of setting it up and executing Java from within Ruby. I also see how it compares with MRI at running threads.</itunes:summary>
      <itunes:explicit>no</itunes:explicit>
      <itunes:duration>10:47</itunes:duration>
    </item>
    <item>
      <title>#374 Image Manipulation</title>
      <description>Learn how to do extensive image manipulation with the ImageMagick commands. Also learn how RMagick can be used in combination with CarrierWave to process uploaded images.</description>
      <pubDate>Thu, 16 Aug 2012 00:00:00 -0700</pubDate>
      <enclosure url="http://media.railscasts.com/assets/episodes/videos/374-image-manipulation.m4v" length="15197733" type="video/mp4"/>
      <link>http://railscasts.com/episodes/374-image-manipulation</link>
      <guid isPermaLink="false">image-manipulation</guid>
      <itunes:author>Ryan Bates</itunes:author>
      <itunes:subtitle>Learn how to do extensive image manipulation with the ImageMagick commands. Also learn how RMagick can be used in combination with CarrierWave to p...</itunes:subtitle>
      <itunes:summary>Learn how to do extensive image manipulation with the ImageMagick commands. Also learn how RMagick can be used in combination with CarrierWave to process uploaded images.</itunes:summary>
      <itunes:explicit>no</itunes:explicit>
      <itunes:duration>11:23</itunes:duration>
    </item>
    <item>
      <title>#372 Bullet</title>
      <description>Bullet will notify you of database queries that can potentially be improved through eager loading or counter cache column. A variety of notification alerts are supported.</description>
      <pubDate>Thu, 09 Aug 2012 00:00:00 -0700</pubDate>
      <enclosure url="http://media.railscasts.com/assets/episodes/videos/372-bullet.m4v" length="8123244" type="video/mp4"/>
      <link>http://railscasts.com/episodes/372-bullet</link>
      <guid isPermaLink="false">bullet</guid>
      <itunes:author>Ryan Bates</itunes:author>
      <itunes:subtitle>Bullet will notify you of database queries that can potentially be improved through eager loading or counter cache column. A variety of notificatio...</itunes:subtitle>
      <itunes:summary>Bullet will notify you of database queries that can potentially be improved through eager loading or counter cache column. A variety of notification alerts are supported.</itunes:summary>
      <itunes:explicit>no</itunes:explicit>
      <itunes:duration>6:20</itunes:duration>
    </item>
    <item>
      <title>#370 Ransack</title>
      <description>Ransack allows you to easily build complex search forms. It also helps in adding sortable links and building a dynamic advanced search page.</description>
      <pubDate>Fri, 03 Aug 2012 00:00:00 -0700</pubDate>
      <enclosure url="http://media.railscasts.com/assets/episodes/videos/370-ransack.m4v" length="13368095" type="video/mp4"/>
      <link>http://railscasts.com/episodes/370-ransack</link>
      <guid isPermaLink="false">ransack</guid>
      <itunes:author>Ryan Bates</itunes:author>
      <itunes:subtitle>Ransack allows you to easily build complex search forms. It also helps in adding sortable links and building a dynamic advanced search page.</itunes:subtitle>
      <itunes:summary>Ransack allows you to easily build complex search forms. It also helps in adding sortable links and building a dynamic advanced search page.</itunes:summary>
      <itunes:explicit>no</itunes:explicit>
      <itunes:duration>10:18</itunes:duration>
    </item>
    <item>
      <title>#368 MiniProfiler</title>
      <description>MiniProfiler allows you to see the speed of a request conveniently on the page. It also shows the SQL queries performed and allows you to profile a specific block of code.</description>
      <pubDate>Tue, 24 Jul 2012 00:00:00 -0700</pubDate>
      <enclosure url="http://media.railscasts.com/assets/episodes/videos/368-miniprofiler.m4v" length="13973085" type="video/mp4"/>
      <link>http://railscasts.com/episodes/368-miniprofiler</link>
      <guid isPermaLink="false">miniprofiler</guid>
      <itunes:author>Ryan Bates</itunes:author>
      <itunes:subtitle>MiniProfiler allows you to see the speed of a request conveniently on the page. It also shows the SQL queries performed and allows you to profile a...</itunes:subtitle>
      <itunes:summary>MiniProfiler allows you to see the speed of a request conveniently on the page. It also shows the SQL queries performed and allows you to profile a specific block of code.</itunes:summary>
      <itunes:explicit>no</itunes:explicit>
      <itunes:duration>9:03</itunes:duration>
    </item>
    <item>
      <title>#366 Sidekiq</title>
      <description>Sidekiq allows you to move jobs into the background for asynchronous processing. It uses threads instead of forks so it is much more efficient with memory compared to Resque.</description>
      <pubDate>Wed, 18 Jul 2012 00:00:00 -0700</pubDate>
      <enclosure url="http://media.railscasts.com/assets/episodes/videos/366-sidekiq.m4v" length="14092623" type="video/mp4"/>
      <link>http://railscasts.com/episodes/366-sidekiq</link>
      <guid isPermaLink="false">sidekiq</guid>
      <itunes:author>Ryan Bates</itunes:author>
      <itunes:subtitle>Sidekiq allows you to move jobs into the background for asynchronous processing. It uses threads instead of forks so it is much more efficient with...</itunes:subtitle>
      <itunes:summary>Sidekiq allows you to move jobs into the background for asynchronous processing. It uses threads instead of forks so it is much more efficient with memory compared to Resque.</itunes:summary>
      <itunes:explicit>no</itunes:explicit>
      <itunes:duration>10:17</itunes:duration>
    </item>
    <item>
      <title>#364 Active Record Reputation System</title>
      <description>If you need to calculate an average user's rating or sum up a number of votes, consider using the activerecord-reputation-system gem. Here I will cover the basics and also briefly present a from-scratch solution.</description>
      <pubDate>Mon, 09 Jul 2012 00:00:00 -0700</pubDate>
      <enclosure url="http://media.railscasts.com/assets/episodes/videos/364-active-record-reputation-system.m4v" length="12594627" type="video/mp4"/>
      <link>http://railscasts.com/episodes/364-active-record-reputation-system</link>
      <guid isPermaLink="false">active-record-reputation-system</guid>
      <itunes:author>Ryan Bates</itunes:author>
      <itunes:subtitle>If you need to calculate an average user's rating or sum up a number of votes, consider using the activerecord-reputation-system gem. Here I will c...</itunes:subtitle>
      <itunes:summary>If you need to calculate an average user's rating or sum up a number of votes, consider using the activerecord-reputation-system gem. Here I will cover the basics and also briefly present a from-scratch solution.</itunes:summary>
      <itunes:explicit>no</itunes:explicit>
      <itunes:duration>10:27</itunes:duration>
    </item>
    <item>
      <title>#362 Exporting CSV and Excel</title>
      <description>As you will see it is easy to add a CSV export option to Rails. Here I also show how to export for Excel in a variety of formats.</description>
      <pubDate>Mon, 02 Jul 2012 00:00:00 -0700</pubDate>
      <enclosure url="http://media.railscasts.com/assets/episodes/videos/362-exporting-csv-and-excel.m4v" length="9373305" type="video/mp4"/>
      <link>http://railscasts.com/episodes/362-exporting-csv-and-excel</link>
      <guid isPermaLink="false">exporting-csv-and-excel</guid>
      <itunes:author>Ryan Bates</itunes:author>
      <itunes:subtitle>As you will see it is easy to add a CSV export option to Rails. Here I also show how to export for Excel in a variety of formats.</itunes:subtitle>
      <itunes:summary>As you will see it is easy to add a CSV export option to Rails. Here I also show how to export for Excel in a variety of formats.</itunes:summary>
      <itunes:explicit>no</itunes:explicit>
      <itunes:duration>6:35</itunes:duration>
    </item>
    <item>
      <title>#360 Facebook Authentication</title>
      <description>This will show how to create a new facebook application and configure it. Then add some authentication with the omniauth-facebook gem and top it off with a client-side authentication using the JavaScript SDK.</description>
      <pubDate>Mon, 25 Jun 2012 00:00:00 -0700</pubDate>
      <enclosure url="http://media.railscasts.com/assets/episodes/videos/360-facebook-authentication.m4v" length="16681130" type="video/mp4"/>
      <link>http://railscasts.com/episodes/360-facebook-authentication</link>
      <guid isPermaLink="false">facebook-authentication</guid>
      <itunes:author>Ryan Bates</itunes:author>
      <itunes:subtitle>This will show how to create a new facebook application and configure it. Then add some authentication with the omniauth-facebook gem and top it of...</itunes:subtitle>
      <itunes:summary>This will show how to create a new facebook application and configure it. Then add some authentication with the omniauth-facebook gem and top it off with a client-side authentication using the JavaScript SDK.</itunes:summary>
      <itunes:explicit>no</itunes:explicit>
      <itunes:duration>12:09</itunes:duration>
    </item>
    <item>
      <title>#358 Brakeman</title>
      <description>The Brakeman gem will scan the Ruby code of a Rails application and alert you to common security vulnerabilities.</description>
      <pubDate>Fri, 15 Jun 2012 00:00:00 -0700</pubDate>
      <enclosure url="http://media.railscasts.com/assets/episodes/videos/358-brakeman.m4v" length="13881446" type="video/mp4"/>
      <link>http://railscasts.com/episodes/358-brakeman</link>
      <guid isPermaLink="false">brakeman</guid>
      <itunes:author>Ryan Bates</itunes:author>
      <itunes:subtitle>The Brakeman gem will scan the Ruby code of a Rails application and alert you to common security vulnerabilities.</itunes:subtitle>
      <itunes:summary>The Brakeman gem will scan the Ruby code of a Rails application and alert you to common security vulnerabilities.</itunes:summary>
      <itunes:explicit>no</itunes:explicit>
      <itunes:duration>8:24</itunes:duration>
    </item>
    <item>
      <title>#356 Dangers of Session Hijacking</title>
      <description>If a user's authentication cookie is sent over an insecure connection it is vulnerable to session hijacking, or more specifically, sidejacking. Learn how this is done, and how you can prevent it.</description>
      <pubDate>Fri, 08 Jun 2012 00:00:00 -0700</pubDate>
      <enclosure url="http://media.railscasts.com/assets/episodes/videos/356-dangers-of-session-hijacking.m4v" length="8857173" type="video/mp4"/>
      <link>http://railscasts.com/episodes/356-dangers-of-session-hijacking</link>
      <guid isPermaLink="false">dangers-of-session-hijacking</guid>
      <itunes:author>Ryan Bates</itunes:author>
      <itunes:subtitle>If a user's authentication cookie is sent over an insecure connection it is vulnerable to session hijacking, or more specifically, sidejacking. Lea...</itunes:subtitle>
      <itunes:summary>If a user's authentication cookie is sent over an insecure connection it is vulnerable to session hijacking, or more specifically, sidejacking. Learn how this is done, and how you can prevent it.</itunes:summary>
      <itunes:explicit>no</itunes:explicit>
      <itunes:duration>6:26</itunes:duration>
    </item>
    <item>
      <title>#354 Squeel</title>
      <description>Squeel provides a comprehensive DSL for writing SQL queries in Ruby. It is built upon Arel giving you access to many of its powerful features.</description>
      <pubDate>Wed, 30 May 2012 00:00:00 -0700</pubDate>
      <enclosure url="http://media.railscasts.com/assets/episodes/videos/354-squeel.m4v" length="14878815" type="video/mp4"/>
      <link>http://railscasts.com/episodes/354-squeel</link>
      <guid isPermaLink="false">squeel</guid>
      <itunes:author>Ryan Bates</itunes:author>
      <itunes:subtitle>Squeel provides a comprehensive DSL for writing SQL queries in Ruby. It is built upon Arel giving you access to many of its powerful features.</itunes:subtitle>
      <itunes:summary>Squeel provides a comprehensive DSL for writing SQL queries in Ruby. It is built upon Arel giving you access to many of its powerful features.</itunes:summary>
      <itunes:explicit>no</itunes:explicit>
      <itunes:duration>9:10</itunes:duration>
    </item>
    <item>
      <title>#352 Securing an API</title>
      <description>There are many approaches to locking down an API. Here I start off with HTTP Basic authentication then move on to generating a unique token which can be passed through a URL parameter or HTTP header.</description>
      <pubDate>Wed, 23 May 2012 00:00:00 -0700</pubDate>
      <enclosure url="http://media.railscasts.com/assets/episodes/videos/352-securing-an-api.m4v" length="10132964" type="video/mp4"/>
      <link>http://railscasts.com/episodes/352-securing-an-api</link>
      <guid isPermaLink="false">securing-an-api</guid>
      <itunes:author>Ryan Bates</itunes:author>
      <itunes:subtitle>There are many approaches to locking down an API. Here I start off with HTTP Basic authentication then move on to generating a unique token which c...</itunes:subtitle>
      <itunes:summary>There are many approaches to locking down an API. Here I start off with HTTP Basic authentication then move on to generating a unique token which can be passed through a URL parameter or HTTP header.</itunes:summary>
      <itunes:explicit>no</itunes:explicit>
      <itunes:duration>7:42</itunes:duration>
    </item>
    <item>
      <title>#350 REST API Versioning</title>
      <description>APIs should be consistent, but it is difficult to do this when returning a JSON response along side the HTML interface. Here I show how to add a versioned, RESTful API. The version can be determined from either the URL or HTTP headers.</description>
      <pubDate>Wed, 16 May 2012 00:00:00 -0700</pubDate>
      <enclosure url="http://media.railscasts.com/assets/episodes/videos/350-rest-api-versioning.m4v" length="15208731" type="video/mp4"/>
      <link>http://railscasts.com/episodes/350-rest-api-versioning</link>
      <guid isPermaLink="false">rest-api-versioning</guid>
      <itunes:author>Ryan Bates</itunes:author>
      <itunes:subtitle>APIs should be consistent, but it is difficult to do this when returning a JSON response along side the HTML interface. Here I show how to add a ve...</itunes:subtitle>
      <itunes:summary>APIs should be consistent, but it is difficult to do this when returning a JSON response along side the HTML interface. Here I show how to add a versioned, RESTful API. The version can be determined from either the URL or HTTP headers.</itunes:summary>
      <itunes:explicit>no</itunes:explicit>
      <itunes:duration>10:40</itunes:duration>
    </item>
    <item>
      <title>#348 The Rails API Gem</title>
      <description>It is often asked: Is Rails a good fit if I only need to serve an API? In this episode I show how to use the Rails API gem to create a slimmer Rails application designed to respond with JSON.</description>
      <pubDate>Wed, 09 May 2012 00:00:00 -0700</pubDate>
      <enclosure url="http://media.railscasts.com/assets/episodes/videos/348-the-rails-api-gem.m4v" length="14525693" type="video/mp4"/>
      <link>http://railscasts.com/episodes/348-the-rails-api-gem</link>
      <guid isPermaLink="false">the-rails-api-gem</guid>
      <itunes:author>Ryan Bates</itunes:author>
      <itunes:subtitle>It is often asked: Is Rails a good fit if I only need to serve an API? In this episode I show how to use the Rails API gem to create a slimmer Rail...</itunes:subtitle>
      <itunes:summary>It is often asked: Is Rails a good fit if I only need to serve an API? In this episode I show how to use the Rails API gem to create a slimmer Rails application designed to respond with JSON.</itunes:summary>
      <itunes:explicit>no</itunes:explicit>
      <itunes:duration>9:56</itunes:duration>
    </item>
    <item>
      <title>#347 Rubber and Amazon EC2</title>
      <description>Deploying to Amazon EC2 allows you to scale an application quickly. Learn how to use Rubber to deploy to the cloud with just a few commands and monitor the cluster with various web tools.</description>
      <pubDate>Thu, 03 May 2012 00:00:00 -0700</pubDate>
      <enclosure url="http://media.railscasts.com/assets/episodes/videos/347-rubber-and-amazon-ec2.m4v" length="25816352" type="video/mp4"/>
      <link>http://railscasts.com/episodes/347-rubber-and-amazon-ec2</link>
      <guid isPermaLink="false">rubber-and-amazon-ec2</guid>
      <itunes:author>Ryan Bates</itunes:author>
      <itunes:subtitle>Deploying to Amazon EC2 allows you to scale an application quickly. Learn how to use Rubber to deploy to the cloud with just a few commands and mon...</itunes:subtitle>
      <itunes:summary>Deploying to Amazon EC2 allows you to scale an application quickly. Learn how to use Rubber to deploy to the cloud with just a few commands and monitor the cluster with various web tools.</itunes:summary>
      <itunes:explicit>no</itunes:explicit>
      <itunes:duration>17:04</itunes:duration>
    </item>
    <item>
      <title>#346 Wizard Forms with Wicked</title>
      <description>Creating a wizard form can be tricky in Rails. Learn how Wicked can help by turning a controller into a series of multiple steps.</description>
      <pubDate>Thu, 03 May 2012 00:00:00 -0700</pubDate>
      <enclosure url="http://media.railscasts.com/assets/episodes/videos/346-wizard-forms-with-wicked.m4v" length="15633259" type="video/mp4"/>
      <link>http://railscasts.com/episodes/346-wizard-forms-with-wicked</link>
      <guid isPermaLink="false">wizard-forms-with-wicked</guid>
      <itunes:author>Ryan Bates</itunes:author>
      <itunes:subtitle>Creating a wizard form can be tricky in Rails. Learn how Wicked can help by turning a controller into a series of multiple steps.</itunes:subtitle>
      <itunes:summary>Creating a wizard form can be tricky in Rails. Learn how Wicked can help by turning a controller into a series of multiple steps.</itunes:summary>
      <itunes:explicit>no</itunes:explicit>
      <itunes:duration>11:57</itunes:duration>
    </item>
    <item>
      <title>#344 Queue Classic</title>
      <description>PostgreSQL can act as a worker queue which can replace the need for a separate process to manage the background jobs. Here you will learn how to do this with the queue_classic gem.</description>
      <pubDate>Tue, 24 Apr 2012 00:00:00 -0700</pubDate>
      <enclosure url="http://media.railscasts.com/assets/episodes/videos/344-queue-classic.m4v" length="11890411" type="video/mp4"/>
      <link>http://railscasts.com/episodes/344-queue-classic</link>
      <guid isPermaLink="false">queue-classic</guid>
      <itunes:author>Ryan Bates</itunes:author>
      <itunes:subtitle>PostgreSQL can act as a worker queue which can replace the need for a separate process to manage the background jobs. Here you will learn how to do...</itunes:subtitle>
      <itunes:summary>PostgreSQL can act as a worker queue which can replace the need for a separate process to manage the background jobs. Here you will learn how to do this with the queue_classic gem.</itunes:summary>
      <itunes:explicit>no</itunes:explicit>
      <itunes:duration>8:07</itunes:duration>
    </item>
    <item>
      <title>#342 Migrating to PostgreSQL</title>
      <description>Postgres is a feature-packed relational database that every Rails developer should consider using. Here you will learn how to install it, add it to a new application, and transition from an existing SQLite app using the "taps" gem.</description>
      <pubDate>Tue, 17 Apr 2012 00:00:00 -0700</pubDate>
      <enclosure url="http://media.railscasts.com/assets/episodes/videos/342-migrating-to-postgresql.m4v" length="12456241" type="video/mp4"/>
      <link>http://railscasts.com/episodes/342-migrating-to-postgresql</link>
      <guid isPermaLink="false">migrating-to-postgresql</guid>
      <itunes:author>Ryan Bates</itunes:author>
      <itunes:subtitle>Postgres is a feature-packed relational database that every Rails developer should consider using. Here you will learn how to install it, add it to...</itunes:subtitle>
      <itunes:summary>Postgres is a feature-packed relational database that every Rails developer should consider using. Here you will learn how to install it, add it to a new application, and transition from an existing SQLite app using the "taps" gem.</itunes:summary>
      <itunes:explicit>no</itunes:explicit>
      <itunes:duration>8:14</itunes:duration>
    </item>
    <item>
      <title>#340 DataTables</title>
      <description>DataTables makes it easy to convert a plain HTML table into one with pagination, sorting, and searching - all done with JavaScript and jQuery. Here I show how to set this up and use a Rails application as the data source.</description>
      <pubDate>Wed, 11 Apr 2012 00:00:00 -0700</pubDate>
      <enclosure url="http://media.railscasts.com/assets/episodes/videos/340-datatables.m4v" length="15667017" type="video/mp4"/>
      <link>http://railscasts.com/episodes/340-datatables</link>
      <guid isPermaLink="false">datatables</guid>
      <itunes:author>Ryan Bates</itunes:author>
      <itunes:subtitle>DataTables makes it easy to convert a plain HTML table into one with pagination, sorting, and searching - all done with JavaScript and jQuery. Here...</itunes:subtitle>
      <itunes:summary>DataTables makes it easy to convert a plain HTML table into one with pagination, sorting, and searching - all done with JavaScript and jQuery. Here I show how to set this up and use a Rails application as the data source.</itunes:summary>
      <itunes:explicit>no</itunes:explicit>
      <itunes:duration>9:40</itunes:duration>
    </item>
    <item>
      <title>#338 Globalize3</title>
      <description>Rails has great internationalization (I18n) support making it easy to translate static text into other languages, but how do we translate database content? Learn how using Globalize 3 in this episode.</description>
      <pubDate>Wed, 04 Apr 2012 00:00:00 -0700</pubDate>
      <enclosure url="http://media.railscasts.com/assets/episodes/videos/338-globalize3.m4v" length="8220697" type="video/mp4"/>
      <link>http://railscasts.com/episodes/338-globalize3</link>
      <guid isPermaLink="false">globalize3</guid>
      <itunes:author>Ryan Bates</itunes:author>
      <itunes:subtitle>Rails has great internationalization (I18n) support making it easy to translate static text into other languages, but how do we translate database ...</itunes:subtitle>
      <itunes:summary>Rails has great internationalization (I18n) support making it easy to translate static text into other languages, but how do we translate database content? Learn how using Globalize 3 in this episode.</itunes:summary>
      <itunes:explicit>no</itunes:explicit>
      <itunes:duration>5:57</itunes:duration>
    </item>
    <item>
      <title>#336 Copycopter</title>
      <description>Copycopter provides a nice interface that clients can use to edit the text in a Rails application. Learn how to deploy a Copycopter server using Heroku and integrate it in a Rails application through I18n.</description>
      <pubDate>Tue, 27 Mar 2012 00:00:00 -0700</pubDate>
      <enclosure url="http://media.railscasts.com/assets/episodes/videos/336-copycopter.m4v" length="10261607" type="video/mp4"/>
      <link>http://railscasts.com/episodes/336-copycopter</link>
      <guid isPermaLink="false">copycopter</guid>
      <itunes:author>Ryan Bates</itunes:author>
      <itunes:subtitle>Copycopter provides a nice interface that clients can use to edit the text in a Rails application. Learn how to deploy a Copycopter server using He...</itunes:subtitle>
      <itunes:summary>Copycopter provides a nice interface that clients can use to edit the text in a Rails application. Learn how to deploy a Copycopter server using Heroku and integrate it in a Rails application through I18n.</itunes:summary>
      <itunes:explicit>no</itunes:explicit>
      <itunes:duration>6:48</itunes:duration>
    </item>
    <item>
      <title>#334 Compass &amp; CSS Sprites</title>
      <description>Compass improves the Sass experience by providing useful mixins, functions, and more. You will also learn how to make CSS sprites with it in this episode.</description>
      <pubDate>Wed, 21 Mar 2012 00:00:00 -0700</pubDate>
      <enclosure url="http://media.railscasts.com/assets/episodes/videos/334-compass-css-sprites.m4v" length="14894340" type="video/mp4"/>
      <link>http://railscasts.com/episodes/334-compass-css-sprites</link>
      <guid isPermaLink="false">compass-css-sprites</guid>
      <itunes:author>Ryan Bates</itunes:author>
      <itunes:subtitle>Compass improves the Sass experience by providing useful mixins, functions, and more. You will also learn how to make CSS sprites with it in this e...</itunes:subtitle>
      <itunes:summary>Compass improves the Sass experience by providing useful mixins, functions, and more. You will also learn how to make CSS sprites with it in this episode.</itunes:summary>
      <itunes:explicit>no</itunes:explicit>
      <itunes:duration>9:50</itunes:duration>
    </item>
    <item>
      <title>#332 Refinery CMS Basics</title>
      <description>If you need to quickly create an informational site that can be easily edited, consider using a content management system. Here I show how to build a site using Refinery CMS.</description>
      <pubDate>Wed, 14 Mar 2012 00:00:00 -0700</pubDate>
      <enclosure url="http://media.railscasts.com/assets/episodes/videos/332-refinery-cms-basics.m4v" length="17098337" type="video/mp4"/>
      <link>http://railscasts.com/episodes/332-refinery-cms-basics</link>
      <guid isPermaLink="false">refinery-cms-basics</guid>
      <itunes:author>Ryan Bates</itunes:author>
      <itunes:subtitle>If you need to quickly create an informational site that can be easily edited, consider using a content management system. Here I show how to build...</itunes:subtitle>
      <itunes:summary>If you need to quickly create an informational site that can be easily edited, consider using a content management system. Here I show how to build a site using Refinery CMS.</itunes:summary>
      <itunes:explicit>no</itunes:explicit>
      <itunes:duration>11:26</itunes:duration>
    </item>
    <item>
      <title>#330 Better Sass with Bourbon</title>
      <description>If you are tired of the browser vendor prefixes in CSS, check out Bourbon. It provides Sass mixins and functions to make CSS more convenient.</description>
      <pubDate>Wed, 07 Mar 2012 00:00:00 -0800</pubDate>
      <enclosure url="http://media.railscasts.com/assets/episodes/videos/330-better-sass-with-bourbon.m4v" length="9832409" type="video/mp4"/>
      <link>http://railscasts.com/episodes/330-better-sass-with-bourbon</link>
      <guid isPermaLink="false">better-sass-with-bourbon</guid>
      <itunes:author>Ryan Bates</itunes:author>
      <itunes:subtitle>If you are tired of the browser vendor prefixes in CSS, check out Bourbon. It provides Sass mixins and functions to make CSS more convenient.</itunes:subtitle>
      <itunes:summary>If you are tired of the browser vendor prefixes in CSS, check out Bourbon. It provides Sass mixins and functions to make CSS more convenient.</itunes:summary>
      <itunes:explicit>no</itunes:explicit>
      <itunes:duration>7:19</itunes:duration>
    </item>
    <item>
      <title>#328 Twitter Bootstrap Basics</title>
      <description>Twitter Bootstrap can help make beautiful web apps quickly by providing you with useful CSS and JavaScript. Here you will learn how to include it into Rails with the twitter-bootstrap-rails gem.</description>
      <pubDate>Tue, 28 Feb 2012 00:00:00 -0800</pubDate>
      <enclosure url="http://media.railscasts.com/assets/episodes/videos/328-twitter-bootstrap-basics.m4v" length="15136245" type="video/mp4"/>
      <link>http://railscasts.com/episodes/328-twitter-bootstrap-basics</link>
      <guid isPermaLink="false">twitter-bootstrap-basics</guid>
      <itunes:author>Ryan Bates</itunes:author>
      <itunes:subtitle>Twitter Bootstrap can help make beautiful web apps quickly by providing you with useful CSS and JavaScript. Here you will learn how to include it i...</itunes:subtitle>
      <itunes:summary>Twitter Bootstrap can help make beautiful web apps quickly by providing you with useful CSS and JavaScript. Here you will learn how to include it into Rails with the twitter-bootstrap-rails gem.</itunes:summary>
      <itunes:explicit>no</itunes:explicit>
      <itunes:duration>10:11</itunes:duration>
    </item>
    <item>
      <title>#326 ActiveAttr</title>
      <description>ActiveAttr provides what Active Model left out. If you need to create a table-less model with features similar to Active Record, watch this episode.</description>
      <pubDate>Tue, 21 Feb 2012 00:00:00 -0800</pubDate>
      <enclosure url="http://media.railscasts.com/assets/episodes/videos/326-activeattr.m4v" length="7891322" type="video/mp4"/>
      <link>http://railscasts.com/episodes/326-activeattr</link>
      <guid isPermaLink="false">activeattr</guid>
      <itunes:author>Ryan Bates</itunes:author>
      <itunes:subtitle>ActiveAttr provides what Active Model left out. If you need to create a table-less model with features similar to Active Record, watch this episode.</itunes:subtitle>
      <itunes:summary>ActiveAttr provides what Active Model left out. If you need to create a table-less model with features similar to Active Record, watch this episode.</itunes:summary>
      <itunes:explicit>no</itunes:explicit>
      <itunes:duration>5:24</itunes:duration>
    </item>
    <item>
      <title>#324 Passing Data to JavaScript</title>
      <description>There are a variety of ways to pass variables from a Rails application to JavaScript. Here I show three techniques: a script tag, a data attribute, and the Gon gem.</description>
      <pubDate>Mon, 13 Feb 2012 00:00:00 -0800</pubDate>
      <enclosure url="http://media.railscasts.com/assets/episodes/videos/324-passing-data-to-javascript.m4v" length="7792007" type="video/mp4"/>
      <link>http://railscasts.com/episodes/324-passing-data-to-javascript</link>
      <guid isPermaLink="false">passing-data-to-javascript</guid>
      <itunes:author>Ryan Bates</itunes:author>
      <itunes:subtitle>There are a variety of ways to pass variables from a Rails application to JavaScript. Here I show three techniques: a script tag, a data attribute,...</itunes:subtitle>
      <itunes:summary>There are a variety of ways to pass variables from a Rails application to JavaScript. Here I show three techniques: a script tag, a data attribute, and the Gon gem.</itunes:summary>
      <itunes:explicit>no</itunes:explicit>
      <itunes:duration>6:48</itunes:duration>
    </item>
    <item>
      <title>#322 RABL</title>
      <description>RABL - Ruby API Builder Language - provides a DSL for generating JSON or XML responses in a Ruby application. Learn how to share and configure complex JSON data in this episode.</description>
      <pubDate>Wed, 08 Feb 2012 00:00:00 -0800</pubDate>
      <enclosure url="http://media.railscasts.com/assets/episodes/videos/322-rabl.m4v" length="10695951" type="video/mp4"/>
      <link>http://railscasts.com/episodes/322-rabl</link>
      <guid isPermaLink="false">rabl</guid>
      <itunes:author>Ryan Bates</itunes:author>
      <itunes:subtitle>RABL - Ruby API Builder Language - provides a DSL for generating JSON or XML responses in a Ruby application. Learn how to share and configure comp...</itunes:subtitle>
      <itunes:summary>RABL - Ruby API Builder Language - provides a DSL for generating JSON or XML responses in a Ruby application. Learn how to share and configure complex JSON data in this episode.</itunes:summary>
      <itunes:explicit>no</itunes:explicit>
      <itunes:duration>8:59</itunes:duration>
    </item>
    <item>
      <title>#320 Jbuilder</title>
      <description>Jbuilder provides a DSL for generating JSON. It includes a template engine which allows you to create complex responses with helpers and conditions.</description>
      <pubDate>Mon, 30 Jan 2012 00:00:00 -0800</pubDate>
      <enclosure url="http://media.railscasts.com/assets/episodes/videos/320-jbuilder.m4v" length="10985271" type="video/mp4"/>
      <link>http://railscasts.com/episodes/320-jbuilder</link>
      <guid isPermaLink="false">jbuilder</guid>
      <itunes:author>Ryan Bates</itunes:author>
      <itunes:subtitle>Jbuilder provides a DSL for generating JSON. It includes a template engine which allows you to create complex responses with helpers and conditions.</itunes:subtitle>
      <itunes:summary>Jbuilder provides a DSL for generating JSON. It includes a template engine which allows you to create complex responses with helpers and conditions.</itunes:summary>
      <itunes:explicit>no</itunes:explicit>
      <itunes:duration>8:17</itunes:duration>
    </item>
    <item>
      <title>#318 Upgrading to Rails 3.2</title>
      <description>Rails 3.2 sports many new features including automatic explain queries, tagged logging, key-value store in Active Record, improved migration generator and more. Learn all about these new features in this episode.</description>
      <pubDate>Mon, 23 Jan 2012 00:00:00 -0800</pubDate>
      <enclosure url="http://media.railscasts.com/assets/episodes/videos/318-upgrading-to-rails-3-2.m4v" length="13039590" type="video/mp4"/>
      <link>http://railscasts.com/episodes/318-upgrading-to-rails-3-2</link>
      <guid isPermaLink="false">upgrading-to-rails-3-2</guid>
      <itunes:author>Ryan Bates</itunes:author>
      <itunes:subtitle>Rails 3.2 sports many new features including automatic explain queries, tagged logging, key-value store in Active Record, improved migration genera...</itunes:subtitle>
      <itunes:summary>Rails 3.2 sports many new features including automatic explain queries, tagged logging, key-value store in Active Record, improved migration generator and more. Learn all about these new features in this episode.</itunes:summary>
      <itunes:explicit>no</itunes:explicit>
      <itunes:duration>9:45</itunes:duration>
    </item>
    <item>
      <title>#316 Private Pub</title>
      <description>Private Pub makes it easier than ever to publish and subscribe to real-time events in a Rails app. You can use publish_to with a block of JavaScript or supply a hash for use with JSON.</description>
      <pubDate>Mon, 16 Jan 2012 00:00:00 -0800</pubDate>
      <enclosure url="http://media.railscasts.com/assets/episodes/videos/316-private-pub.m4v" length="8677540" type="video/mp4"/>
      <link>http://railscasts.com/episodes/316-private-pub</link>
      <guid isPermaLink="false">private-pub</guid>
      <itunes:author>Ryan Bates</itunes:author>
      <itunes:subtitle>Private Pub makes it easier than ever to publish and subscribe to real-time events in a Rails app. You can use publish_to with a block of JavaScrip...</itunes:subtitle>
      <itunes:summary>Private Pub makes it easier than ever to publish and subscribe to real-time events in a Rails app. You can use publish_to with a block of JavaScript or supply a hash for use with JSON.</itunes:summary>
      <itunes:explicit>no</itunes:explicit>
      <itunes:duration>7:34</itunes:duration>
    </item>
    <item>
      <title>#314 Pretty URLs with FriendlyId</title>
      <description>If you are tired of model ids in the URL, overriding to_param can only get you so far. The friendly_id plugin can help by making it easy to generate a URL slug and maintain a history.</description>
      <pubDate>Mon, 09 Jan 2012 00:00:00 -0800</pubDate>
      <enclosure url="http://media.railscasts.com/assets/episodes/videos/314-pretty-urls-with-friendlyid.m4v" length="9915689" type="video/mp4"/>
      <link>http://railscasts.com/episodes/314-pretty-urls-with-friendlyid</link>
      <guid isPermaLink="false">pretty-urls-with-friendlyid</guid>
      <itunes:author>Ryan Bates</itunes:author>
      <itunes:subtitle>If you are tired of model ids in the URL, overriding to_param can only get you so far. The friendly_id plugin can help by making it easy to generat...</itunes:subtitle>
      <itunes:summary>If you are tired of model ids in the URL, overriding to_param can only get you so far. The friendly_id plugin can help by making it easy to generate a URL slug and maintain a history.</itunes:summary>
      <itunes:explicit>no</itunes:explicit>
      <itunes:duration>7:43</itunes:duration>
    </item>
    <item>
      <title>#312 Sending HTML Email</title>
      <description>HTML email can be difficult to code because any CSS should be made inline. Here I present a few tools for doing this including the premailer-rails3 and roadie gems.</description>
      <pubDate>Mon, 02 Jan 2012 00:00:00 -0800</pubDate>
      <enclosure url="http://media.railscasts.com/assets/episodes/videos/312-sending-html-email.m4v" length="9639109" type="video/mp4"/>
      <link>http://railscasts.com/episodes/312-sending-html-email</link>
      <guid isPermaLink="false">sending-html-email</guid>
      <itunes:author>Ryan Bates</itunes:author>
      <itunes:subtitle>HTML email can be difficult to code because any CSS should be made inline. Here I present a few tools for doing this including the premailer-rails3...</itunes:subtitle>
      <itunes:summary>HTML email can be difficult to code because any CSS should be made inline. Here I present a few tools for doing this including the premailer-rails3 and roadie gems.</itunes:summary>
      <itunes:explicit>no</itunes:explicit>
      <itunes:duration>5:42</itunes:duration>
    </item>
    <item>
      <title>#310 Getting Started with Rails</title>
      <description>Learning Ruby on Rails can be overwhelming, especially if you are new to programming. Here I will take you on a tour through various resources to help get started with Rails.</description>
      <pubDate>Mon, 26 Dec 2011 00:00:00 -0800</pubDate>
      <enclosure url="http://media.railscasts.com/assets/episodes/videos/310-getting-started-with-rails.m4v" length="13642562" type="video/mp4"/>
      <link>http://railscasts.com/episodes/310-getting-started-with-rails</link>
      <guid isPermaLink="false">getting-started-with-rails</guid>
      <itunes:author>Ryan Bates</itunes:author>
      <itunes:subtitle>Learning Ruby on Rails can be overwhelming, especially if you are new to programming. Here I will take you on a tour through various resources to h...</itunes:subtitle>
      <itunes:summary>Learning Ruby on Rails can be overwhelming, especially if you are new to programming. Here I will take you on a tour through various resources to help get started with Rails.</itunes:summary>
      <itunes:explicit>no</itunes:explicit>
      <itunes:duration>7:56</itunes:duration>
    </item>
    <item>
      <title>#308 Oh My ZSH</title>
      <description>As Rails developers, we frequently use the command line. Here I will show how to switch to Z Shell using Oh My ZSH including how to make your own theme and plugins.</description>
      <pubDate>Mon, 19 Dec 2011 00:00:00 -0800</pubDate>
      <enclosure url="http://media.railscasts.com/assets/episodes/videos/308-oh-my-zsh.m4v" length="11717642" type="video/mp4"/>
      <link>http://railscasts.com/episodes/308-oh-my-zsh</link>
      <guid isPermaLink="false">oh-my-zsh</guid>
      <itunes:author>Ryan Bates</itunes:author>
      <itunes:subtitle>As Rails developers, we frequently use the command line. Here I will show how to switch to Z Shell using Oh My ZSH including how to make your own t...</itunes:subtitle>
      <itunes:summary>As Rails developers, we frequently use the command line. Here I will show how to switch to Z Shell using Oh My ZSH including how to make your own theme and plugins.</itunes:summary>
      <itunes:explicit>no</itunes:explicit>
      <itunes:duration>9:11</itunes:duration>
    </item>
    <item>
      <title>#306 ElasticSearch Part 1</title>
      <description>Add full text searching using ElasticSearch and Tire. Here I will show the steps involved in adding this search to an existing application. This is the first part in a two part series.</description>
      <pubDate>Mon, 12 Dec 2011 00:00:00 -0800</pubDate>
      <enclosure url="http://media.railscasts.com/assets/episodes/videos/306-elasticsearch-part-1.m4v" length="16897561" type="video/mp4"/>
      <link>http://railscasts.com/episodes/306-elasticsearch-part-1</link>
      <guid isPermaLink="false">elasticsearch-part-1</guid>
      <itunes:author>Ryan Bates</itunes:author>
      <itunes:subtitle>Add full text searching using ElasticSearch and Tire. Here I will show the steps involved in adding this search to an existing application. This is...</itunes:subtitle>
      <itunes:summary>Add full text searching using ElasticSearch and Tire. Here I will show the steps involved in adding this search to an existing application. This is the first part in a two part series.</itunes:summary>
      <itunes:explicit>no</itunes:explicit>
      <itunes:duration>9:58</itunes:duration>
    </item>
    <item>
      <title>#304 OmniAuth Identity</title>
      <description>With the release of OmniAuth 1.0 there is a new Identity strategy which allows users to register/login with a password if they don't want to use an external provider.</description>
      <pubDate>Mon, 05 Dec 2011 00:00:00 -0800</pubDate>
      <enclosure url="http://media.railscasts.com/assets/episodes/videos/304-omniauth-identity.m4v" length="13738478" type="video/mp4"/>
      <link>http://railscasts.com/episodes/304-omniauth-identity</link>
      <guid isPermaLink="false">omniauth-identity</guid>
      <itunes:author>Ryan Bates</itunes:author>
      <itunes:subtitle>With the release of OmniAuth 1.0 there is a new Identity strategy which allows users to register/login with a password if they don't want to use an...</itunes:subtitle>
      <itunes:summary>With the release of OmniAuth 1.0 there is a new Identity strategy which allows users to register/login with a password if they don't want to use an external provider.</itunes:summary>
      <itunes:explicit>no</itunes:explicit>
      <itunes:duration>11:01</itunes:duration>
    </item>
    <item>
      <title>#302 In-Place Editing</title>
      <description>Edit an attribute in-place without leaving a page using the Best In Place gem. Learn how to add validations and support for various field types.</description>
      <pubDate>Mon, 28 Nov 2011 00:00:00 -0800</pubDate>
      <enclosure url="http://media.railscasts.com/assets/episodes/videos/302-in-place-editing.m4v" length="10351668" type="video/mp4"/>
      <link>http://railscasts.com/episodes/302-in-place-editing</link>
      <guid isPermaLink="false">in-place-editing</guid>
      <itunes:author>Ryan Bates</itunes:author>
      <itunes:subtitle>Edit an attribute in-place without leaving a page using the Best In Place gem. Learn how to add validations and support for various field types.</itunes:subtitle>
      <itunes:summary>Edit an attribute in-place without leaving a page using the Best In Place gem. Learn how to add validations and support for various field types.</itunes:summary>
      <itunes:explicit>no</itunes:explicit>
      <itunes:duration>8:20</itunes:duration>
    </item>
    <item>
      <title>#300 Contributing to Open Source</title>
      <description>GitHub makes it easier than ever to contribute to open source with pull requests. Here I show how to submit a pull request to the VCR project.</description>
      <pubDate>Mon, 21 Nov 2011 00:00:00 -0800</pubDate>
      <enclosure url="http://media.railscasts.com/assets/episodes/videos/300-contributing-to-open-source.m4v" length="13956770" type="video/mp4"/>
      <link>http://railscasts.com/episodes/300-contributing-to-open-source</link>
      <guid isPermaLink="false">contributing-to-open-source</guid>
      <itunes:author>Ryan Bates</itunes:author>
      <itunes:subtitle>GitHub makes it easier than ever to contribute to open source with pull requests. Here I show how to submit a pull request to the VCR project.</itunes:subtitle>
      <itunes:summary>GitHub makes it easier than ever to contribute to open source with pull requests. Here I show how to submit a pull request to the VCR project.</itunes:summary>
      <itunes:explicit>no</itunes:explicit>
      <itunes:duration>9:22</itunes:duration>
    </item>
    <item>
      <title>#298 Getting Started with Spree</title>
      <description>Spree allows you to quickly turn a Rails project into a full eCommerce application. Here I show how to set it up and configure the look and feel of the store.</description>
      <pubDate>Mon, 14 Nov 2011 00:00:00 -0800</pubDate>
      <enclosure url="http://media.railscasts.com/assets/episodes/videos/298-getting-started-with-spree.m4v" length="15942945" type="video/mp4"/>
      <link>http://railscasts.com/episodes/298-getting-started-with-spree</link>
      <guid isPermaLink="false">getting-started-with-spree</guid>
      <itunes:author>Ryan Bates</itunes:author>
      <itunes:subtitle>Spree allows you to quickly turn a Rails project into a full eCommerce application. Here I show how to set it up and configure the look and feel of...</itunes:subtitle>
      <itunes:summary>Spree allows you to quickly turn a Rails project into a full eCommerce application. Here I show how to set it up and configure the look and feel of the store.</itunes:summary>
      <itunes:explicit>no</itunes:explicit>
      <itunes:duration>10:53</itunes:duration>
    </item>
    <item>
      <title>#296 Mercury Editor</title>
      <description>Mercury allows you to edit a section of HTML directly in the web browser through a WYSIWYG editor. Here I show how to integrate Mercury into a Rails app and save the changes back to the database.</description>
      <pubDate>Mon, 07 Nov 2011 00:00:00 -0800</pubDate>
      <enclosure url="http://media.railscasts.com/assets/episodes/videos/296-mercury-editor.m4v" length="16118283" type="video/mp4"/>
      <link>http://railscasts.com/episodes/296-mercury-editor</link>
      <guid isPermaLink="false">mercury-editor</guid>
      <itunes:author>Ryan Bates</itunes:author>
      <itunes:subtitle>Mercury allows you to edit a section of HTML directly in the web browser through a WYSIWYG editor. Here I show how to integrate Mercury into a Rail...</itunes:subtitle>
      <itunes:summary>Mercury allows you to edit a section of HTML directly in the web browser through a WYSIWYG editor. Here I show how to integrate Mercury into a Rails app and save the changes back to the database.</itunes:summary>
      <itunes:explicit>no</itunes:explicit>
      <itunes:duration>11:09</itunes:duration>
    </item>
    <item>
      <title>#294 Playing with PJAX</title>
      <description>PJAX allows you to quickly update a section of a page using AJAX with automatic pushState support. Here I show how to use both pjax_rails and rack-pjax gems.</description>
      <pubDate>Mon, 31 Oct 2011 00:00:00 -0700</pubDate>
      <enclosure url="http://media.railscasts.com/assets/episodes/videos/294-playing-with-pjax.m4v" length="9929798" type="video/mp4"/>
      <link>http://railscasts.com/episodes/294-playing-with-pjax</link>
      <guid isPermaLink="false">playing-with-pjax</guid>
      <itunes:author>Ryan Bates</itunes:author>
      <itunes:subtitle>PJAX allows you to quickly update a section of a page using AJAX with automatic pushState support. Here I show how to use both pjax_rails and rack-...</itunes:subtitle>
      <itunes:summary>PJAX allows you to quickly update a section of a page using AJAX with automatic pushState support. Here I show how to use both pjax_rails and rack-pjax gems.</itunes:summary>
      <itunes:explicit>no</itunes:explicit>
      <itunes:duration>8:38</itunes:duration>
    </item>
    <item>
      <title>#292 Virtual Machines with Vagrant</title>
      <description>Vagrant allows you to run your Rails application and all of its dependencies in a portable, sharable environment. Use for development, set it up as a staging server, or experiment with a production setup.</description>
      <pubDate>Mon, 24 Oct 2011 00:00:00 -0700</pubDate>
      <enclosure url="http://media.railscasts.com/assets/episodes/videos/292-virtual-machines-with-vagrant.m4v" length="14242251" type="video/mp4"/>
      <link>http://railscasts.com/episodes/292-virtual-machines-with-vagrant</link>
      <guid isPermaLink="false">virtual-machines-with-vagrant</guid>
      <itunes:author>Ryan Bates</itunes:author>
      <itunes:subtitle>Vagrant allows you to run your Rails application and all of its dependencies in a portable, sharable environment. Use for development, set it up as...</itunes:subtitle>
      <itunes:summary>Vagrant allows you to run your Rails application and all of its dependencies in a portable, sharable environment. Use for development, set it up as a staging server, or experiment with a production setup.</itunes:summary>
      <itunes:explicit>no</itunes:explicit>
      <itunes:duration>11:30</itunes:duration>
    </item>
    <item>
      <title>#290 SOAP with Savon</title>
      <description>Communicating with a SOAP API can be a daunting task. Savon makes this easier by presenting the SOAP API through a Ruby interface.</description>
      <pubDate>Mon, 17 Oct 2011 00:00:00 -0700</pubDate>
      <enclosure url="http://media.railscasts.com/assets/episodes/videos/290-soap-with-savon.m4v" length="13923928" type="video/mp4"/>
      <link>http://railscasts.com/episodes/290-soap-with-savon</link>
      <guid isPermaLink="false">soap-with-savon</guid>
      <itunes:author>Ryan Bates</itunes:author>
      <itunes:subtitle>Communicating with a SOAP API can be a daunting task. Savon makes this easier by presenting the SOAP API through a Ruby interface.</itunes:subtitle>
      <itunes:summary>Communicating with a SOAP API can be a daunting task. Savon makes this easier by presenting the SOAP API through a Ruby interface.</itunes:summary>
      <itunes:explicit>no</itunes:explicit>
      <itunes:duration>9:52</itunes:duration>
    </item>
    <item>
      <title>#288 Billing with Stripe</title>
      <description>Stripe is a full-stack payment solution with very reasonable pricing and is easy to setup. See how to add it to a Rails application here. Currently only available in the US.</description>
      <pubDate>Mon, 10 Oct 2011 00:00:00 -0700</pubDate>
      <enclosure url="http://media.railscasts.com/assets/episodes/videos/288-billing-with-stripe.m4v" length="22104707" type="video/mp4"/>
      <link>http://railscasts.com/episodes/288-billing-with-stripe</link>
      <guid isPermaLink="false">billing-with-stripe</guid>
      <itunes:author>Ryan Bates</itunes:author>
      <itunes:subtitle>Stripe is a full-stack payment solution with very reasonable pricing and is easy to setup. See how to add it to a Rails application here. Currently...</itunes:subtitle>
      <itunes:summary>Stripe is a full-stack payment solution with very reasonable pricing and is easy to setup. See how to add it to a Rails application here. Currently only available in the US.</itunes:summary>
      <itunes:explicit>no</itunes:explicit>
      <itunes:duration>16:36</itunes:duration>
    </item>
    <item>
      <title>#286 Draper</title>
      <description>Clean up complex view logic using Draper. This gem provides decorators (much like presenters) which bundles view logic in an object oriented fashion. In this episode I do a step-by-step refactoring of a complex template into a decorator.</description>
      <pubDate>Mon, 03 Oct 2011 00:00:00 -0700</pubDate>
      <enclosure url="http://media.railscasts.com/assets/episodes/videos/286-draper.m4v" length="15323689" type="video/mp4"/>
      <link>http://railscasts.com/episodes/286-draper</link>
      <guid isPermaLink="false">draper</guid>
      <itunes:author>Ryan Bates</itunes:author>
      <itunes:subtitle>Clean up complex view logic using Draper. This gem provides decorators (much like presenters) which bundles view logic in an object oriented fashio...</itunes:subtitle>
      <itunes:summary>Clean up complex view logic using Draper. This gem provides decorators (much like presenters) which bundles view logic in an object oriented fashion. In this episode I do a step-by-step refactoring of a complex template into a decorator.</itunes:summary>
      <itunes:explicit>no</itunes:explicit>
      <itunes:duration>12:10</itunes:duration>
    </item>
    <item>
      <title>#285 Spork</title>
      <description>Spork improves the loading time of your test suite by starting up your Rails application once in the background. Use it with Guard for the ultimate combo in fast feedback while doing TDD.</description>
      <pubDate>Mon, 26 Sep 2011 00:00:00 -0700</pubDate>
      <enclosure url="http://media.railscasts.com/assets/episodes/videos/285-spork.m4v" length="12055440" type="video/mp4"/>
      <link>http://railscasts.com/episodes/285-spork</link>
      <guid isPermaLink="false">spork</guid>
      <itunes:author>Ryan Bates</itunes:author>
      <itunes:subtitle>Spork improves the loading time of your test suite by starting up your Rails application once in the background. Use it with Guard for the ultimate...</itunes:subtitle>
      <itunes:summary>Spork improves the loading time of your test suite by starting up your Rails application once in the background. Use it with Guard for the ultimate combo in fast feedback while doing TDD.</itunes:summary>
      <itunes:explicit>no</itunes:explicit>
      <itunes:duration>9:19</itunes:duration>
    </item>
    <item>
      <title>#284 Active Admin</title>
      <description>Active Admin allows you to quickly build an admin interface with just a few commands. Not only does it look great, but it is very customizable as shown in this episode.</description>
      <pubDate>Mon, 19 Sep 2011 00:00:00 -0700</pubDate>
      <enclosure url="http://media.railscasts.com/assets/episodes/videos/284-active-admin.m4v" length="15621743" type="video/mp4"/>
      <link>http://railscasts.com/episodes/284-active-admin</link>
      <guid isPermaLink="false">active-admin</guid>
      <itunes:author>Ryan Bates</itunes:author>
      <itunes:subtitle>Active Admin allows you to quickly build an admin interface with just a few commands. Not only does it look great, but it is very customizable as s...</itunes:subtitle>
      <itunes:summary>Active Admin allows you to quickly build an admin interface with just a few commands. Not only does it look great, but it is very customizable as shown in this episode.</itunes:summary>
      <itunes:explicit>no</itunes:explicit>
      <itunes:duration>12:43</itunes:duration>
    </item>
    <item>
      <title>#283 Authentication with Sorcery</title>
      <description>Sorcery is a full-featured, modular solution to authentication which leaves the controller and view layers up to you.</description>
      <pubDate>Mon, 12 Sep 2011 00:00:00 -0700</pubDate>
      <enclosure url="http://media.railscasts.com/assets/episodes/videos/283-authentication-with-sorcery.m4v" length="13436015" type="video/mp4"/>
      <link>http://railscasts.com/episodes/283-authentication-with-sorcery</link>
      <guid isPermaLink="false">authentication-with-sorcery</guid>
      <itunes:author>Ryan Bates</itunes:author>
      <itunes:subtitle>Sorcery is a full-featured, modular solution to authentication which leaves the controller and view layers up to you.</itunes:subtitle>
      <itunes:summary>Sorcery is a full-featured, modular solution to authentication which leaves the controller and view layers up to you.</itunes:summary>
      <itunes:explicit>no</itunes:explicit>
      <itunes:duration>10:40</itunes:duration>
    </item>
    <item>
      <title>#282 Upgrading to Rails 3.1</title>
      <description>It is incredibly easy to upgrade to Rails 3.1, but if you want to take advantage of the asset pipeline you will need to put in some extra effort. Have no fear because I walk you through each of the necessary steps in this episode.</description>
      <pubDate>Mon, 05 Sep 2011 00:00:00 -0700</pubDate>
      <enclosure url="http://media.railscasts.com/assets/episodes/videos/282-upgrading-to-rails-3-1.m4v" length="13273104" type="video/mp4"/>
      <link>http://railscasts.com/episodes/282-upgrading-to-rails-3-1</link>
      <guid isPermaLink="false">upgrading-to-rails-3-1</guid>
      <itunes:author>Ryan Bates</itunes:author>
      <itunes:subtitle>It is incredibly easy to upgrade to Rails 3.1, but if you want to take advantage of the asset pipeline you will need to put in some extra effort. H...</itunes:subtitle>
      <itunes:summary>It is incredibly easy to upgrade to Rails 3.1, but if you want to take advantage of the asset pipeline you will need to put in some extra effort. Have no fear because I walk you through each of the necessary steps in this episode.</itunes:summary>
      <itunes:explicit>no</itunes:explicit>
      <itunes:duration>8:42</itunes:duration>
    </item>
    <item>
      <title>#281 Foreman</title>
      <description>Foreman can help manage multiple processes that your Rails app depends upon when running in development. It also provides an export command to move them into production.</description>
      <pubDate>Mon, 29 Aug 2011 00:00:00 -0700</pubDate>
      <enclosure url="http://media.railscasts.com/assets/episodes/videos/281-foreman.m4v" length="4629167" type="video/mp4"/>
      <link>http://railscasts.com/episodes/281-foreman</link>
      <guid isPermaLink="false">foreman</guid>
      <itunes:author>Ryan Bates</itunes:author>
      <itunes:subtitle>Foreman can help manage multiple processes that your Rails app depends upon when running in development. It also provides an export command to move...</itunes:subtitle>
      <itunes:summary>Foreman can help manage multiple processes that your Rails app depends upon when running in development. It also provides an export command to move them into production.</itunes:summary>
      <itunes:explicit>no</itunes:explicit>
      <itunes:duration>4:21</itunes:duration>
    </item>
    <item>
      <title>#280 Pry with Rails</title>
      <description>Pry is an alternative to IRB and sports many great features. Here I show how to integrate it into a Rails app, and how it can aid in debugging.</description>
      <pubDate>Mon, 22 Aug 2011 00:00:00 -0700</pubDate>
      <enclosure url="http://media.railscasts.com/assets/episodes/videos/280-pry-with-rails.m4v" length="10214964" type="video/mp4"/>
      <link>http://railscasts.com/episodes/280-pry-with-rails</link>
      <guid isPermaLink="false">pry-with-rails</guid>
      <itunes:author>Ryan Bates</itunes:author>
      <itunes:subtitle>Pry is an alternative to IRB and sports many great features. Here I show how to integrate it into a Rails app, and how it can aid in debugging.</itunes:subtitle>
      <itunes:summary>Pry is an alternative to IRB and sports many great features. Here I show how to integrate it into a Rails app, and how it can aid in debugging.</itunes:summary>
      <itunes:explicit>no</itunes:explicit>
      <itunes:duration>8:08</itunes:duration>
    </item>
    <item>
      <title>#279 Understanding the Asset Pipeline</title>
      <description>The asset pipeline is probably the biggest feature in Rails 3.1, but it can seem like magic at first. Here I dive into exactly how the asset pipeline works.</description>
      <pubDate>Mon, 15 Aug 2011 00:00:00 -0700</pubDate>
      <enclosure url="http://media.railscasts.com/assets/episodes/videos/279-understanding-the-asset-pipeline.m4v" length="14164096" type="video/mp4"/>
      <link>http://railscasts.com/episodes/279-understanding-the-asset-pipeline</link>
      <guid isPermaLink="false">understanding-the-asset-pipeline</guid>
      <itunes:author>Ryan Bates</itunes:author>
      <itunes:subtitle>The asset pipeline is probably the biggest feature in Rails 3.1, but it can seem like magic at first. Here I dive into exactly how the asset pipeli...</itunes:subtitle>
      <itunes:summary>The asset pipeline is probably the biggest feature in Rails 3.1, but it can seem like magic at first. Here I dive into exactly how the asset pipeline works.</itunes:summary>
      <itunes:explicit>no</itunes:explicit>
      <itunes:duration>11:22</itunes:duration>
    </item>
    <item>
      <title>#278 Search with Sunspot</title>
      <description>Sunspot makes it easy to do full text searching through Solr. Here I show how to search on various attributes and add facets for filtering the search further.</description>
      <pubDate>Mon, 08 Aug 2011 00:00:00 -0700</pubDate>
      <enclosure url="http://media.railscasts.com/assets/episodes/videos/278-search-with-sunspot.m4v" length="12348185" type="video/mp4"/>
      <link>http://railscasts.com/episodes/278-search-with-sunspot</link>
      <guid isPermaLink="false">search-with-sunspot</guid>
      <itunes:author>Ryan Bates</itunes:author>
      <itunes:subtitle>Sunspot makes it easy to do full text searching through Solr. Here I show how to search on various attributes and add facets for filtering the sear...</itunes:subtitle>
      <itunes:summary>Sunspot makes it easy to do full text searching through Solr. Here I show how to search on various attributes and add facets for filtering the search further.</itunes:summary>
      <itunes:explicit>no</itunes:explicit>
      <itunes:duration>10:22</itunes:duration>
    </item>
    <item>
      <title>#277 Mountable Engines</title>
      <description>Engines are receiving a major update in Rails 3.1. You can mount them at any path, embed assets, run generators and more. See how in this episode.</description>
      <pubDate>Mon, 01 Aug 2011 00:00:00 -0700</pubDate>
      <enclosure url="http://media.railscasts.com/assets/episodes/videos/277-mountable-engines.m4v" length="13290793" type="video/mp4"/>
      <link>http://railscasts.com/episodes/277-mountable-engines</link>
      <guid isPermaLink="false">mountable-engines</guid>
      <itunes:author>Ryan Bates</itunes:author>
      <itunes:subtitle>Engines are receiving a major update in Rails 3.1. You can mount them at any path, embed assets, run generators and more. See how in this episode.</itunes:subtitle>
      <itunes:summary>Engines are receiving a major update in Rails 3.1. You can mount them at any path, embed assets, run generators and more. See how in this episode.</itunes:summary>
      <itunes:explicit>no</itunes:explicit>
      <itunes:duration>13:03</itunes:duration>
    </item>
    <item>
      <title>#276 Testing Time &amp; Web Requests</title>
      <description>It can be difficult to test code that deals with the current time or an external web request. Here I show you how to do both using the Timecop and FakeWeb gems.</description>
      <pubDate>Mon, 25 Jul 2011 00:00:00 -0700</pubDate>
      <enclosure url="http://media.railscasts.com/assets/episodes/videos/276-testing-time-web-requests.m4v" length="10288500" type="video/mp4"/>
      <link>http://railscasts.com/episodes/276-testing-time-web-requests</link>
      <guid isPermaLink="false">testing-time-web-requests</guid>
      <itunes:author>Ryan Bates</itunes:author>
      <itunes:subtitle>It can be difficult to test code that deals with the current time or an external web request. Here I show you how to do both using the Timecop and ...</itunes:subtitle>
      <itunes:summary>It can be difficult to test code that deals with the current time or an external web request. Here I show you how to do both using the Timecop and FakeWeb gems.</itunes:summary>
      <itunes:explicit>no</itunes:explicit>
      <itunes:duration>8:57</itunes:duration>
    </item>
    <item>
      <title>#275 How I Test</title>
      <description>Here I show how I would add tests to the password reset feature created in the previous episode. I use RSpec, Capybara, Factory Girl, and Guard to make request, model, and mailer specs.</description>
      <pubDate>Mon, 18 Jul 2011 00:00:00 -0700</pubDate>
      <enclosure url="http://media.railscasts.com/assets/episodes/videos/275-how-i-test.m4v" length="16923684" type="video/mp4"/>
      <link>http://railscasts.com/episodes/275-how-i-test</link>
      <guid isPermaLink="false">how-i-test</guid>
      <itunes:author>Ryan Bates</itunes:author>
      <itunes:subtitle>Here I show how I would add tests to the password reset feature created in the previous episode. I use RSpec, Capybara, Factory Girl, and Guard to ...</itunes:subtitle>
      <itunes:summary>Here I show how I would add tests to the password reset feature created in the previous episode. I use RSpec, Capybara, Factory Girl, and Guard to make request, model, and mailer specs.</itunes:summary>
      <itunes:explicit>no</itunes:explicit>
      <itunes:duration>15:26</itunes:duration>
    </item>
    <item>
      <title>#274 Remember Me &amp; Reset Password</title>
      <description>It is easy to create authentication from scratch, but how do we extend it with more features? Here I add a "remember me" check box and a "forgotten password" link.</description>
      <pubDate>Mon, 11 Jul 2011 00:00:00 -0700</pubDate>
      <enclosure url="http://media.railscasts.com/assets/episodes/videos/274-remember-me-reset-password.m4v" length="12482675" type="video/mp4"/>
      <link>http://railscasts.com/episodes/274-remember-me-reset-password</link>
      <guid isPermaLink="false">remember-me-reset-password</guid>
      <itunes:author>Ryan Bates</itunes:author>
      <itunes:subtitle>It is easy to create authentication from scratch, but how do we extend it with more features? Here I add a "remember me" check box and a "forgotten...</itunes:subtitle>
      <itunes:summary>It is easy to create authentication from scratch, but how do we extend it with more features? Here I add a "remember me" check box and a "forgotten password" link.</itunes:summary>
      <itunes:explicit>no</itunes:explicit>
      <itunes:duration>12:14</itunes:duration>
    </item>
    <item>
      <title>#273 Geocoder</title>
      <description>If you need to work with geographic data, Geocoder is an excellent gem for converting addresses and coordinates, finding nearby locations, determining distances, and more!</description>
      <pubDate>Mon, 04 Jul 2011 00:00:00 -0700</pubDate>
      <enclosure url="http://media.railscasts.com/assets/episodes/videos/273-geocoder.m4v" length="9885271" type="video/mp4"/>
      <link>http://railscasts.com/episodes/273-geocoder</link>
      <guid isPermaLink="false">geocoder</guid>
      <itunes:author>Ryan Bates</itunes:author>
      <itunes:subtitle>If you need to work with geographic data, Geocoder is an excellent gem for converting addresses and coordinates, finding nearby locations, determin...</itunes:subtitle>
      <itunes:summary>If you need to work with geographic data, Geocoder is an excellent gem for converting addresses and coordinates, finding nearby locations, determining distances, and more!</itunes:summary>
      <itunes:explicit>no</itunes:explicit>
      <itunes:duration>8:12</itunes:duration>
    </item>
    <item>
      <title>#272 Markdown with Redcarpet</title>
      <description>Redcarpet is an easy-to-use gem which interprets Markdown. Here I show how to customize it and add syntax highlighting through Pygments and Albino.</description>
      <pubDate>Mon, 27 Jun 2011 00:00:00 -0700</pubDate>
      <enclosure url="http://media.railscasts.com/assets/episodes/videos/272-markdown-with-redcarpet.m4v" length="8127769" type="video/mp4"/>
      <link>http://railscasts.com/episodes/272-markdown-with-redcarpet</link>
      <guid isPermaLink="false">markdown-with-redcarpet</guid>
      <itunes:author>Ryan Bates</itunes:author>
      <itunes:subtitle>Redcarpet is an easy-to-use gem which interprets Markdown. Here I show how to customize it and add syntax highlighting through Pygments and Albino.</itunes:subtitle>
      <itunes:summary>Redcarpet is an easy-to-use gem which interprets Markdown. Here I show how to customize it and add syntax highlighting through Pygments and Albino.</itunes:summary>
      <itunes:explicit>no</itunes:explicit>
      <itunes:duration>6:47</itunes:duration>
    </item>
    <item>
      <title>#271 Resque</title>
      <description>Resque creates background jobs using Redis. It supports multiple queue and comes with an administration interface for monitoring and managing the queues.</description>
      <pubDate>Mon, 20 Jun 2011 00:00:00 -0700</pubDate>
      <enclosure url="http://media.railscasts.com/assets/episodes/videos/271-resque.m4v" length="12728041" type="video/mp4"/>
      <link>http://railscasts.com/episodes/271-resque</link>
      <guid isPermaLink="false">resque</guid>
      <itunes:author>Ryan Bates</itunes:author>
      <itunes:subtitle>Resque creates background jobs using Redis. It supports multiple queue and comes with an administration interface for monitoring and managing the q...</itunes:subtitle>
      <itunes:summary>Resque creates background jobs using Redis. It supports multiple queue and comes with an administration interface for monitoring and managing the queues.</itunes:summary>
      <itunes:explicit>no</itunes:explicit>
      <itunes:duration>12:23</itunes:duration>
    </item>
    <item>
      <title>#270 Authentication in Rails 3.1</title>
      <description>Here I show off three new features in Rails 3.1 that will help with authentication: easier HTTP Basic, SecurePassword in the database, and forcing SSL.</description>
      <pubDate>Mon, 13 Jun 2011 00:00:00 -0700</pubDate>
      <enclosure url="http://media.railscasts.com/assets/episodes/videos/270-authentication-in-rails-3-1.m4v" length="6874370" type="video/mp4"/>
      <link>http://railscasts.com/episodes/270-authentication-in-rails-3-1</link>
      <guid isPermaLink="false">authentication-in-rails-3-1</guid>
      <itunes:author>Ryan Bates</itunes:author>
      <itunes:subtitle>Here I show off three new features in Rails 3.1 that will help with authentication: easier HTTP Basic, SecurePassword in the database, and forcing ...</itunes:subtitle>
      <itunes:summary>Here I show off three new features in Rails 3.1 that will help with authentication: easier HTTP Basic, SecurePassword in the database, and forcing SSL.</itunes:summary>
      <itunes:explicit>no</itunes:explicit>
      <itunes:duration>7:07</itunes:duration>
    </item>
    <item>
      <title>#269 Template Inheritance</title>
      <description>In Rails 3.1 the controller inheritance also applies to the view layer. Here I show how to add an application template which is shared by all views, and a lookup path for overriding templates based on the subdomain.</description>
      <pubDate>Mon, 06 Jun 2011 00:00:00 -0700</pubDate>
      <enclosure url="http://media.railscasts.com/assets/episodes/videos/269-template-inheritance.m4v" length="9200704" type="video/mp4"/>
      <link>http://railscasts.com/episodes/269-template-inheritance</link>
      <guid isPermaLink="false">template-inheritance</guid>
      <itunes:author>Ryan Bates</itunes:author>
      <itunes:subtitle>In Rails 3.1 the controller inheritance also applies to the view layer. Here I show how to add an application template which is shared by all views...</itunes:subtitle>
      <itunes:summary>In Rails 3.1 the controller inheritance also applies to the view layer. Here I show how to add an application template which is shared by all views, and a lookup path for overriding templates based on the subdomain.</itunes:summary>
      <itunes:explicit>no</itunes:explicit>
      <itunes:duration>8:46</itunes:duration>
    </item>
    <item>
      <title>#268 Sass Basics</title>
      <description>Sass extends CSS with variables, nesting, mixins and more. Here I show how to convert plain CSS to SCSS in a Rails 3.1 app.</description>
      <pubDate>Mon, 30 May 2011 00:00:00 -0700</pubDate>
      <enclosure url="http://media.railscasts.com/assets/episodes/videos/268-sass-basics.m4v" length="15712027" type="video/mp4"/>
      <link>http://railscasts.com/episodes/268-sass-basics</link>
      <guid isPermaLink="false">sass-basics</guid>
      <itunes:author>Ryan Bates</itunes:author>
      <itunes:subtitle>Sass extends CSS with variables, nesting, mixins and more. Here I show how to convert plain CSS to SCSS in a Rails 3.1 app.</itunes:subtitle>
      <itunes:summary>Sass extends CSS with variables, nesting, mixins and more. Here I show how to convert plain CSS to SCSS in a Rails 3.1 app.</itunes:summary>
      <itunes:explicit>no</itunes:explicit>
      <itunes:duration>13:06</itunes:duration>
    </item>
    <item>
      <title>#267 CoffeeScript Basics</title>
      <description>CoffeeScript allows you to write JavaScript in a concise, elegant fashion. Here I convert JavaScript code to CoffeeScript in a Rails 3.1 app.</description>
      <pubDate>Mon, 23 May 2011 00:00:00 -0700</pubDate>
      <enclosure url="http://media.railscasts.com/assets/episodes/videos/267-coffeescript-basics.m4v" length="12808267" type="video/mp4"/>
      <link>http://railscasts.com/episodes/267-coffeescript-basics</link>
      <guid isPermaLink="false">coffeescript-basics</guid>
      <itunes:author>Ryan Bates</itunes:author>
      <itunes:subtitle>CoffeeScript allows you to write JavaScript in a concise, elegant fashion. Here I convert JavaScript code to CoffeeScript in a Rails 3.1 app.</itunes:subtitle>
      <itunes:summary>CoffeeScript allows you to write JavaScript in a concise, elegant fashion. Here I convert JavaScript code to CoffeeScript in a Rails 3.1 app.</itunes:summary>
      <itunes:explicit>no</itunes:explicit>
      <itunes:duration>11:04</itunes:duration>
    </item>
    <item>
      <title>#266 HTTP Streaming</title>
      <description>HTTP Streaming allows the browser to start processing the HTML response while the Rails app is still processing the rest of the request.</description>
      <pubDate>Mon, 16 May 2011 00:00:00 -0700</pubDate>
      <enclosure url="http://media.railscasts.com/assets/episodes/videos/266-http-streaming.m4v" length="10583419" type="video/mp4"/>
      <link>http://railscasts.com/episodes/266-http-streaming</link>
      <guid isPermaLink="false">http-streaming</guid>
      <itunes:author>Ryan Bates</itunes:author>
      <itunes:subtitle>HTTP Streaming allows the browser to start processing the HTML response while the Rails app is still processing the rest of the request.</itunes:subtitle>
      <itunes:summary>HTTP Streaming allows the browser to start processing the HTML response while the Rails app is still processing the rest of the request.</itunes:summary>
      <itunes:explicit>no</itunes:explicit>
      <itunes:duration>9:15</itunes:duration>
    </item>
    <item>
      <title>#265 Rails 3.1 Overview</title>
      <description>This is the first episode in a series covering Rails 3.1. Here I show how to install the beta and show some of the new features.</description>
      <pubDate>Mon, 09 May 2011 00:00:00 -0700</pubDate>
      <enclosure url="http://media.railscasts.com/assets/episodes/videos/265-rails-3-1-overview.m4v" length="17153481" type="video/mp4"/>
      <link>http://railscasts.com/episodes/265-rails-3-1-overview</link>
      <guid isPermaLink="false">rails-3-1-overview</guid>
      <itunes:author>Ryan Bates</itunes:author>
      <itunes:subtitle>This is the first episode in a series covering Rails 3.1. Here I show how to install the beta and show some of the new features.</itunes:subtitle>
      <itunes:summary>This is the first episode in a series covering Rails 3.1. Here I show how to install the beta and show some of the new features.</itunes:summary>
      <itunes:explicit>no</itunes:explicit>
      <itunes:duration>13:50</itunes:duration>
    </item>
    <item>
      <title>#264 Guard</title>
      <description>Guard watches files and runs a command after a file is modified. This allows you to automatically run tests in the background, restart your development server, reload the browser, and more.</description>
      <pubDate>Mon, 02 May 2011 00:00:00 -0700</pubDate>
      <enclosure url="http://media.railscasts.com/assets/episodes/videos/264-guard.m4v" length="10979103" type="video/mp4"/>
      <link>http://railscasts.com/episodes/264-guard</link>
      <guid isPermaLink="false">guard</guid>
      <itunes:author>Ryan Bates</itunes:author>
      <itunes:subtitle>Guard watches files and runs a command after a file is modified. This allows you to automatically run tests in the background, restart your develop...</itunes:subtitle>
      <itunes:summary>Guard watches files and runs a command after a file is modified. This allows you to automatically run tests in the background, restart your development server, reload the browser, and more.</itunes:summary>
      <itunes:explicit>no</itunes:explicit>
      <itunes:duration>8:44</itunes:duration>
    </item>
    <item>
      <title>#263 Client Side Validations</title>
      <description>Showing validation errors inline as the user is filling out the form can lead to a better use experience. Learn how to do this using the Client Side Validations gem.</description>
      <pubDate>Mon, 25 Apr 2011 00:00:00 -0700</pubDate>
      <enclosure url="http://media.railscasts.com/assets/episodes/videos/263-client-side-validations.m4v" length="12077314" type="video/mp4"/>
      <link>http://railscasts.com/episodes/263-client-side-validations</link>
      <guid isPermaLink="false">client-side-validations</guid>
      <itunes:author>Ryan Bates</itunes:author>
      <itunes:subtitle>Showing validation errors inline as the user is filling out the form can lead to a better use experience. Learn how to do this using the Client Sid...</itunes:subtitle>
      <itunes:summary>Showing validation errors inline as the user is filling out the form can lead to a better use experience. Learn how to do this using the Client Side Validations gem.</itunes:summary>
      <itunes:explicit>no</itunes:explicit>
      <itunes:duration>8:42</itunes:duration>
    </item>
    <item>
      <title>#262 Trees with Ancestry</title>
      <description>The Ancestry gem works like a tree but also allows us to fetch deeply nested messages in a single query. It provides a method to arrange them after fetching.</description>
      <pubDate>Mon, 18 Apr 2011 00:00:00 -0700</pubDate>
      <enclosure url="http://media.railscasts.com/assets/episodes/videos/262-trees-with-ancestry.m4v" length="11008590" type="video/mp4"/>
      <link>http://railscasts.com/episodes/262-trees-with-ancestry</link>
      <guid isPermaLink="false">trees-with-ancestry</guid>
      <itunes:author>Ryan Bates</itunes:author>
      <itunes:subtitle>The Ancestry gem works like a tree but also allows us to fetch deeply nested messages in a single query. It provides a method to arrange them after...</itunes:subtitle>
      <itunes:summary>The Ancestry gem works like a tree but also allows us to fetch deeply nested messages in a single query. It provides a method to arrange them after fetching.</itunes:summary>
      <itunes:explicit>no</itunes:explicit>
      <itunes:duration>9:39</itunes:duration>
    </item>
    <item>
      <title>#261 Testing JavaScript with Jasmine</title>
      <description>Are you testing your JavaScript? Learn how to add specs using Jasmine. This episode also covers jQuery integration with jasmine-jquery.</description>
      <pubDate>Mon, 11 Apr 2011 00:00:00 -0700</pubDate>
      <enclosure url="http://media.railscasts.com/assets/episodes/videos/261-testing-javascript-with-jasmine.m4v" length="18085286" type="video/mp4"/>
      <link>http://railscasts.com/episodes/261-testing-javascript-with-jasmine</link>
      <guid isPermaLink="false">testing-javascript-with-jasmine</guid>
      <itunes:author>Ryan Bates</itunes:author>
      <itunes:subtitle>Are you testing your JavaScript? Learn how to add specs using Jasmine. This episode also covers jQuery integration with jasmine-jquery.</itunes:subtitle>
      <itunes:summary>Are you testing your JavaScript? Learn how to add specs using Jasmine. This episode also covers jQuery integration with jasmine-jquery.</itunes:summary>
      <itunes:explicit>no</itunes:explicit>
      <itunes:duration>15:20</itunes:duration>
    </item>
    <item>
      <title>#260 Messaging with Faye</title>
      <description>Faye is a subscription/publishing server which makes it easy to do push notifications within a Rails app.</description>
      <pubDate>Mon, 04 Apr 2011 00:00:00 -0700</pubDate>
      <enclosure url="http://media.railscasts.com/assets/episodes/videos/260-messaging-with-faye.m4v" length="14177572" type="video/mp4"/>
      <link>http://railscasts.com/episodes/260-messaging-with-faye</link>
      <guid isPermaLink="false">messaging-with-faye</guid>
      <itunes:author>Ryan Bates</itunes:author>
      <itunes:subtitle>Faye is a subscription/publishing server which makes it easy to do push notifications within a Rails app.</itunes:subtitle>
      <itunes:summary>Faye is a subscription/publishing server which makes it easy to do push notifications within a Rails app.</itunes:summary>
      <itunes:explicit>no</itunes:explicit>
      <itunes:duration>13:42</itunes:duration>
    </item>
    <item>
      <title>#259 Decent Exposure</title>
      <description>The decent_exposure gem makes it convenient to share controller data with the view through methods instead of instance variables.</description>
      <pubDate>Mon, 28 Mar 2011 00:00:00 -0700</pubDate>
      <enclosure url="http://media.railscasts.com/assets/episodes/videos/259-decent-exposure.m4v" length="13413137" type="video/mp4"/>
      <link>http://railscasts.com/episodes/259-decent-exposure</link>
      <guid isPermaLink="false">decent-exposure</guid>
      <itunes:author>Ryan Bates</itunes:author>
      <itunes:subtitle>The decent_exposure gem makes it convenient to share controller data with the view through methods instead of instance variables.</itunes:subtitle>
      <itunes:summary>The decent_exposure gem makes it convenient to share controller data with the view through methods instead of instance variables.</itunes:summary>
      <itunes:explicit>no</itunes:explicit>
      <itunes:duration>9:55</itunes:duration>
    </item>
    <item>
      <title>#258 Token Fields</title>
      <description>With the jQuery Tokeninput plugin it is easy to add an autocompleting list of entries for a many-to-many association.</description>
      <pubDate>Mon, 21 Mar 2011 00:00:00 -0700</pubDate>
      <enclosure url="http://media.railscasts.com/assets/episodes/videos/258-token-fields.m4v" length="14413623" type="video/mp4"/>
      <link>http://railscasts.com/episodes/258-token-fields</link>
      <guid isPermaLink="false">token-fields</guid>
      <itunes:author>Ryan Bates</itunes:author>
      <itunes:subtitle>With the jQuery Tokeninput plugin it is easy to add an autocompleting list of entries for a many-to-many association.</itunes:subtitle>
      <itunes:summary>With the jQuery Tokeninput plugin it is easy to add an autocompleting list of entries for a many-to-many association.</itunes:summary>
      <itunes:explicit>no</itunes:explicit>
      <itunes:duration>11:09</itunes:duration>
    </item>
    <item>
      <title>#257 Request Specs and Capybara</title>
      <description>Request specs in RSpec are a great way to ensure the entire application stack is working properly. Here I also show how to use capybara with integrated JavaScript testing using Selenium.</description>
      <pubDate>Mon, 14 Mar 2011 00:00:00 -0700</pubDate>
      <enclosure url="http://media.railscasts.com/assets/episodes/videos/257-request-specs-and-capybara.m4v" length="15514996" type="video/mp4"/>
      <link>http://railscasts.com/episodes/257-request-specs-and-capybara</link>
      <guid isPermaLink="false">request-specs-and-capybara</guid>
      <itunes:author>Ryan Bates</itunes:author>
      <itunes:subtitle>Request specs in RSpec are a great way to ensure the entire application stack is working properly. Here I also show how to use capybara with integr...</itunes:subtitle>
      <itunes:summary>Request specs in RSpec are a great way to ensure the entire application stack is working properly. Here I also show how to use capybara with integrated JavaScript testing using Selenium.</itunes:summary>
      <itunes:explicit>no</itunes:explicit>
      <itunes:duration>13:16</itunes:duration>
    </item>
    <item>
      <title>#256 I18n Backends</title>
      <description>Internationalization is easy to add in Rails, but the YAML files can be difficult to manage. In this episode I show how to use Redis for managing the translations through a web interface.</description>
      <pubDate>Mon, 07 Mar 2011 00:00:00 -0800</pubDate>
      <enclosure url="http://media.railscasts.com/assets/episodes/videos/256-i18n-backends.m4v" length="12969180" type="video/mp4"/>
      <link>http://railscasts.com/episodes/256-i18n-backends</link>
      <guid isPermaLink="false">i18n-backends</guid>
      <itunes:author>Ryan Bates</itunes:author>
      <itunes:subtitle>Internationalization is easy to add in Rails, but the YAML files can be difficult to manage. In this episode I show how to use Redis for managing t...</itunes:subtitle>
      <itunes:summary>Internationalization is easy to add in Rails, but the YAML files can be difficult to manage. In this episode I show how to use Redis for managing the translations through a web interface.</itunes:summary>
      <itunes:explicit>no</itunes:explicit>
      <itunes:duration>11:11</itunes:duration>
    </item>
    <item>
      <title>#255 Undo with Paper Trail</title>
      <description>Undo and redo behavior is easy to add with a versioning gem such as Paper Trail. Learn how to add an undo link to any model's flash message.</description>
      <pubDate>Mon, 28 Feb 2011 00:00:00 -0800</pubDate>
      <enclosure url="http://media.railscasts.com/assets/episodes/videos/255-undo-with-paper-trail.m4v" length="15113352" type="video/mp4"/>
      <link>http://railscasts.com/episodes/255-undo-with-paper-trail</link>
      <guid isPermaLink="false">undo-with-paper-trail</guid>
      <itunes:author>Ryan Bates</itunes:author>
      <itunes:subtitle>Undo and redo behavior is easy to add with a versioning gem such as Paper Trail. Learn how to add an undo link to any model's flash message.</itunes:subtitle>
      <itunes:summary>Undo and redo behavior is easy to add with a versioning gem such as Paper Trail. Learn how to add an undo link to any model's flash message.</itunes:summary>
      <itunes:explicit>no</itunes:explicit>
      <itunes:duration>13:22</itunes:duration>
    </item>
    <item>
      <title>#254 Pagination with Kaminari</title>
      <description>If you need pagination in Rails 3 try out Kaminari. It is a clean, flexible solution which uses scopes to flow nicely with Active Record queries. Did I mention it also works with Mongoid?</description>
      <pubDate>Mon, 21 Feb 2011 00:00:00 -0800</pubDate>
      <enclosure url="http://media.railscasts.com/assets/episodes/videos/254-pagination-with-kaminari.m4v" length="10627136" type="video/mp4"/>
      <link>http://railscasts.com/episodes/254-pagination-with-kaminari</link>
      <guid isPermaLink="false">pagination-with-kaminari</guid>
      <itunes:author>Ryan Bates</itunes:author>
      <itunes:subtitle>If you need pagination in Rails 3 try out Kaminari. It is a clean, flexible solution which uses scopes to flow nicely with Active Record queries. D...</itunes:subtitle>
      <itunes:summary>If you need pagination in Rails 3 try out Kaminari. It is a clean, flexible solution which uses scopes to flow nicely with Active Record queries. Did I mention it also works with Mongoid?</itunes:summary>
      <itunes:explicit>no</itunes:explicit>
      <itunes:duration>8:22</itunes:duration>
    </item>
    <item>
      <title>#253 CarrierWave File Uploads</title>
      <description>CarrierWave makes it easy and clean to add file uploads to your application. It supports a variety of ORMs, frameworks and image processors.</description>
      <pubDate>Mon, 14 Feb 2011 00:00:00 -0800</pubDate>
      <enclosure url="http://media.railscasts.com/assets/episodes/videos/253-carrierwave-file-uploads.m4v" length="12216622" type="video/mp4"/>
      <link>http://railscasts.com/episodes/253-carrierwave-file-uploads</link>
      <guid isPermaLink="false">carrierwave-file-uploads</guid>
      <itunes:author>Ryan Bates</itunes:author>
      <itunes:subtitle>CarrierWave makes it easy and clean to add file uploads to your application. It supports a variety of ORMs, frameworks and image processors.</itunes:subtitle>
      <itunes:summary>CarrierWave makes it easy and clean to add file uploads to your application. It supports a variety of ORMs, frameworks and image processors.</itunes:summary>
      <itunes:explicit>no</itunes:explicit>
      <itunes:duration>9:05</itunes:duration>
    </item>
    <item>
      <title>#252 Metrics Metrics Metrics</title>
      <description>Metric Fu, Metrical, SimpleCov, Rails Best Practices, and more are covered in this episode on metrics.</description>
      <pubDate>Mon, 07 Feb 2011 00:00:00 -0800</pubDate>
      <enclosure url="http://media.railscasts.com/assets/episodes/videos/252-metrics-metrics-metrics.m4v" length="15399604" type="video/mp4"/>
      <link>http://railscasts.com/episodes/252-metrics-metrics-metrics</link>
      <guid isPermaLink="false">metrics-metrics-metrics</guid>
      <itunes:author>Ryan Bates</itunes:author>
      <itunes:subtitle>Metric Fu, Metrical, SimpleCov, Rails Best Practices, and more are covered in this episode on metrics.</itunes:subtitle>
      <itunes:summary>Metric Fu, Metrical, SimpleCov, Rails Best Practices, and more are covered in this episode on metrics.</itunes:summary>
      <itunes:explicit>no</itunes:explicit>
      <itunes:duration>7:51</itunes:duration>
    </item>
    <item>
      <title>#251 MetaWhere &amp; MetaSearch</title>
      <description>MetaWhere provides a way to do complex find conditions without SQL in Active Record. MetaSearch makes it easy to create search forms with many find options.</description>
      <pubDate>Mon, 31 Jan 2011 00:00:00 -0800</pubDate>
      <enclosure url="http://media.railscasts.com/assets/episodes/videos/251-metawhere-metasearch.m4v" length="10672803" type="video/mp4"/>
      <link>http://railscasts.com/episodes/251-metawhere-metasearch</link>
      <guid isPermaLink="false">metawhere-metasearch</guid>
      <itunes:author>Ryan Bates</itunes:author>
      <itunes:subtitle>MetaWhere provides a way to do complex find conditions without SQL in Active Record. MetaSearch makes it easy to create search forms with many find...</itunes:subtitle>
      <itunes:summary>MetaWhere provides a way to do complex find conditions without SQL in Active Record. MetaSearch makes it easy to create search forms with many find options.</itunes:summary>
      <itunes:explicit>no</itunes:explicit>
      <itunes:duration>8:28</itunes:duration>
    </item>
    <item>
      <title>#250 Authentication from Scratch</title>
      <description>Password authentication is not too complicated to make from scratch, it will also help to get a better understanding of how it works.</description>
      <pubDate>Mon, 24 Jan 2011 00:00:00 -0800</pubDate>
      <enclosure url="http://media.railscasts.com/assets/episodes/videos/250-authentication-from-scratch.m4v" length="17145782" type="video/mp4"/>
      <link>http://railscasts.com/episodes/250-authentication-from-scratch</link>
      <guid isPermaLink="false">authentication-from-scratch</guid>
      <itunes:author>Ryan Bates</itunes:author>
      <itunes:subtitle>Password authentication is not too complicated to make from scratch, it will also help to get a better understanding of how it works.</itunes:subtitle>
      <itunes:summary>Password authentication is not too complicated to make from scratch, it will also help to get a better understanding of how it works.</itunes:summary>
      <itunes:explicit>no</itunes:explicit>
      <itunes:duration>15:26</itunes:duration>
    </item>
    <item>
      <title>#249 Notifications in Rails 3</title>
      <description>Rails 3 comes with instrument support through the ActiveSupport::Notifications class. Call "subscribe" to listen to notifications, and "instrument" to send them.</description>
      <pubDate>Mon, 17 Jan 2011 00:00:00 -0800</pubDate>
      <enclosure url="http://media.railscasts.com/assets/episodes/videos/249-notifications-in-rails-3.m4v" length="13230628" type="video/mp4"/>
      <link>http://railscasts.com/episodes/249-notifications-in-rails-3</link>
      <guid isPermaLink="false">notifications-in-rails-3</guid>
      <itunes:author>Ryan Bates</itunes:author>
      <itunes:subtitle>Rails 3 comes with instrument support through the ActiveSupport::Notifications class. Call "subscribe" to listen to notifications, and "instrument"...</itunes:subtitle>
      <itunes:summary>Rails 3 comes with instrument support through the ActiveSupport::Notifications class. Call "subscribe" to listen to notifications, and "instrument" to send them.</itunes:summary>
      <itunes:explicit>no</itunes:explicit>
      <itunes:duration>10:22</itunes:duration>
    </item>
    <item>
      <title>#248 Offline Apps Part 2</title>
      <description>Learn how to make a site usable offline with HTML 5 localStorage. This last part of the series covers jquery-tmpl and jquery-offline.</description>
      <pubDate>Mon, 10 Jan 2011 00:00:00 -0800</pubDate>
      <enclosure url="http://media.railscasts.com/assets/episodes/videos/248-offline-apps-part-2.m4v" length="17967755" type="video/mp4"/>
      <link>http://railscasts.com/episodes/248-offline-apps-part-2</link>
      <guid isPermaLink="false">offline-apps-part-2</guid>
      <itunes:author>Ryan Bates</itunes:author>
      <itunes:subtitle>Learn how to make a site usable offline with HTML 5 localStorage. This last part of the series covers jquery-tmpl and jquery-offline.</itunes:subtitle>
      <itunes:summary>Learn how to make a site usable offline with HTML 5 localStorage. This last part of the series covers jquery-tmpl and jquery-offline.</itunes:summary>
      <itunes:explicit>no</itunes:explicit>
      <itunes:duration>14:51</itunes:duration>
    </item>
    <item>
      <title>#247 Offline Apps Part 1</title>
      <description>Learn how to make a site usable offline through an HTML 5 cache manifest. This first part of the series covers rack-offline and problems you may run into.</description>
      <pubDate>Mon, 03 Jan 2011 00:00:00 -0800</pubDate>
      <enclosure url="http://media.railscasts.com/assets/episodes/videos/247-offline-apps-part-1.m4v" length="13167665" type="video/mp4"/>
      <link>http://railscasts.com/episodes/247-offline-apps-part-1</link>
      <guid isPermaLink="false">offline-apps-part-1</guid>
      <itunes:author>Ryan Bates</itunes:author>
      <itunes:subtitle>Learn how to make a site usable offline through an HTML 5 cache manifest. This first part of the series covers rack-offline and problems you may ru...</itunes:subtitle>
      <itunes:summary>Learn how to make a site usable offline through an HTML 5 cache manifest. This first part of the series covers rack-offline and problems you may run into.</itunes:summary>
      <itunes:explicit>no</itunes:explicit>
      <itunes:duration>10:44</itunes:duration>
    </item>
    <item>
      <title>#246 AJAX History State</title>
      <description>The new pushState function in JavaScript allows us to change the full URL with AJAX. This means the back button, reloading, and bookmark support can be easily added.</description>
      <pubDate>Mon, 27 Dec 2010 00:00:00 -0800</pubDate>
      <enclosure url="http://media.railscasts.com/assets/episodes/videos/246-ajax-history-state.m4v" length="13174054" type="video/mp4"/>
      <link>http://railscasts.com/episodes/246-ajax-history-state</link>
      <guid isPermaLink="false">ajax-history-state</guid>
      <itunes:author>Ryan Bates</itunes:author>
      <itunes:subtitle>The new pushState function in JavaScript allows us to change the full URL with AJAX. This means the back button, reloading, and bookmark support ca...</itunes:subtitle>
      <itunes:summary>The new pushState function in JavaScript allows us to change the full URL with AJAX. This means the back button, reloading, and bookmark support can be easily added.</itunes:summary>
      <itunes:explicit>no</itunes:explicit>
      <itunes:duration>10:35</itunes:duration>
    </item>
    <item>
      <title>#245 New Gem with Bundler</title>
      <description>Creating new gems is easy with the `bundle gem` command. In this episode I will walk you through how this works.</description>
      <pubDate>Mon, 20 Dec 2010 00:00:00 -0800</pubDate>
      <enclosure url="http://media.railscasts.com/assets/episodes/videos/245-new-gem-with-bundler.m4v" length="9645266" type="video/mp4"/>
      <link>http://railscasts.com/episodes/245-new-gem-with-bundler</link>
      <guid isPermaLink="false">new-gem-with-bundler</guid>
      <itunes:author>Ryan Bates</itunes:author>
      <itunes:subtitle>Creating new gems is easy with the `bundle gem` command. In this episode I will walk you through how this works.</itunes:subtitle>
      <itunes:summary>Creating new gems is easy with the `bundle gem` command. In this episode I will walk you through how this works.</itunes:summary>
      <itunes:explicit>no</itunes:explicit>
      <itunes:duration>7:25</itunes:duration>
    </item>
    <item>
      <title>#244 Gravatar</title>
      <description>Gravatar is a service for providing user avatars. See how easy it is to use in Rails in this episode.</description>
      <pubDate>Mon, 13 Dec 2010 00:00:00 -0800</pubDate>
      <enclosure url="http://media.railscasts.com/assets/episodes/videos/244-gravatar.m4v" length="7844639" type="video/mp4"/>
      <link>http://railscasts.com/episodes/244-gravatar</link>
      <guid isPermaLink="false">gravatar</guid>
      <itunes:author>Ryan Bates</itunes:author>
      <itunes:subtitle>Gravatar is a service for providing user avatars. See how easy it is to use in Rails in this episode.</itunes:subtitle>
      <itunes:summary>Gravatar is a service for providing user avatars. See how easy it is to use in Rails in this episode.</itunes:summary>
      <itunes:explicit>no</itunes:explicit>
      <itunes:duration>5:36</itunes:duration>
    </item>
    <item>
      <title>#243 Beanstalkd and Stalker</title>
      <description>Beanstalk is a fast and easy way to queue background tasks. Stalker provides a nice wrapper interface for creating these jobs.</description>
      <pubDate>Mon, 06 Dec 2010 00:00:00 -0800</pubDate>
      <enclosure url="http://media.railscasts.com/assets/episodes/videos/243-beanstalkd-and-stalker.m4v" length="10456985" type="video/mp4"/>
      <link>http://railscasts.com/episodes/243-beanstalkd-and-stalker</link>
      <guid isPermaLink="false">beanstalkd-and-stalker</guid>
      <itunes:author>Ryan Bates</itunes:author>
      <itunes:subtitle>Beanstalk is a fast and easy way to queue background tasks. Stalker provides a nice wrapper interface for creating these jobs.</itunes:subtitle>
      <itunes:summary>Beanstalk is a fast and easy way to queue background tasks. Stalker provides a nice wrapper interface for creating these jobs.</itunes:summary>
      <itunes:explicit>no</itunes:explicit>
      <itunes:duration>9:16</itunes:duration>
    </item>
    <item>
      <title>#242 Thor</title>
      <description>Thor is an alternative to Rake. It has better support for command line arguments and provides a way to add global scripts.</description>
      <pubDate>Mon, 29 Nov 2010 00:00:00 -0800</pubDate>
      <enclosure url="http://media.railscasts.com/assets/episodes/videos/242-thor.m4v" length="9552159" type="video/mp4"/>
      <link>http://railscasts.com/episodes/242-thor</link>
      <guid isPermaLink="false">thor</guid>
      <itunes:author>Ryan Bates</itunes:author>
      <itunes:subtitle>Thor is an alternative to Rake. It has better support for command line arguments and provides a way to add global scripts.</itunes:subtitle>
      <itunes:summary>Thor is an alternative to Rake. It has better support for command line arguments and provides a way to add global scripts.</itunes:summary>
      <itunes:explicit>no</itunes:explicit>
      <itunes:duration>8:54</itunes:duration>
    </item>
    <item>
      <title>#241 Simple OmniAuth</title>
      <description>Authentication is incredibly simple to add with just OmniAuth if you don't need username/password or multiple authentications per user.</description>
      <pubDate>Mon, 22 Nov 2010 00:00:00 -0800</pubDate>
      <enclosure url="http://media.railscasts.com/assets/episodes/videos/241-simple-omniauth.m4v" length="9679416" type="video/mp4"/>
      <link>http://railscasts.com/episodes/241-simple-omniauth</link>
      <guid isPermaLink="false">simple-omniauth</guid>
      <itunes:author>Ryan Bates</itunes:author>
      <itunes:subtitle>Authentication is incredibly simple to add with just OmniAuth if you don't need username/password or multiple authentications per user.</itunes:subtitle>
      <itunes:summary>Authentication is incredibly simple to add with just OmniAuth if you don't need username/password or multiple authentications per user.</itunes:summary>
      <itunes:explicit>no</itunes:explicit>
      <itunes:duration>9:06</itunes:duration>
    </item>
    <item>
      <title>#240 Search, Sort, Paginate with AJAX</title>
      <description>Many administration pages have search, sorting, and pagination on the index page. See how to add all of this including AJAX.</description>
      <pubDate>Mon, 15 Nov 2010 00:00:00 -0800</pubDate>
      <enclosure url="http://media.railscasts.com/assets/episodes/videos/240-search-sort-paginate-with-ajax.m4v" length="15245937" type="video/mp4"/>
      <link>http://railscasts.com/episodes/240-search-sort-paginate-with-ajax</link>
      <guid isPermaLink="false">search-sort-paginate-with-ajax</guid>
      <itunes:author>Ryan Bates</itunes:author>
      <itunes:subtitle>Many administration pages have search, sorting, and pagination on the index page. See how to add all of this including AJAX.</itunes:subtitle>
      <itunes:summary>Many administration pages have search, sorting, and pagination on the index page. See how to add all of this including AJAX.</itunes:summary>
      <itunes:explicit>no</itunes:explicit>
      <itunes:duration>13:43</itunes:duration>
    </item>
    <item>
      <title>#239 ActiveRecord::Relation Walkthrough</title>
      <description>The new Active Record query methods in Rails 3 might seem like magic at first. But in this episode I unravel how it works by browsing the Rails 3 source code.</description>
      <pubDate>Sun, 07 Nov 2010 00:00:00 -0700</pubDate>
      <enclosure url="http://media.railscasts.com/assets/episodes/videos/239-activerecord-relation-walkthrough.m4v" length="18544003" type="video/mp4"/>
      <link>http://railscasts.com/episodes/239-activerecord-relation-walkthrough</link>
      <guid isPermaLink="false">activerecord-relation-walkthrough</guid>
      <itunes:author>Ryan Bates</itunes:author>
      <itunes:subtitle>The new Active Record query methods in Rails 3 might seem like magic at first. But in this episode I unravel how it works by browsing the Rails 3 s...</itunes:subtitle>
      <itunes:summary>The new Active Record query methods in Rails 3 might seem like magic at first. But in this episode I unravel how it works by browsing the Rails 3 source code.</itunes:summary>
      <itunes:explicit>no</itunes:explicit>
      <itunes:duration>11:45</itunes:duration>
    </item>
    <item>
      <title>#238 Mongoid</title>
      <description>Mongoid is a polished, high-level Ruby gem for accessing MongoDB. Here I cover installation, adding fields, validations, associations, and keys.</description>
      <pubDate>Mon, 01 Nov 2010 00:00:00 -0700</pubDate>
      <enclosure url="http://media.railscasts.com/assets/episodes/videos/238-mongoid.m4v" length="12695628" type="video/mp4"/>
      <link>http://railscasts.com/episodes/238-mongoid</link>
      <guid isPermaLink="false">mongoid</guid>
      <itunes:author>Ryan Bates</itunes:author>
      <itunes:subtitle>Mongoid is a polished, high-level Ruby gem for accessing MongoDB. Here I cover installation, adding fields, validations, associations, and keys.</itunes:subtitle>
      <itunes:summary>Mongoid is a polished, high-level Ruby gem for accessing MongoDB. Here I cover installation, adding fields, validations, associations, and keys.</itunes:summary>
      <itunes:explicit>no</itunes:explicit>
      <itunes:duration>11:08</itunes:duration>
    </item>
    <item>
      <title>#237 Dynamic attr_accessible</title>
      <description>It is important to use attr_accessible for security with mass assignment, but what if you need it to be dynamic based on user permissions? See how in this episode.</description>
      <pubDate>Mon, 25 Oct 2010 00:00:00 -0700</pubDate>
      <enclosure url="http://media.railscasts.com/assets/episodes/videos/237-dynamic-attr-accessible.m4v" length="11247741" type="video/mp4"/>
      <link>http://railscasts.com/episodes/237-dynamic-attr-accessible</link>
      <guid isPermaLink="false">dynamic-attr-accessible</guid>
      <itunes:author>Ryan Bates</itunes:author>
      <itunes:subtitle>It is important to use attr_accessible for security with mass assignment, but what if you need it to be dynamic based on user permissions? See how ...</itunes:subtitle>
      <itunes:summary>It is important to use attr_accessible for security with mass assignment, but what if you need it to be dynamic based on user permissions? See how in this episode.</itunes:summary>
      <itunes:explicit>no</itunes:explicit>
      <itunes:duration>9:12</itunes:duration>
    </item>
    <item>
      <title>#236 OmniAuth Part 2</title>
      <description>In this episode we continue our look at integrating OmniAuth with devise. Here I show how to set up new users with validations.</description>
      <pubDate>Wed, 13 Oct 2010 00:00:00 -0700</pubDate>
      <enclosure url="http://media.railscasts.com/assets/episodes/videos/236-omniauth-part-2.m4v" length="18283296" type="video/mp4"/>
      <link>http://railscasts.com/episodes/236-omniauth-part-2</link>
      <guid isPermaLink="false">omniauth-part-2</guid>
      <itunes:author>Ryan Bates</itunes:author>
      <itunes:subtitle>In this episode we continue our look at integrating OmniAuth with devise. Here I show how to set up new users with validations.</itunes:subtitle>
      <itunes:summary>In this episode we continue our look at integrating OmniAuth with devise. Here I show how to set up new users with validations.</itunes:summary>
      <itunes:explicit>no</itunes:explicit>
      <itunes:duration>15:59</itunes:duration>
    </item>
    <item>
      <title>#235 OmniAuth Part 1</title>
      <description>OmniAuth is an easy way to add many different authentication services to your app. In this episode we start integrating it with Devise.</description>
      <pubDate>Mon, 11 Oct 2010 00:00:00 -0700</pubDate>
      <enclosure url="http://media.railscasts.com/assets/episodes/videos/235-omniauth-part-1.m4v" length="15342533" type="video/mp4"/>
      <link>http://railscasts.com/episodes/235-omniauth-part-1</link>
      <guid isPermaLink="false">omniauth-part-1</guid>
      <itunes:author>Ryan Bates</itunes:author>
      <itunes:subtitle>OmniAuth is an easy way to add many different authentication services to your app. In this episode we start integrating it with Devise.</itunes:subtitle>
      <itunes:summary>OmniAuth is an easy way to add many different authentication services to your app. In this episode we start integrating it with Devise.</itunes:summary>
      <itunes:explicit>no</itunes:explicit>
      <itunes:duration>10:52</itunes:duration>
    </item>
    <item>
      <title>#234 SimpleForm</title>
      <description>Simple Form is a convenient way to generate forms with many options to customize the generated markup.</description>
      <pubDate>Mon, 04 Oct 2010 00:00:00 -0700</pubDate>
      <enclosure url="http://media.railscasts.com/assets/episodes/videos/234-simple-form.m4v" length="9774901" type="video/mp4"/>
      <link>http://railscasts.com/episodes/234-simple-form</link>
      <guid isPermaLink="false">simple-form</guid>
      <itunes:author>Ryan Bates</itunes:author>
      <itunes:subtitle>Simple Form is a convenient way to generate forms with many options to customize the generated markup.</itunes:subtitle>
      <itunes:summary>Simple Form is a convenient way to generate forms with many options to customize the generated markup.</itunes:summary>
      <itunes:explicit>no</itunes:explicit>
      <itunes:duration>7:50</itunes:duration>
    </item>
    <item>
      <title>#233 Engage with Devise</title>
      <description>Janrain Engage (aka RPX) makes it easy to support many authentication solutions through their one service.</description>
      <pubDate>Mon, 27 Sep 2010 00:00:00 -0700</pubDate>
      <enclosure url="http://media.railscasts.com/assets/episodes/videos/233-engage-with-devise.m4v" length="8619554" type="video/mp4"/>
      <link>http://railscasts.com/episodes/233-engage-with-devise</link>
      <guid isPermaLink="false">engage-with-devise</guid>
      <itunes:author>Ryan Bates</itunes:author>
      <itunes:subtitle>Janrain Engage (aka RPX) makes it easy to support many authentication solutions through their one service.</itunes:subtitle>
      <itunes:summary>Janrain Engage (aka RPX) makes it easy to support many authentication solutions through their one service.</itunes:summary>
      <itunes:explicit>no</itunes:explicit>
      <itunes:duration>6:22</itunes:duration>
    </item>
    <item>
      <title>#232 Routing Walkthrough Part 2</title>
      <description>In this episode we continue our look into the Rails 3 router by exploring the Mapper class.</description>
      <pubDate>Sun, 19 Sep 2010 00:00:00 -0700</pubDate>
      <enclosure url="http://media.railscasts.com/assets/episodes/videos/232-routing-walkthrough-part-2.m4v" length="20007144" type="video/mp4"/>
      <link>http://railscasts.com/episodes/232-routing-walkthrough-part-2</link>
      <guid isPermaLink="false">routing-walkthrough-part-2</guid>
      <itunes:author>Ryan Bates</itunes:author>
      <itunes:subtitle>In this episode we continue our look into the Rails 3 router by exploring the Mapper class.</itunes:subtitle>
      <itunes:summary>In this episode we continue our look into the Rails 3 router by exploring the Mapper class.</itunes:summary>
      <itunes:explicit>no</itunes:explicit>
      <itunes:duration>13:25</itunes:duration>
    </item>
    <item>
      <title>#231 Routing Walkthrough Part 1</title>
      <description>How does routing work internally in Rails 3? In this episode I'll walk you through the Rails code that makes routing possible.</description>
      <pubDate>Mon, 13 Sep 2010 00:00:00 -0700</pubDate>
      <enclosure url="http://media.railscasts.com/assets/episodes/videos/231-routing-walkthrough.m4v" length="20430431" type="video/mp4"/>
      <link>http://railscasts.com/episodes/231-routing-walkthrough</link>
      <guid isPermaLink="false">routing-walkthrough</guid>
      <itunes:author>Ryan Bates</itunes:author>
      <itunes:subtitle>How does routing work internally in Rails 3? In this episode I'll walk you through the Rails code that makes routing possible.</itunes:subtitle>
      <itunes:summary>How does routing work internally in Rails 3? In this episode I'll walk you through the Rails code that makes routing possible.</itunes:summary>
      <itunes:explicit>no</itunes:explicit>
      <itunes:duration>13:22</itunes:duration>
    </item>
    <item>
      <title>#230 Inherited Resources</title>
      <description>Inherited Resource simplifies RESTful controllers by providing default actions which can be customized through inheritance.</description>
      <pubDate>Mon, 06 Sep 2010 00:00:00 -0700</pubDate>
      <enclosure url="http://media.railscasts.com/assets/episodes/videos/230-inherited-resources.m4v" length="11167726" type="video/mp4"/>
      <link>http://railscasts.com/episodes/230-inherited-resources</link>
      <guid isPermaLink="false">inherited-resources</guid>
      <itunes:author>Ryan Bates</itunes:author>
      <itunes:subtitle>Inherited Resource simplifies RESTful controllers by providing default actions which can be customized through inheritance.</itunes:subtitle>
      <itunes:summary>Inherited Resource simplifies RESTful controllers by providing default actions which can be customized through inheritance.</itunes:summary>
      <itunes:explicit>no</itunes:explicit>
      <itunes:duration>9:15</itunes:duration>
    </item>
    <item>
      <title>#229 Polling for Changes</title>
      <description>If you have frequently changing data on the server side, it's helpful to automatically display this to the user as well. Here I show how to accomplish this with polling in jQuery.</description>
      <pubDate>Mon, 30 Aug 2010 00:00:00 -0700</pubDate>
      <enclosure url="http://media.railscasts.com/assets/episodes/videos/229-polling-for-changes.m4v" length="17338165" type="video/mp4"/>
      <link>http://railscasts.com/episodes/229-polling-for-changes</link>
      <guid isPermaLink="false">polling-for-changes</guid>
      <itunes:author>Ryan Bates</itunes:author>
      <itunes:subtitle>If you have frequently changing data on the server side, it's helpful to automatically display this to the user as well. Here I show how to accompl...</itunes:subtitle>
      <itunes:summary>If you have frequently changing data on the server side, it's helpful to automatically display this to the user as well. Here I show how to accomplish this with polling in jQuery.</itunes:summary>
      <itunes:explicit>no</itunes:explicit>
      <itunes:duration>16:07</itunes:duration>
    </item>
    <item>
      <title>#228 Sortable Table Columns</title>
      <description>Here I walk you through adding the ability to sort table columns in ascending or descending order by clicking the header.</description>
      <pubDate>Mon, 23 Aug 2010 00:00:00 -0700</pubDate>
      <enclosure url="http://media.railscasts.com/assets/episodes/videos/228-sortable-table-columns.m4v" length="12010318" type="video/mp4"/>
      <link>http://railscasts.com/episodes/228-sortable-table-columns</link>
      <guid isPermaLink="false">sortable-table-columns</guid>
      <itunes:author>Ryan Bates</itunes:author>
      <itunes:subtitle>Here I walk you through adding the ability to sort table columns in ascending or descending order by clicking the header.</itunes:subtitle>
      <itunes:summary>Here I walk you through adding the ability to sort table columns in ascending or descending order by clicking the header.</itunes:summary>
      <itunes:explicit>no</itunes:explicit>
      <itunes:duration>10:52</itunes:duration>
    </item>
    <item>
      <title>#227 Upgrading to Rails 3 Part 3</title>
      <description>Here we finish up this upgrade series by removing all deprecation warnings and fixing some problems in the view.</description>
      <pubDate>Mon, 16 Aug 2010 00:00:00 -0700</pubDate>
      <enclosure url="http://media.railscasts.com/assets/episodes/videos/227-upgrading-to-rails-3-part-3.m4v" length="12832213" type="video/mp4"/>
      <link>http://railscasts.com/episodes/227-upgrading-to-rails-3-part-3</link>
      <guid isPermaLink="false">upgrading-to-rails-3-part-3</guid>
      <itunes:author>Ryan Bates</itunes:author>
      <itunes:subtitle>Here we finish up this upgrade series by removing all deprecation warnings and fixing some problems in the view.</itunes:subtitle>
      <itunes:summary>Here we finish up this upgrade series by removing all deprecation warnings and fixing some problems in the view.</itunes:summary>
      <itunes:explicit>no</itunes:explicit>
      <itunes:duration>9:34</itunes:duration>
    </item>
    <item>
      <title>#226 Upgrading to Rails 3 Part 2</title>
      <description>Here we continue upgrading an application to Rails 3 by getting our specs up and running and going through the rails_upgrade plugin.</description>
      <pubDate>Mon, 09 Aug 2010 00:00:00 -0700</pubDate>
      <enclosure url="http://media.railscasts.com/assets/episodes/videos/226-upgrading-to-rails-3-part-2.m4v" length="19978950" type="video/mp4"/>
      <link>http://railscasts.com/episodes/226-upgrading-to-rails-3-part-2</link>
      <guid isPermaLink="false">upgrading-to-rails-3-part-2</guid>
      <itunes:author>Ryan Bates</itunes:author>
      <itunes:subtitle>Here we continue upgrading an application to Rails 3 by getting our specs up and running and going through the rails_upgrade plugin.</itunes:subtitle>
      <itunes:summary>Here we continue upgrading an application to Rails 3 by getting our specs up and running and going through the rails_upgrade plugin.</itunes:summary>
      <itunes:explicit>no</itunes:explicit>
      <itunes:duration>12:23</itunes:duration>
    </item>
    <item>
      <title>#225 Upgrading to Rails 3 Part 1</title>
      <description>In the first part of this series on upgrading a Rails 2 application to Rails 3, we'll start off by setting up Rails 3.0 Release Candidate in a clean environment. The rails_upgrade plugin will then help us determine what needs upgrading.</description>
      <pubDate>Mon, 02 Aug 2010 00:00:00 -0700</pubDate>
      <enclosure url="http://media.railscasts.com/assets/episodes/videos/225-upgrading-to-rails-3-part-1.m4v" length="18920496" type="video/mp4"/>
      <link>http://railscasts.com/episodes/225-upgrading-to-rails-3-part-1</link>
      <guid isPermaLink="false">upgrading-to-rails-3-part-1</guid>
      <itunes:author>Ryan Bates</itunes:author>
      <itunes:subtitle>In the first part of this series on upgrading a Rails 2 application to Rails 3, we'll start off by setting up Rails 3.0 Release Candidate in a clea...</itunes:subtitle>
      <itunes:summary>In the first part of this series on upgrading a Rails 2 application to Rails 3, we'll start off by setting up Rails 3.0 Release Candidate in a clean environment. The rails_upgrade plugin will then help us determine what needs upgrading.</itunes:summary>
      <itunes:explicit>no</itunes:explicit>
      <itunes:duration>11:56</itunes:duration>
    </item>
    <item>
      <title>#224 Controllers in Rails 3</title>
      <description>Embedded flash notices, permanent cookies, and the details of respond_with are in this episode.</description>
      <pubDate>Mon, 26 Jul 2010 00:00:00 -0700</pubDate>
      <enclosure url="http://media.railscasts.com/assets/episodes/videos/224-controllers-in-rails-3.m4v" length="12950750" type="video/mp4"/>
      <link>http://railscasts.com/episodes/224-controllers-in-rails-3</link>
      <guid isPermaLink="false">controllers-in-rails-3</guid>
      <itunes:author>Ryan Bates</itunes:author>
      <itunes:subtitle>Embedded flash notices, permanent cookies, and the details of respond_with are in this episode.</itunes:subtitle>
      <itunes:summary>Embedded flash notices, permanent cookies, and the details of respond_with are in this episode.</itunes:summary>
      <itunes:explicit>no</itunes:explicit>
      <itunes:duration>10:49</itunes:duration>
    </item>
    <item>
      <title>#223 Charts</title>
      <description>There are a number of libraries to help create graphs. Here I show how to integrate Highcharts into a Rails app.</description>
      <pubDate>Mon, 19 Jul 2010 00:00:00 -0700</pubDate>
      <enclosure url="http://media.railscasts.com/assets/episodes/videos/223-charts.m4v" length="19873911" type="video/mp4"/>
      <link>http://railscasts.com/episodes/223-charts</link>
      <guid isPermaLink="false">charts</guid>
      <itunes:author>Ryan Bates</itunes:author>
      <itunes:subtitle>There are a number of libraries to help create graphs. Here I show how to integrate Highcharts into a Rails app.</itunes:subtitle>
      <itunes:summary>There are a number of libraries to help create graphs. Here I show how to integrate Highcharts into a Rails app.</itunes:summary>
      <itunes:explicit>no</itunes:explicit>
      <itunes:duration>16:12</itunes:duration>
    </item>
    <item>
      <title>#222 Rack in Rails 3</title>
      <description>The router in Rails 3 is fully compatible with Rack. Learn how to embed Sinatra into an app, handle redirects, and improve on Rails Metal.</description>
      <pubDate>Mon, 12 Jul 2010 00:00:00 -0700</pubDate>
      <enclosure url="http://media.railscasts.com/assets/episodes/videos/222-rack-in-rails-3.m4v" length="9150242" type="video/mp4"/>
      <link>http://railscasts.com/episodes/222-rack-in-rails-3</link>
      <guid isPermaLink="false">rack-in-rails-3</guid>
      <itunes:author>Ryan Bates</itunes:author>
      <itunes:subtitle>The router in Rails 3 is fully compatible with Rack. Learn how to embed Sinatra into an app, handle redirects, and improve on Rails Metal.</itunes:subtitle>
      <itunes:summary>The router in Rails 3 is fully compatible with Rack. Learn how to embed Sinatra into an app, handle redirects, and improve on Rails Metal.</itunes:summary>
      <itunes:explicit>no</itunes:explicit>
      <itunes:duration>8:48</itunes:duration>
    </item>
    <item>
      <title>#221 Subdomains in Rails 3</title>
      <description>It is now possible to add subdomains to Rails 3 without the use of additional plugins. Learn how in this episode.</description>
      <pubDate>Mon, 05 Jul 2010 00:00:00 -0700</pubDate>
      <enclosure url="http://media.railscasts.com/assets/episodes/videos/221-subdomains-in-rails-3.m4v" length="14389520" type="video/mp4"/>
      <link>http://railscasts.com/episodes/221-subdomains-in-rails-3</link>
      <guid isPermaLink="false">subdomains-in-rails-3</guid>
      <itunes:author>Ryan Bates</itunes:author>
      <itunes:subtitle>It is now possible to add subdomains to Rails 3 without the use of additional plugins. Learn how in this episode.</itunes:subtitle>
      <itunes:summary>It is now possible to add subdomains to Rails 3 without the use of additional plugins. Learn how in this episode.</itunes:summary>
      <itunes:explicit>no</itunes:explicit>
      <itunes:duration>13:55</itunes:duration>
    </item>
    <item>
      <title>#220 PDFKit</title>
      <description>Generating PDFs in plain Ruby can be a lot of work. Instead, consider generating PDFs from HTML using PDFKit.</description>
      <pubDate>Mon, 28 Jun 2010 00:00:00 -0700</pubDate>
      <enclosure url="http://media.railscasts.com/assets/episodes/videos/220-pdfkit.m4v" length="11380745" type="video/mp4"/>
      <link>http://railscasts.com/episodes/220-pdfkit</link>
      <guid isPermaLink="false">pdfkit</guid>
      <itunes:author>Ryan Bates</itunes:author>
      <itunes:subtitle>Generating PDFs in plain Ruby can be a lot of work. Instead, consider generating PDFs from HTML using PDFKit.</itunes:subtitle>
      <itunes:summary>Generating PDFs in plain Ruby can be a lot of work. Instead, consider generating PDFs from HTML using PDFKit.</itunes:summary>
      <itunes:explicit>no</itunes:explicit>
      <itunes:duration>8:14</itunes:duration>
    </item>
    <item>
      <title>#219 Active Model</title>
      <description>In Rails 3 the non-database functionality of Active Record is extracted out into Active Model. This allows you to cleanly add validations and other features to tableless models.</description>
      <pubDate>Mon, 21 Jun 2010 00:00:00 -0700</pubDate>
      <enclosure url="http://media.railscasts.com/assets/episodes/videos/219-active-model.m4v" length="8418154" type="video/mp4"/>
      <link>http://railscasts.com/episodes/219-active-model</link>
      <guid isPermaLink="false">active-model</guid>
      <itunes:author>Ryan Bates</itunes:author>
      <itunes:subtitle>In Rails 3 the non-database functionality of Active Record is extracted out into Active Model. This allows you to cleanly add validations and other...</itunes:subtitle>
      <itunes:summary>In Rails 3 the non-database functionality of Active Record is extracted out into Active Model. This allows you to cleanly add validations and other features to tableless models.</itunes:summary>
      <itunes:explicit>no</itunes:explicit>
      <itunes:duration>6:47</itunes:duration>
    </item>
    <item>
      <title>#218 Making Generators in Rails 3</title>
      <description>Generators in Rails 3 have been rewritten to use Thor which means the code used to create a generator is quite different. Here you will learn the new way to make generators in Rails 3.</description>
      <pubDate>Mon, 14 Jun 2010 00:00:00 -0700</pubDate>
      <enclosure url="http://media.railscasts.com/assets/episodes/videos/218-making-generators-in-rails-3.m4v" length="10877837" type="video/mp4"/>
      <link>http://railscasts.com/episodes/218-making-generators-in-rails-3</link>
      <guid isPermaLink="false">making-generators-in-rails-3</guid>
      <itunes:author>Ryan Bates</itunes:author>
      <itunes:subtitle>Generators in Rails 3 have been rewritten to use Thor which means the code used to create a generator is quite different. Here you will learn the n...</itunes:subtitle>
      <itunes:summary>Generators in Rails 3 have been rewritten to use Thor which means the code used to create a generator is quite different. Here you will learn the new way to make generators in Rails 3.</itunes:summary>
      <itunes:explicit>no</itunes:explicit>
      <itunes:duration>10:07</itunes:duration>
    </item>
    <item>
      <title>#217 Multistep Forms</title>
      <description>See how to create a multi-step (wizard) form from scratch in this episode.</description>
      <pubDate>Mon, 07 Jun 2010 00:00:00 -0700</pubDate>
      <enclosure url="http://media.railscasts.com/assets/episodes/videos/217-multistep-forms.m4v" length="16456030" type="video/mp4"/>
      <link>http://railscasts.com/episodes/217-multistep-forms</link>
      <guid isPermaLink="false">multistep-forms</guid>
      <itunes:author>Ryan Bates</itunes:author>
      <itunes:subtitle>See how to create a multi-step (wizard) form from scratch in this episode.</itunes:subtitle>
      <itunes:summary>See how to create a multi-step (wizard) form from scratch in this episode.</itunes:summary>
      <itunes:explicit>no</itunes:explicit>
      <itunes:duration>15:14</itunes:duration>
    </item>
    <item>
      <title>#216 Generators in Rails 3</title>
      <description>Generators in Rails 3 have been completely rewritten to be more modular. This allows you to customize any generator to fit your specific preferences.</description>
      <pubDate>Mon, 31 May 2010 00:00:00 -0700</pubDate>
      <enclosure url="http://media.railscasts.com/assets/episodes/videos/216-generators-in-rails-3.m4v" length="15770509" type="video/mp4"/>
      <link>http://railscasts.com/episodes/216-generators-in-rails-3</link>
      <guid isPermaLink="false">generators-in-rails-3</guid>
      <itunes:author>Ryan Bates</itunes:author>
      <itunes:subtitle>Generators in Rails 3 have been completely rewritten to be more modular. This allows you to customize any generator to fit your specific preferences.</itunes:subtitle>
      <itunes:summary>Generators in Rails 3 have been completely rewritten to be more modular. This allows you to customize any generator to fit your specific preferences.</itunes:summary>
      <itunes:explicit>no</itunes:explicit>
      <itunes:duration>11:24</itunes:duration>
    </item>
    <item>
      <title>#215 Advanced Queries in Rails 3</title>
      <description>Learn some advanced techniques regarding named scopes and get an introduction to Arel in this episode.</description>
      <pubDate>Mon, 24 May 2010 00:00:00 -0700</pubDate>
      <enclosure url="http://media.railscasts.com/assets/episodes/videos/215-advanced-queries-in-rails-3.m4v" length="10702529" type="video/mp4"/>
      <link>http://railscasts.com/episodes/215-advanced-queries-in-rails-3</link>
      <guid isPermaLink="false">advanced-queries-in-rails-3</guid>
      <itunes:author>Ryan Bates</itunes:author>
      <itunes:subtitle>Learn some advanced techniques regarding named scopes and get an introduction to Arel in this episode.</itunes:subtitle>
      <itunes:summary>Learn some advanced techniques regarding named scopes and get an introduction to Arel in this episode.</itunes:summary>
      <itunes:explicit>no</itunes:explicit>
      <itunes:duration>9:26</itunes:duration>
    </item>
    <item>
      <title>#214 A/B Testing with A/Bingo</title>
      <description>A/B Testing (or Split Testing) is a way to experiment with variations in an application to see the most effective option.</description>
      <pubDate>Mon, 17 May 2010 00:00:00 -0700</pubDate>
      <enclosure url="http://media.railscasts.com/assets/episodes/videos/214-a-b-testing-with-a-bingo.m4v" length="13152306" type="video/mp4"/>
      <link>http://railscasts.com/episodes/214-a-b-testing-with-a-bingo</link>
      <guid isPermaLink="false">a-b-testing-with-a-bingo</guid>
      <itunes:author>Ryan Bates</itunes:author>
      <itunes:subtitle>A/B Testing (or Split Testing) is a way to experiment with variations in an application to see the most effective option.</itunes:subtitle>
      <itunes:summary>A/B Testing (or Split Testing) is a way to experiment with variations in an application to see the most effective option.</itunes:summary>
      <itunes:explicit>no</itunes:explicit>
      <itunes:duration>11:04</itunes:duration>
    </item>
    <item>
      <title>#213 Calendars</title>
      <description>If dates play an important role in your application, consider adding a date picker or calendar view as shown in this episode.</description>
      <pubDate>Mon, 10 May 2010 00:00:00 -0700</pubDate>
      <enclosure url="http://media.railscasts.com/assets/episodes/videos/213-calendars.m4v" length="11266507" type="video/mp4"/>
      <link>http://railscasts.com/episodes/213-calendars</link>
      <guid isPermaLink="false">calendars</guid>
      <itunes:author>Ryan Bates</itunes:author>
      <itunes:subtitle>If dates play an important role in your application, consider adding a date picker or calendar view as shown in this episode.</itunes:subtitle>
      <itunes:summary>If dates play an important role in your application, consider adding a date picker or calendar view as shown in this episode.</itunes:summary>
      <itunes:explicit>no</itunes:explicit>
      <itunes:duration>9:50</itunes:duration>
    </item>
    <item>
      <title>#212 Refactoring &amp; Dynamic Delegator</title>
      <description>Learn how to refactor a set of conditional Active Record queries using a Dynamic Delegator.</description>
      <pubDate>Mon, 03 May 2010 00:00:00 -0700</pubDate>
      <enclosure url="http://media.railscasts.com/assets/episodes/videos/212-refactoring-dynamic-delegator.m4v" length="8587249" type="video/mp4"/>
      <link>http://railscasts.com/episodes/212-refactoring-dynamic-delegator</link>
      <guid isPermaLink="false">refactoring-dynamic-delegator</guid>
      <itunes:author>Ryan Bates</itunes:author>
      <itunes:subtitle>Learn how to refactor a set of conditional Active Record queries using a Dynamic Delegator.</itunes:subtitle>
      <itunes:summary>Learn how to refactor a set of conditional Active Record queries using a Dynamic Delegator.</itunes:summary>
      <itunes:explicit>no</itunes:explicit>
      <itunes:duration>7:58</itunes:duration>
    </item>
    <item>
      <title>#211 Validations in Rails 3</title>
      <description>Rails 3 offers several new additions to validations. Here learn how to make a custom error_messages partial, reflect on validations, and clean up complex validations in a model.</description>
      <pubDate>Mon, 26 Apr 2010 00:00:00 -0700</pubDate>
      <enclosure url="http://media.railscasts.com/assets/episodes/videos/211-validations-in-rails-3.m4v" length="10658794" type="video/mp4"/>
      <link>http://railscasts.com/episodes/211-validations-in-rails-3</link>
      <guid isPermaLink="false">validations-in-rails-3</guid>
      <itunes:author>Ryan Bates</itunes:author>
      <itunes:subtitle>Rails 3 offers several new additions to validations. Here learn how to make a custom error_messages partial, reflect on validations, and clean up c...</itunes:subtitle>
      <itunes:summary>Rails 3 offers several new additions to validations. Here learn how to make a custom error_messages partial, reflect on validations, and clean up complex validations in a model.</itunes:summary>
      <itunes:explicit>no</itunes:explicit>
      <itunes:duration>9:53</itunes:duration>
    </item>
    <item>
      <title>#210 Customizing Devise</title>
      <description>Here we dive deeper into Devise by customizing how the views, routing, validations, and authentication works.</description>
      <pubDate>Mon, 19 Apr 2010 00:00:00 -0700</pubDate>
      <enclosure url="http://media.railscasts.com/assets/episodes/videos/210-customizing-devise.m4v" length="8722751" type="video/mp4"/>
      <link>http://railscasts.com/episodes/210-customizing-devise</link>
      <guid isPermaLink="false">customizing-devise</guid>
      <itunes:author>Ryan Bates</itunes:author>
      <itunes:subtitle>Here we dive deeper into Devise by customizing how the views, routing, validations, and authentication works.</itunes:subtitle>
      <itunes:summary>Here we dive deeper into Devise by customizing how the views, routing, validations, and authentication works.</itunes:summary>
      <itunes:explicit>no</itunes:explicit>
      <itunes:duration>7:52</itunes:duration>
    </item>
    <item>
      <title>#209 Introducing Devise</title>
      <description>Devise is a full-featured authentication solution which handles all of the controller logic and form views for you. Learn how to set it up in this episode.</description>
      <pubDate>Mon, 12 Apr 2010 00:00:00 -0700</pubDate>
      <enclosure url="http://media.railscasts.com/assets/episodes/videos/209-introducing-devise.m4v" length="13237460" type="video/mp4"/>
      <link>http://railscasts.com/episodes/209-introducing-devise</link>
      <guid isPermaLink="false">introducing-devise</guid>
      <itunes:author>Ryan Bates</itunes:author>
      <itunes:subtitle>Devise is a full-featured authentication solution which handles all of the controller logic and form views for you. Learn how to set it up in this ...</itunes:subtitle>
      <itunes:summary>Devise is a full-featured authentication solution which handles all of the controller logic and form views for you. Learn how to set it up in this episode.</itunes:summary>
      <itunes:explicit>no</itunes:explicit>
      <itunes:duration>10:36</itunes:duration>
    </item>
    <item>
      <title>#208 ERB Blocks in Rails 3</title>
      <description>Blocks in ERB templates are handled differently in Rails 3.0 Beta 2. Learn all about it in this episode.</description>
      <pubDate>Mon, 05 Apr 2010 00:00:00 -0700</pubDate>
      <enclosure url="http://media.railscasts.com/assets/episodes/videos/208-erb-blocks-in-rails-3.m4v" length="10063842" type="video/mp4"/>
      <link>http://railscasts.com/episodes/208-erb-blocks-in-rails-3</link>
      <guid isPermaLink="false">erb-blocks-in-rails-3</guid>
      <itunes:author>Ryan Bates</itunes:author>
      <itunes:subtitle>Blocks in ERB templates are handled differently in Rails 3.0 Beta 2. Learn all about it in this episode.</itunes:subtitle>
      <itunes:summary>Blocks in ERB templates are handled differently in Rails 3.0 Beta 2. Learn all about it in this episode.</itunes:summary>
      <itunes:explicit>no</itunes:explicit>
      <itunes:duration>9:41</itunes:duration>
    </item>
    <item>
      <title>#207 Syntax Highlighting</title>
      <description>Here I talk about three popular choices for syntax highlighting in Rails: CodeRay, Ultraviolet and Pygments.</description>
      <pubDate>Mon, 29 Mar 2010 00:00:00 -0700</pubDate>
      <enclosure url="http://media.railscasts.com/assets/episodes/videos/207-syntax-highlighting.m4v" length="12191611" type="video/mp4"/>
      <link>http://railscasts.com/episodes/207-syntax-highlighting</link>
      <guid isPermaLink="false">syntax-highlighting</guid>
      <itunes:author>Ryan Bates</itunes:author>
      <itunes:subtitle>Here I talk about three popular choices for syntax highlighting in Rails: CodeRay, Ultraviolet and Pygments.</itunes:subtitle>
      <itunes:summary>Here I talk about three popular choices for syntax highlighting in Rails: CodeRay, Ultraviolet and Pygments.</itunes:summary>
      <itunes:explicit>no</itunes:explicit>
      <itunes:duration>9:09</itunes:duration>
    </item>
    <item>
      <title>#206 Action Mailer in Rails 3</title>
      <description>Action Mailer has been rewritten for Rails 3 providing a much cleaner API with its use of the Mail gem.</description>
      <pubDate>Mon, 22 Mar 2010 00:00:00 -0700</pubDate>
      <enclosure url="http://media.railscasts.com/assets/episodes/videos/206-action-mailer-in-rails-3.m4v" length="12730581" type="video/mp4"/>
      <link>http://railscasts.com/episodes/206-action-mailer-in-rails-3</link>
      <guid isPermaLink="false">action-mailer-in-rails-3</guid>
      <itunes:author>Ryan Bates</itunes:author>
      <itunes:subtitle>Action Mailer has been rewritten for Rails 3 providing a much cleaner API with its use of the Mail gem.</itunes:subtitle>
      <itunes:summary>Action Mailer has been rewritten for Rails 3 providing a much cleaner API with its use of the Mail gem.</itunes:summary>
      <itunes:explicit>no</itunes:explicit>
      <itunes:duration>12:20</itunes:duration>
    </item>
    <item>
      <title>#205 Unobtrusive Javascript</title>
      <description>Keep JavaScript out of your HTML content with unobtrusive JavaScript. Here I show how Rails 3 works with this best practice.</description>
      <pubDate>Mon, 15 Mar 2010 00:00:00 -0700</pubDate>
      <enclosure url="http://media.railscasts.com/assets/episodes/videos/205-unobtrusive-javascript.m4v" length="14039020" type="video/mp4"/>
      <link>http://railscasts.com/episodes/205-unobtrusive-javascript</link>
      <guid isPermaLink="false">unobtrusive-javascript</guid>
      <itunes:author>Ryan Bates</itunes:author>
      <itunes:subtitle>Keep JavaScript out of your HTML content with unobtrusive JavaScript. Here I show how Rails 3 works with this best practice.</itunes:subtitle>
      <itunes:summary>Keep JavaScript out of your HTML content with unobtrusive JavaScript. Here I show how Rails 3 works with this best practice.</itunes:summary>
      <itunes:explicit>no</itunes:explicit>
      <itunes:duration>13:18</itunes:duration>
    </item>
    <item>
      <title>#204 XSS Protection in Rails 3</title>
      <description>It is easy to be vulnerable to cross site scripting attacks in earlier versions of Rails, but Rails 3 solves this by automatically escaping unsafe input.</description>
      <pubDate>Mon, 08 Mar 2010 00:00:00 -0800</pubDate>
      <enclosure url="http://media.railscasts.com/assets/episodes/videos/204-xss-protection-in-rails-3.m4v" length="9044767" type="video/mp4"/>
      <link>http://railscasts.com/episodes/204-xss-protection-in-rails-3</link>
      <guid isPermaLink="false">xss-protection-in-rails-3</guid>
      <itunes:author>Ryan Bates</itunes:author>
      <itunes:subtitle>It is easy to be vulnerable to cross site scripting attacks in earlier versions of Rails, but Rails 3 solves this by automatically escaping unsafe ...</itunes:subtitle>
      <itunes:summary>It is easy to be vulnerable to cross site scripting attacks in earlier versions of Rails, but Rails 3 solves this by automatically escaping unsafe input.</itunes:summary>
      <itunes:explicit>no</itunes:explicit>
      <itunes:duration>8:56</itunes:duration>
    </item>
    <item>
      <title>#203 Routing in Rails 3</title>
      <description>Rails 3 sports a new routing interface. In this episode I show how to translate the old interface into the new one and show off a few new features.</description>
      <pubDate>Mon, 01 Mar 2010 00:00:00 -0800</pubDate>
      <enclosure url="http://media.railscasts.com/assets/episodes/videos/203-routing-in-rails-3.m4v" length="14953794" type="video/mp4"/>
      <link>http://railscasts.com/episodes/203-routing-in-rails-3</link>
      <guid isPermaLink="false">routing-in-rails-3</guid>
      <itunes:author>Ryan Bates</itunes:author>
      <itunes:subtitle>Rails 3 sports a new routing interface. In this episode I show how to translate the old interface into the new one and show off a few new features.</itunes:subtitle>
      <itunes:summary>Rails 3 sports a new routing interface. In this episode I show how to translate the old interface into the new one and show off a few new features.</itunes:summary>
      <itunes:explicit>no</itunes:explicit>
      <itunes:duration>13:31</itunes:duration>
    </item>
    <item>
      <title>#202 Active Record Queries in Rails 3</title>
      <description>Rails 3 introduces a new query interface for performing finds in Active Record. See how it works along with the changes in named scopes.</description>
      <pubDate>Mon, 22 Feb 2010 00:00:00 -0800</pubDate>
      <enclosure url="http://media.railscasts.com/assets/episodes/videos/202-active-record-queries-in-rails-3.m4v" length="11230605" type="video/mp4"/>
      <link>http://railscasts.com/episodes/202-active-record-queries-in-rails-3</link>
      <guid isPermaLink="false">active-record-queries-in-rails-3</guid>
      <itunes:author>Ryan Bates</itunes:author>
      <itunes:subtitle>Rails 3 introduces a new query interface for performing finds in Active Record. See how it works along with the changes in named scopes.</itunes:subtitle>
      <itunes:summary>Rails 3 introduces a new query interface for performing finds in Active Record. See how it works along with the changes in named scopes.</itunes:summary>
      <itunes:explicit>no</itunes:explicit>
      <itunes:duration>10:43</itunes:duration>
    </item>
    <item>
      <title>#201 Bundler</title>
      <description>Bundler is the way to manage gem dependencies in Rails 3.0. Learn how to install gems and lock them down in this episode.</description>
      <pubDate>Mon, 15 Feb 2010 00:00:00 -0800</pubDate>
      <enclosure url="http://media.railscasts.com/assets/episodes/videos/201-bundler.m4v" length="10420241" type="video/mp4"/>
      <link>http://railscasts.com/episodes/201-bundler</link>
      <guid isPermaLink="false">bundler</guid>
      <itunes:author>Ryan Bates</itunes:author>
      <itunes:subtitle>Bundler is the way to manage gem dependencies in Rails 3.0. Learn how to install gems and lock them down in this episode.</itunes:subtitle>
      <itunes:summary>Bundler is the way to manage gem dependencies in Rails 3.0. Learn how to install gems and lock them down in this episode.</itunes:summary>
      <itunes:explicit>no</itunes:explicit>
      <itunes:duration>9:22</itunes:duration>
    </item>
    <item>
      <title>#200 Rails 3 Beta and RVM</title>
      <description>Get started with Rails 3.0 Beta and install Ruby 1.9.1 using RVM: Ruby Version Manager. Stay tuned to the end for a challenge on giving back to open source.</description>
      <pubDate>Mon, 08 Feb 2010 00:00:00 -0800</pubDate>
      <enclosure url="http://media.railscasts.com/assets/episodes/videos/200-rails-3-beta-and-rvm.m4v" length="11803897" type="video/mp4"/>
      <link>http://railscasts.com/episodes/200-rails-3-beta-and-rvm</link>
      <guid isPermaLink="false">rails-3-beta-and-rvm</guid>
      <itunes:author>Ryan Bates</itunes:author>
      <itunes:subtitle>Get started with Rails 3.0 Beta and install Ruby 1.9.1 using RVM: Ruby Version Manager. Stay tuned to the end for a challenge on giving back to ope...</itunes:subtitle>
      <itunes:summary>Get started with Rails 3.0 Beta and install Ruby 1.9.1 using RVM: Ruby Version Manager. Stay tuned to the end for a challenge on giving back to open source.</itunes:summary>
      <itunes:explicit>no</itunes:explicit>
      <itunes:duration>8:43</itunes:duration>
    </item>
    <item>
      <title>#199 Mobile Devices</title>
      <description>Change the look and behavior of a Rails app on mobile devices. Also use jQTouch to build a native-looking interface.</description>
      <pubDate>Mon, 01 Feb 2010 00:00:00 -0800</pubDate>
      <enclosure url="http://media.railscasts.com/assets/episodes/videos/199-mobile-devices.m4v" length="15076289" type="video/mp4"/>
      <link>http://railscasts.com/episodes/199-mobile-devices</link>
      <guid isPermaLink="false">mobile-devices</guid>
      <itunes:author>Ryan Bates</itunes:author>
      <itunes:subtitle>Change the look and behavior of a Rails app on mobile devices. Also use jQTouch to build a native-looking interface.</itunes:subtitle>
      <itunes:summary>Change the look and behavior of a Rails app on mobile devices. Also use jQTouch to build a native-looking interface.</itunes:summary>
      <itunes:explicit>no</itunes:explicit>
      <itunes:duration>13:26</itunes:duration>
    </item>
    <item>
      <title>#198 Edit Multiple Individually</title>
      <description>Use checkboxes to edit multiple records in one form, where each one has an individual set of form fields.</description>
      <pubDate>Mon, 25 Jan 2010 00:00:00 -0800</pubDate>
      <enclosure url="http://media.railscasts.com/assets/episodes/videos/198-edit-multiple-individually.m4v" length="15456869" type="video/mp4"/>
      <link>http://railscasts.com/episodes/198-edit-multiple-individually</link>
      <guid isPermaLink="false">edit-multiple-individually</guid>
      <itunes:author>Ryan Bates</itunes:author>
      <itunes:subtitle>Use checkboxes to edit multiple records in one form, where each one has an individual set of form fields.</itunes:subtitle>
      <itunes:summary>Use checkboxes to edit multiple records in one form, where each one has an individual set of form fields.</itunes:summary>
      <itunes:explicit>no</itunes:explicit>
      <itunes:duration>13:53</itunes:duration>
    </item>
    <item>
      <title>#197 Nested Model Form Part 2</title>
      <description>Add and remove nested model fields dynamically through JavaScript using either Prototype or jQuery.</description>
      <pubDate>Mon, 18 Jan 2010 00:00:00 -0800</pubDate>
      <enclosure url="http://media.railscasts.com/assets/episodes/videos/197-nested-model-form-part-2.m4v" length="12952276" type="video/mp4"/>
      <link>http://railscasts.com/episodes/197-nested-model-form-part-2</link>
      <guid isPermaLink="false">nested-model-form-part-2</guid>
      <itunes:author>Ryan Bates</itunes:author>
      <itunes:subtitle>Add and remove nested model fields dynamically through JavaScript using either Prototype or jQuery.</itunes:subtitle>
      <itunes:summary>Add and remove nested model fields dynamically through JavaScript using either Prototype or jQuery.</itunes:summary>
      <itunes:explicit>no</itunes:explicit>
      <itunes:duration>12:40</itunes:duration>
    </item>
    <item>
      <title>#196 Nested Model Form Part 1</title>
      <description>Handling multiple models in a single form is much easier with the accepts_nested_attributes_for method. See how to use this method to handle nested model fields.</description>
      <pubDate>Mon, 11 Jan 2010 00:00:00 -0800</pubDate>
      <enclosure url="http://media.railscasts.com/assets/episodes/videos/196-nested-model-form-part-1.m4v" length="11686887" type="video/mp4"/>
      <link>http://railscasts.com/episodes/196-nested-model-form-part-1</link>
      <guid isPermaLink="false">nested-model-form-part-1</guid>
      <itunes:author>Ryan Bates</itunes:author>
      <itunes:subtitle>Handling multiple models in a single form is much easier with the accepts_nested_attributes_for method. See how to use this method to handle nested...</itunes:subtitle>
      <itunes:summary>Handling multiple models in a single form is much easier with the accepts_nested_attributes_for method. See how to use this method to handle nested model fields.</itunes:summary>
      <itunes:explicit>no</itunes:explicit>
      <itunes:duration>11:09</itunes:duration>
    </item>
    <item>
      <title>#195 My Favorite Web Apps in 2009</title>
      <description>Here I show several of my favorite web applications which I found most helpful as a Ruby developer over the past year.</description>
      <pubDate>Mon, 04 Jan 2010 00:00:00 -0800</pubDate>
      <enclosure url="http://media.railscasts.com/assets/episodes/videos/195-my-favorite-web-apps-in-2009.m4v" length="8344849" type="video/mp4"/>
      <link>http://railscasts.com/episodes/195-my-favorite-web-apps-in-2009</link>
      <guid isPermaLink="false">my-favorite-web-apps-in-2009</guid>
      <itunes:author>Ryan Bates</itunes:author>
      <itunes:subtitle>Here I show several of my favorite web applications which I found most helpful as a Ruby developer over the past year.</itunes:subtitle>
      <itunes:summary>Here I show several of my favorite web applications which I found most helpful as a Ruby developer over the past year.</itunes:summary>
      <itunes:explicit>no</itunes:explicit>
      <itunes:duration>6:26</itunes:duration>
    </item>
    <item>
      <title>#194 MongoDB and MongoMapper</title>
      <description>MongoDB is a document based database engine. Learn how to access it through MongoMapper in this episode.</description>
      <pubDate>Mon, 28 Dec 2009 00:00:00 -0800</pubDate>
      <enclosure url="http://media.railscasts.com/assets/episodes/videos/194-mongodb-and-mongomapper.m4v" length="14006594" type="video/mp4"/>
      <link>http://railscasts.com/episodes/194-mongodb-and-mongomapper</link>
      <guid isPermaLink="false">mongodb-and-mongomapper</guid>
      <itunes:author>Ryan Bates</itunes:author>
      <itunes:subtitle>MongoDB is a document based database engine. Learn how to access it through MongoMapper in this episode.</itunes:subtitle>
      <itunes:summary>MongoDB is a document based database engine. Learn how to access it through MongoMapper in this episode.</itunes:summary>
      <itunes:explicit>no</itunes:explicit>
      <itunes:duration>13:13</itunes:duration>
    </item>
    <item>
      <title>#193 Tableless Model</title>
      <description>If you want to create a model without a database backend, you simply need to define a couple methods in the model like I show in this episode.</description>
      <pubDate>Mon, 21 Dec 2009 00:00:00 -0800</pubDate>
      <enclosure url="http://media.railscasts.com/assets/episodes/videos/193-tableless-model.m4v" length="9830711" type="video/mp4"/>
      <link>http://railscasts.com/episodes/193-tableless-model</link>
      <guid isPermaLink="false">tableless-model</guid>
      <itunes:author>Ryan Bates</itunes:author>
      <itunes:subtitle>If you want to create a model without a database backend, you simply need to define a couple methods in the model like I show in this episode.</itunes:subtitle>
      <itunes:summary>If you want to create a model without a database backend, you simply need to define a couple methods in the model like I show in this episode.</itunes:summary>
      <itunes:explicit>no</itunes:explicit>
      <itunes:duration>8:28</itunes:duration>
    </item>
    <item>
      <title>#192 Authorization with CanCan</title>
      <description>CanCan is a simple authorization plugin that offers a lot of flexibility. See how to use it in this episode.</description>
      <pubDate>Mon, 14 Dec 2009 00:00:00 -0800</pubDate>
      <enclosure url="http://media.railscasts.com/assets/episodes/videos/192-authorization-with-cancan.m4v" length="18162608" type="video/mp4"/>
      <link>http://railscasts.com/episodes/192-authorization-with-cancan</link>
      <guid isPermaLink="false">authorization-with-cancan</guid>
      <itunes:author>Ryan Bates</itunes:author>
      <itunes:subtitle>CanCan is a simple authorization plugin that offers a lot of flexibility. See how to use it in this episode.</itunes:subtitle>
      <itunes:summary>CanCan is a simple authorization plugin that offers a lot of flexibility. See how to use it in this episode.</itunes:summary>
      <itunes:explicit>no</itunes:explicit>
      <itunes:duration>15:57</itunes:duration>
    </item>
    <item>
      <title>#191 Mechanize</title>
      <description>Mechanize extends the power of Nokogiri allowing you to interact with multiple pages on the site: click links, submit forms, etc.</description>
      <pubDate>Mon, 07 Dec 2009 00:00:00 -0800</pubDate>
      <enclosure url="http://media.railscasts.com/assets/episodes/videos/191-mechanize.m4v" length="12583232" type="video/mp4"/>
      <link>http://railscasts.com/episodes/191-mechanize</link>
      <guid isPermaLink="false">mechanize</guid>
      <itunes:author>Ryan Bates</itunes:author>
      <itunes:subtitle>Mechanize extends the power of Nokogiri allowing you to interact with multiple pages on the site: click links, submit forms, etc.</itunes:subtitle>
      <itunes:summary>Mechanize extends the power of Nokogiri allowing you to interact with multiple pages on the site: click links, submit forms, etc.</itunes:summary>
      <itunes:explicit>no</itunes:explicit>
      <itunes:duration>10:16</itunes:duration>
    </item>
    <item>
      <title>#190 Screen Scraping with Nokogiri</title>
      <description>Screen scraping is easy with Nokogiri and SelectorGadget.</description>
      <pubDate>Mon, 30 Nov 2009 00:00:00 -0800</pubDate>
      <enclosure url="http://media.railscasts.com/assets/episodes/videos/190-screen-scraping-with-nokogiri.m4v" length="17561734" type="video/mp4"/>
      <link>http://railscasts.com/episodes/190-screen-scraping-with-nokogiri</link>
      <guid isPermaLink="false">screen-scraping-with-nokogiri</guid>
      <itunes:author>Ryan Bates</itunes:author>
      <itunes:subtitle>Screen scraping is easy with Nokogiri and SelectorGadget.</itunes:subtitle>
      <itunes:summary>Screen scraping is easy with Nokogiri and SelectorGadget.</itunes:summary>
      <itunes:explicit>no</itunes:explicit>
      <itunes:duration>13:34</itunes:duration>
    </item>
    <item>
      <title>#189 Embedded Association</title>
      <description>Learn how to set up a one-to-many or many-to-many association which is entirely embedded into a single column through a string or bitmask.</description>
      <pubDate>Mon, 23 Nov 2009 00:00:00 -0800</pubDate>
      <enclosure url="http://media.railscasts.com/assets/episodes/videos/189-embedded-association.m4v" length="14145466" type="video/mp4"/>
      <link>http://railscasts.com/episodes/189-embedded-association</link>
      <guid isPermaLink="false">embedded-association</guid>
      <itunes:author>Ryan Bates</itunes:author>
      <itunes:subtitle>Learn how to set up a one-to-many or many-to-many association which is entirely embedded into a single column through a string or bitmask.</itunes:subtitle>
      <itunes:summary>Learn how to set up a one-to-many or many-to-many association which is entirely embedded into a single column through a string or bitmask.</itunes:summary>
      <itunes:explicit>no</itunes:explicit>
      <itunes:duration>14:03</itunes:duration>
    </item>
    <item>
      <title>#188 Declarative Authorization</title>
      <description>Declarative authorization provides an advanced and powerful solution for role based authorization.</description>
      <pubDate>Mon, 16 Nov 2009 00:00:00 -0800</pubDate>
      <enclosure url="http://media.railscasts.com/assets/episodes/videos/188-declarative-authorization.m4v" length="18167529" type="video/mp4"/>
      <link>http://railscasts.com/episodes/188-declarative-authorization</link>
      <guid isPermaLink="false">declarative-authorization</guid>
      <itunes:author>Ryan Bates</itunes:author>
      <itunes:subtitle>Declarative authorization provides an advanced and powerful solution for role based authorization.</itunes:subtitle>
      <itunes:summary>Declarative authorization provides an advanced and powerful solution for role based authorization.</itunes:summary>
      <itunes:explicit>no</itunes:explicit>
      <itunes:duration>15:27</itunes:duration>
    </item>
    <item>
      <title>#187 Testing Exceptions</title>
      <description>Sometimes bad code slips into production and triggers a 500 error. Learn how to be notified of this and resolve it through integration tests.</description>
      <pubDate>Mon, 09 Nov 2009 00:00:00 -0800</pubDate>
      <enclosure url="http://media.railscasts.com/assets/episodes/videos/187-testing-exceptions.m4v" length="10539240" type="video/mp4"/>
      <link>http://railscasts.com/episodes/187-testing-exceptions</link>
      <guid isPermaLink="false">testing-exceptions</guid>
      <itunes:author>Ryan Bates</itunes:author>
      <itunes:subtitle>Sometimes bad code slips into production and triggers a 500 error. Learn how to be notified of this and resolve it through integration tests.</itunes:subtitle>
      <itunes:summary>Sometimes bad code slips into production and triggers a 500 error. Learn how to be notified of this and resolve it through integration tests.</itunes:summary>
      <itunes:explicit>no</itunes:explicit>
      <itunes:duration>10:01</itunes:duration>
    </item>
    <item>
      <title>#186 Pickle with Cucumber</title>
      <description>Pickle adds many convenient Cucumber steps for generating models. Also learn about table diffs in this episode.</description>
      <pubDate>Mon, 02 Nov 2009 00:00:00 -0800</pubDate>
      <enclosure url="http://media.railscasts.com/assets/episodes/videos/186-pickle-with-cucumber.m4v" length="18490489" type="video/mp4"/>
      <link>http://railscasts.com/episodes/186-pickle-with-cucumber</link>
      <guid isPermaLink="false">pickle-with-cucumber</guid>
      <itunes:author>Ryan Bates</itunes:author>
      <itunes:subtitle>Pickle adds many convenient Cucumber steps for generating models. Also learn about table diffs in this episode.</itunes:subtitle>
      <itunes:summary>Pickle adds many convenient Cucumber steps for generating models. Also learn about table diffs in this episode.</itunes:summary>
      <itunes:explicit>no</itunes:explicit>
      <itunes:duration>16:43</itunes:duration>
    </item>
    <item>
      <title>#185 Formtastic Part 2</title>
      <description>Learn about some of the more advanced functionality of Formtastic including handling many-to-many associations, required fields, and styling.</description>
      <pubDate>Mon, 26 Oct 2009 00:00:00 -0700</pubDate>
      <enclosure url="http://media.railscasts.com/assets/episodes/videos/185-formtastic-part-2.m4v" length="10485595" type="video/mp4"/>
      <link>http://railscasts.com/episodes/185-formtastic-part-2</link>
      <guid isPermaLink="false">formtastic-part-2</guid>
      <itunes:author>Ryan Bates</itunes:author>
      <itunes:subtitle>Learn about some of the more advanced functionality of Formtastic including handling many-to-many associations, required fields, and styling.</itunes:subtitle>
      <itunes:summary>Learn about some of the more advanced functionality of Formtastic including handling many-to-many associations, required fields, and styling.</itunes:summary>
      <itunes:explicit>no</itunes:explicit>
      <itunes:duration>9:11</itunes:duration>
    </item>
    <item>
      <title>#184 Formtastic Part 1</title>
      <description>Formtastic is a concise way to generate form views. In this episode (part 1 of 2) I show how to generate both a simple form and a more complex one which is customized with options.</description>
      <pubDate>Mon, 19 Oct 2009 00:00:00 -0700</pubDate>
      <enclosure url="http://media.railscasts.com/assets/episodes/videos/184-formtastic-part-1.m4v" length="10839561" type="video/mp4"/>
      <link>http://railscasts.com/episodes/184-formtastic-part-1</link>
      <guid isPermaLink="false">formtastic-part-1</guid>
      <itunes:author>Ryan Bates</itunes:author>
      <itunes:subtitle>Formtastic is a concise way to generate form views. In this episode (part 1 of 2) I show how to generate both a simple form and a more complex one ...</itunes:subtitle>
      <itunes:summary>Formtastic is a concise way to generate form views. In this episode (part 1 of 2) I show how to generate both a simple form and a more complex one which is customized with options.</itunes:summary>
      <itunes:explicit>no</itunes:explicit>
      <itunes:duration>10:41</itunes:duration>
    </item>
    <item>
      <title>#183 Gemcutter &amp; Jeweler</title>
      <description>Gemcutter is a new service for hosting RubyGems, and Jeweler provides an automated way to release versions of a gem.</description>
      <pubDate>Mon, 12 Oct 2009 00:00:00 -0700</pubDate>
      <enclosure url="http://media.railscasts.com/assets/episodes/videos/183-gemcutter-jeweler.m4v" length="9304064" type="video/mp4"/>
      <link>http://railscasts.com/episodes/183-gemcutter-jeweler</link>
      <guid isPermaLink="false">gemcutter-jeweler</guid>
      <itunes:author>Ryan Bates</itunes:author>
      <itunes:subtitle>Gemcutter is a new service for hosting RubyGems, and Jeweler provides an automated way to release versions of a gem.</itunes:subtitle>
      <itunes:summary>Gemcutter is a new service for hosting RubyGems, and Jeweler provides an automated way to release versions of a gem.</itunes:summary>
      <itunes:explicit>no</itunes:explicit>
      <itunes:duration>7:24</itunes:duration>
    </item>
    <item>
      <title>#182 Cropping Images</title>
      <description>Present a slick user interface for cropping image attachments using Jcrop and Paperclip.</description>
      <pubDate>Mon, 05 Oct 2009 00:00:00 -0700</pubDate>
      <enclosure url="http://media.railscasts.com/assets/episodes/videos/182-cropping-images.m4v" length="17053443" type="video/mp4"/>
      <link>http://railscasts.com/episodes/182-cropping-images</link>
      <guid isPermaLink="false">cropping-images</guid>
      <itunes:author>Ryan Bates</itunes:author>
      <itunes:subtitle>Present a slick user interface for cropping image attachments using Jcrop and Paperclip.</itunes:subtitle>
      <itunes:summary>Present a slick user interface for cropping image attachments using Jcrop and Paperclip.</itunes:summary>
      <itunes:explicit>no</itunes:explicit>
      <itunes:duration>14:07</itunes:duration>
    </item>
    <item>
      <title>#181 Include vs Joins</title>
      <description>The :include and :joins options for the find method can be a little confusing because they are so similar. In this episode I show specifically when to use which option.</description>
      <pubDate>Mon, 28 Sep 2009 00:00:00 -0700</pubDate>
      <enclosure url="http://media.railscasts.com/assets/episodes/videos/181-include-vs-joins.m4v" length="13974196" type="video/mp4"/>
      <link>http://railscasts.com/episodes/181-include-vs-joins</link>
      <guid isPermaLink="false">include-vs-joins</guid>
      <itunes:author>Ryan Bates</itunes:author>
      <itunes:subtitle>The :include and :joins options for the find method can be a little confusing because they are so similar. In this episode I show specifically when...</itunes:subtitle>
      <itunes:summary>The :include and :joins options for the find method can be a little confusing because they are so similar. In this episode I show specifically when to use which option.</itunes:summary>
      <itunes:explicit>no</itunes:explicit>
      <itunes:duration>11:37</itunes:duration>
    </item>
    <item>
      <title>#180 Finding Unused CSS</title>
      <description>Over time a CSS file can become large and filled with unused selectors. In this episode I show how to use the Deadweight gem to determine which CSS selects you can remove.</description>
      <pubDate>Mon, 21 Sep 2009 00:00:00 -0700</pubDate>
      <enclosure url="http://media.railscasts.com/assets/episodes/videos/180-finding-unused-css.m4v" length="9117571" type="video/mp4"/>
      <link>http://railscasts.com/episodes/180-finding-unused-css</link>
      <guid isPermaLink="false">finding-unused-css</guid>
      <itunes:author>Ryan Bates</itunes:author>
      <itunes:subtitle>Over time a CSS file can become large and filled with unused selectors. In this episode I show how to use the Deadweight gem to determine which CSS...</itunes:subtitle>
      <itunes:summary>Over time a CSS file can become large and filled with unused selectors. In this episode I show how to use the Deadweight gem to determine which CSS selects you can remove.</itunes:summary>
      <itunes:explicit>no</itunes:explicit>
      <itunes:duration>8:04</itunes:duration>
    </item>
    <item>
      <title>#179 Seed Data</title>
      <description>Rails 2.3.4 includes a conventional way to add seed data to your application - no more including it in the migration files.</description>
      <pubDate>Mon, 14 Sep 2009 00:00:00 -0700</pubDate>
      <enclosure url="http://media.railscasts.com/assets/episodes/videos/179-seed-data.m4v" length="8212985" type="video/mp4"/>
      <link>http://railscasts.com/episodes/179-seed-data</link>
      <guid isPermaLink="false">seed-data</guid>
      <itunes:author>Ryan Bates</itunes:author>
      <itunes:subtitle>Rails 2.3.4 includes a conventional way to add seed data to your application - no more including it in the migration files.</itunes:subtitle>
      <itunes:summary>Rails 2.3.4 includes a conventional way to add seed data to your application - no more including it in the migration files.</itunes:summary>
      <itunes:explicit>no</itunes:explicit>
      <itunes:duration>7:56</itunes:duration>
    </item>
    <item>
      <title>#178 7 Security Tips</title>
      <description>Security is important! Here I show seven different security flaws which are common to Rails applications ranging from mass assignment to CSRF protection.</description>
      <pubDate>Mon, 07 Sep 2009 00:00:00 -0700</pubDate>
      <enclosure url="http://media.railscasts.com/assets/episodes/videos/178-seven-security-tips.m4v" length="15909432" type="video/mp4"/>
      <link>http://railscasts.com/episodes/178-seven-security-tips</link>
      <guid isPermaLink="false">seven-security-tips</guid>
      <itunes:author>Ryan Bates</itunes:author>
      <itunes:subtitle>Security is important! Here I show seven different security flaws which are common to Rails applications ranging from mass assignment to CSRF prote...</itunes:subtitle>
      <itunes:summary>Security is important! Here I show seven different security flaws which are common to Rails applications ranging from mass assignment to CSRF protection.</itunes:summary>
      <itunes:explicit>no</itunes:explicit>
      <itunes:duration>14:53</itunes:duration>
    </item>
    <item>
      <title>#177 Model Versioning</title>
      <description>If you need to keep track of a model's history of changes and switch between versions, consider using the vestal_versions gem like I show in this episode.</description>
      <pubDate>Mon, 31 Aug 2009 00:00:00 -0700</pubDate>
      <enclosure url="http://media.railscasts.com/assets/episodes/videos/177-model-versioning.m4v" length="9480869" type="video/mp4"/>
      <link>http://railscasts.com/episodes/177-model-versioning</link>
      <guid isPermaLink="false">model-versioning</guid>
      <itunes:author>Ryan Bates</itunes:author>
      <itunes:subtitle>If you need to keep track of a model's history of changes and switch between versions, consider using the vestal_versions gem like I show in this e...</itunes:subtitle>
      <itunes:summary>If you need to keep track of a model's history of changes and switch between versions, consider using the vestal_versions gem like I show in this episode.</itunes:summary>
      <itunes:explicit>no</itunes:explicit>
      <itunes:duration>9:28</itunes:duration>
    </item>
    <item>
      <title>#176 Searchlogic</title>
      <description>Searchlogic makes searching models easier than ever with its assortment of named scopes. In this episode I show you how to create simple and advanced searches.</description>
      <pubDate>Mon, 24 Aug 2009 00:00:00 -0700</pubDate>
      <enclosure url="http://media.railscasts.com/assets/episodes/videos/176-searchlogic.m4v" length="15751297" type="video/mp4"/>
      <link>http://railscasts.com/episodes/176-searchlogic</link>
      <guid isPermaLink="false">searchlogic</guid>
      <itunes:author>Ryan Bates</itunes:author>
      <itunes:subtitle>Searchlogic makes searching models easier than ever with its assortment of named scopes. In this episode I show you how to create simple and advanc...</itunes:subtitle>
      <itunes:summary>Searchlogic makes searching models easier than ever with its assortment of named scopes. In this episode I show you how to create simple and advanced searches.</itunes:summary>
      <itunes:explicit>no</itunes:explicit>
      <itunes:duration>13:51</itunes:duration>
    </item>
    <item>
      <title>#175 AJAX History and Bookmarks</title>
      <description>Browser page history and bookmarks do not usually work with AJAX requests, but in this episode I show you how to remedy this problem using a simple jQuery plugin.</description>
      <pubDate>Mon, 17 Aug 2009 00:00:00 -0700</pubDate>
      <enclosure url="http://media.railscasts.com/assets/episodes/videos/175-ajax-history-and-bookmarks.m4v" length="12105384" type="video/mp4"/>
      <link>http://railscasts.com/episodes/175-ajax-history-and-bookmarks</link>
      <guid isPermaLink="false">ajax-history-and-bookmarks</guid>
      <itunes:author>Ryan Bates</itunes:author>
      <itunes:subtitle>Browser page history and bookmarks do not usually work with AJAX requests, but in this episode I show you how to remedy this problem using a simple...</itunes:subtitle>
      <itunes:summary>Browser page history and bookmarks do not usually work with AJAX requests, but in this episode I show you how to remedy this problem using a simple jQuery plugin.</itunes:summary>
      <itunes:explicit>no</itunes:explicit>
      <itunes:duration>11:04</itunes:duration>
    </item>
    <item>
      <title>#174 Pagination with AJAX</title>
      <description>Learn an easy, unobtrusive way to add AJAX functionality to an existing set of pagination links using jQuery.</description>
      <pubDate>Mon, 10 Aug 2009 00:00:00 -0700</pubDate>
      <enclosure url="http://media.railscasts.com/assets/episodes/videos/174-pagination-with-ajax.m4v" length="13925791" type="video/mp4"/>
      <link>http://railscasts.com/episodes/174-pagination-with-ajax</link>
      <guid isPermaLink="false">pagination-with-ajax</guid>
      <itunes:author>Ryan Bates</itunes:author>
      <itunes:subtitle>Learn an easy, unobtrusive way to add AJAX functionality to an existing set of pagination links using jQuery.</itunes:subtitle>
      <itunes:summary>Learn an easy, unobtrusive way to add AJAX functionality to an existing set of pagination links using jQuery.</itunes:summary>
      <itunes:explicit>no</itunes:explicit>
      <itunes:duration>13:18</itunes:duration>
    </item>
    <item>
      <title>#173 Screen Scraping with ScrAPI</title>
      <description>Screen scraping is not pretty, but sometimes it's your only option to extract content from an external site. In this episode I show you how to fetch product prices using ScrAPI.</description>
      <pubDate>Mon, 03 Aug 2009 00:00:00 -0700</pubDate>
      <enclosure url="http://media.railscasts.com/assets/episodes/videos/173-screen-scraping-with-scrapi.m4v" length="18007083" type="video/mp4"/>
      <link>http://railscasts.com/episodes/173-screen-scraping-with-scrapi</link>
      <guid isPermaLink="false">screen-scraping-with-scrapi</guid>
      <itunes:author>Ryan Bates</itunes:author>
      <itunes:subtitle>Screen scraping is not pretty, but sometimes it's your only option to extract content from an external site. In this episode I show you how to fetc...</itunes:subtitle>
      <itunes:summary>Screen scraping is not pretty, but sometimes it's your only option to extract content from an external site. In this episode I show you how to fetch product prices using ScrAPI.</itunes:summary>
      <itunes:explicit>no</itunes:explicit>
      <itunes:duration>15:23</itunes:duration>
    </item>
    <item>
      <title>#172 Touch and Cache</title>
      <description>Rails 2.3.3 brings us a new feature called "touch". See how to use this to auto-expire associated caches in this episode.</description>
      <pubDate>Mon, 27 Jul 2009 00:00:00 -0700</pubDate>
      <enclosure url="http://media.railscasts.com/assets/episodes/videos/172-touch-and-cache.m4v" length="8098514" type="video/mp4"/>
      <link>http://railscasts.com/episodes/172-touch-and-cache</link>
      <guid isPermaLink="false">touch-and-cache</guid>
      <itunes:author>Ryan Bates</itunes:author>
      <itunes:subtitle>Rails 2.3.3 brings us a new feature called "touch". See how to use this to auto-expire associated caches in this episode.</itunes:subtitle>
      <itunes:summary>Rails 2.3.3 brings us a new feature called "touch". See how to use this to auto-expire associated caches in this episode.</itunes:summary>
      <itunes:explicit>no</itunes:explicit>
      <itunes:duration>6:38</itunes:duration>
    </item>
    <item>
      <title>#171 Delayed Job</title>
      <description>Is there a long running task which should be handled in the background? One of the best ways is using the delayed_job plugin like I show in this episode.</description>
      <pubDate>Mon, 20 Jul 2009 00:00:00 -0700</pubDate>
      <enclosure url="http://media.railscasts.com/assets/episodes/videos/171-delayed-job.m4v" length="11811701" type="video/mp4"/>
      <link>http://railscasts.com/episodes/171-delayed-job</link>
      <guid isPermaLink="false">delayed-job</guid>
      <itunes:author>Ryan Bates</itunes:author>
      <itunes:subtitle>Is there a long running task which should be handled in the background? One of the best ways is using the delayed_job plugin like I show in this ep...</itunes:subtitle>
      <itunes:summary>Is there a long running task which should be handled in the background? One of the best ways is using the delayed_job plugin like I show in this episode.</itunes:summary>
      <itunes:explicit>no</itunes:explicit>
      <itunes:duration>10:56</itunes:duration>
    </item>
    <item>
      <title>#170 OpenID with Authlogic</title>
      <description>Learn how to apply OpenID to an existing Authlogic setup as I show in this episode. This builds upon the app from episode 160.</description>
      <pubDate>Mon, 13 Jul 2009 00:00:00 -0700</pubDate>
      <enclosure url="http://media.railscasts.com/assets/episodes/videos/170-openid-with-authlogic.m4v" length="13051791" type="video/mp4"/>
      <link>http://railscasts.com/episodes/170-openid-with-authlogic</link>
      <guid isPermaLink="false">openid-with-authlogic</guid>
      <itunes:author>Ryan Bates</itunes:author>
      <itunes:subtitle>Learn how to apply OpenID to an existing Authlogic setup as I show in this episode. This builds upon the app from episode 160.</itunes:subtitle>
      <itunes:summary>Learn how to apply OpenID to an existing Authlogic setup as I show in this episode. This builds upon the app from episode 160.</itunes:summary>
      <itunes:explicit>no</itunes:explicit>
      <itunes:duration>11:39</itunes:duration>
    </item>
    <item>
      <title>#169 Dynamic Page Caching</title>
      <description>Use JavaScript to allow dynamic content in a page cache. In this episode I show you how to insert the user-specific content into a page through JavaScript.</description>
      <pubDate>Mon, 06 Jul 2009 00:00:00 -0700</pubDate>
      <enclosure url="http://media.railscasts.com/assets/episodes/videos/169-dynamic-page-caching.m4v" length="12807589" type="video/mp4"/>
      <link>http://railscasts.com/episodes/169-dynamic-page-caching</link>
      <guid isPermaLink="false">dynamic-page-caching</guid>
      <itunes:author>Ryan Bates</itunes:author>
      <itunes:subtitle>Use JavaScript to allow dynamic content in a page cache. In this episode I show you how to insert the user-specific content into a page through Jav...</itunes:subtitle>
      <itunes:summary>Use JavaScript to allow dynamic content in a page cache. In this episode I show you how to insert the user-specific content into a page through JavaScript.</itunes:summary>
      <itunes:explicit>no</itunes:explicit>
      <itunes:duration>11:38</itunes:duration>
    </item>
    <item>
      <title>#168 Feed Parsing</title>
      <description>Learn two different techniques for parsing an RSS feed using Feedzirra in this episode!</description>
      <pubDate>Mon, 29 Jun 2009 00:00:00 -0700</pubDate>
      <enclosure url="http://media.railscasts.com/assets/episodes/videos/168-feed-parsing.m4v" length="12514111" type="video/mp4"/>
      <link>http://railscasts.com/episodes/168-feed-parsing</link>
      <guid isPermaLink="false">feed-parsing</guid>
      <itunes:author>Ryan Bates</itunes:author>
      <itunes:subtitle>Learn two different techniques for parsing an RSS feed using Feedzirra in this episode!</itunes:subtitle>
      <itunes:summary>Learn two different techniques for parsing an RSS feed using Feedzirra in this episode!</itunes:summary>
      <itunes:explicit>no</itunes:explicit>
      <itunes:duration>10:31</itunes:duration>
    </item>
    <item>
      <title>#167 More on Virtual Attributes</title>
      <description>Use a virtual attribute to implement a simple tagging feature. In this episode I show you how to assign virtual attributes through a callback instead of a setter method.</description>
      <pubDate>Mon, 22 Jun 2009 00:00:00 -0700</pubDate>
      <enclosure url="http://media.railscasts.com/assets/episodes/videos/167-more-on-virtual-attributes.m4v" length="7641978" type="video/mp4"/>
      <link>http://railscasts.com/episodes/167-more-on-virtual-attributes</link>
      <guid isPermaLink="false">more-on-virtual-attributes</guid>
      <itunes:author>Ryan Bates</itunes:author>
      <itunes:subtitle>Use a virtual attribute to implement a simple tagging feature. In this episode I show you how to assign virtual attributes through a callback inste...</itunes:subtitle>
      <itunes:summary>Use a virtual attribute to implement a simple tagging feature. In this episode I show you how to assign virtual attributes through a callback instead of a setter method.</itunes:summary>
      <itunes:explicit>no</itunes:explicit>
      <itunes:duration>7:44</itunes:duration>
    </item>
    <item>
      <title>#166 Metric Fu</title>
      <description>Metric Fu is a compilation of several tools to help find areas of code that could be improved. In this episode I show you how to setup this tool on the railscasts.com source code.</description>
      <pubDate>Mon, 15 Jun 2009 00:00:00 -0700</pubDate>
      <enclosure url="http://media.railscasts.com/assets/episodes/videos/166-metric-fu.m4v" length="11736630" type="video/mp4"/>
      <link>http://railscasts.com/episodes/166-metric-fu</link>
      <guid isPermaLink="false">metric-fu</guid>
      <itunes:author>Ryan Bates</itunes:author>
      <itunes:subtitle>Metric Fu is a compilation of several tools to help find areas of code that could be improved. In this episode I show you how to setup this tool on...</itunes:subtitle>
      <itunes:summary>Metric Fu is a compilation of several tools to help find areas of code that could be improved. In this episode I show you how to setup this tool on the railscasts.com source code.</itunes:summary>
      <itunes:explicit>no</itunes:explicit>
      <itunes:duration>9:21</itunes:duration>
    </item>
    <item>
      <title>#165 Edit Multiple</title>
      <description>Use checkboxes to select multiple records and edit them all in one form as shown in this episode. With virtual attributes you can even edit values relatively!</description>
      <pubDate>Mon, 08 Jun 2009 00:00:00 -0700</pubDate>
      <enclosure url="http://media.railscasts.com/assets/episodes/videos/165-edit-multiple.m4v" length="16290528" type="video/mp4"/>
      <link>http://railscasts.com/episodes/165-edit-multiple</link>
      <guid isPermaLink="false">edit-multiple</guid>
      <itunes:author>Ryan Bates</itunes:author>
      <itunes:subtitle>Use checkboxes to select multiple records and edit them all in one form as shown in this episode. With virtual attributes you can even edit values ...</itunes:subtitle>
      <itunes:summary>Use checkboxes to select multiple records and edit them all in one form as shown in this episode. With virtual attributes you can even edit values relatively!</itunes:summary>
      <itunes:explicit>no</itunes:explicit>
      <itunes:duration>14:26</itunes:duration>
    </item>
    <item>
      <title>#164 Cron in Ruby</title>
      <description>Cron is great for handling recurring tasks, but it is an external dependency with a crazy syntax. In this episode I show you how to use Whenever to create cron jobs with Ruby.</description>
      <pubDate>Mon, 01 Jun 2009 00:00:00 -0700</pubDate>
      <enclosure url="http://media.railscasts.com/assets/episodes/videos/164-cron-in-ruby.m4v" length="8721609" type="video/mp4"/>
      <link>http://railscasts.com/episodes/164-cron-in-ruby</link>
      <guid isPermaLink="false">cron-in-ruby</guid>
      <itunes:author>Ryan Bates</itunes:author>
      <itunes:subtitle>Cron is great for handling recurring tasks, but it is an external dependency with a crazy syntax. In this episode I show you how to use Whenever to...</itunes:subtitle>
      <itunes:summary>Cron is great for handling recurring tasks, but it is an external dependency with a crazy syntax. In this episode I show you how to use Whenever to create cron jobs with Ruby.</itunes:summary>
      <itunes:explicit>no</itunes:explicit>
      <itunes:duration>8:13</itunes:duration>
    </item>
    <item>
      <title>#163 Self-Referential Association</title>
      <description>Creating a social networking site often requires a self-referential association on the User model to define friends/followers. In this episode I show how to do exactly that.</description>
      <pubDate>Mon, 25 May 2009 00:00:00 -0700</pubDate>
      <enclosure url="http://media.railscasts.com/assets/episodes/videos/163-self-referential-association.m4v" length="15535251" type="video/mp4"/>
      <link>http://railscasts.com/episodes/163-self-referential-association</link>
      <guid isPermaLink="false">self-referential-association</guid>
      <itunes:author>Ryan Bates</itunes:author>
      <itunes:subtitle>Creating a social networking site often requires a self-referential association on the User model to define friends/followers. In this episode I sh...</itunes:subtitle>
      <itunes:summary>Creating a social networking site often requires a self-referential association on the User model to define friends/followers. In this episode I show how to do exactly that.</itunes:summary>
      <itunes:explicit>no</itunes:explicit>
      <itunes:duration>14:36</itunes:duration>
    </item>
    <item>
      <title>#162 Tree Based Navigation</title>
      <description>The acts_as_tree plugin provides many methods for handling a tree based association. In this episode I show how to build a navigation system with tabs, subpages, and breadcrumbs.</description>
      <pubDate>Mon, 18 May 2009 00:00:00 -0700</pubDate>
      <enclosure url="http://media.railscasts.com/assets/episodes/videos/162-tree-based-navigation.m4v" length="11494398" type="video/mp4"/>
      <link>http://railscasts.com/episodes/162-tree-based-navigation</link>
      <guid isPermaLink="false">tree-based-navigation</guid>
      <itunes:author>Ryan Bates</itunes:author>
      <itunes:subtitle>The acts_as_tree plugin provides many methods for handling a tree based association. In this episode I show how to build a navigation system with t...</itunes:subtitle>
      <itunes:summary>The acts_as_tree plugin provides many methods for handling a tree based association. In this episode I show how to build a navigation system with tabs, subpages, and breadcrumbs.</itunes:summary>
      <itunes:explicit>no</itunes:explicit>
      <itunes:duration>11:02</itunes:duration>
    </item>
    <item>
      <title>#161 Three Profiling Tools</title>
      <description>Ever want to know what Rails is doing under the hood during a request? In this episode I show three different profiling tools: New Relic RPM, FiveRuns TuneUp, and Rack::Bug.</description>
      <pubDate>Mon, 11 May 2009 00:00:00 -0700</pubDate>
      <enclosure url="http://media.railscasts.com/assets/episodes/videos/161-three-profiling-tools.m4v" length="9284726" type="video/mp4"/>
      <link>http://railscasts.com/episodes/161-three-profiling-tools</link>
      <guid isPermaLink="false">three-profiling-tools</guid>
      <itunes:author>Ryan Bates</itunes:author>
      <itunes:subtitle>Ever want to know what Rails is doing under the hood during a request? In this episode I show three different profiling tools: New Relic RPM, FiveR...</itunes:subtitle>
      <itunes:summary>Ever want to know what Rails is doing under the hood during a request? In this episode I show three different profiling tools: New Relic RPM, FiveRuns TuneUp, and Rack::Bug.</itunes:summary>
      <itunes:explicit>no</itunes:explicit>
      <itunes:duration>7:02</itunes:duration>
    </item>
    <item>
      <title>#160 Authlogic</title>
      <description>Authentication can get very complex. In this episode I show how Authlogic can handle this complexity while you stay in control of how it is presented to the user.</description>
      <pubDate>Mon, 04 May 2009 00:00:00 -0700</pubDate>
      <enclosure url="http://media.railscasts.com/assets/episodes/videos/160-authlogic.m4v" length="15939528" type="video/mp4"/>
      <link>http://railscasts.com/episodes/160-authlogic</link>
      <guid isPermaLink="false">authlogic</guid>
      <itunes:author>Ryan Bates</itunes:author>
      <itunes:subtitle>Authentication can get very complex. In this episode I show how Authlogic can handle this complexity while you stay in control of how it is present...</itunes:subtitle>
      <itunes:summary>Authentication can get very complex. In this episode I show how Authlogic can handle this complexity while you stay in control of how it is presented to the user.</itunes:summary>
      <itunes:explicit>no</itunes:explicit>
      <itunes:duration>14:06</itunes:duration>
    </item>
    <item>
      <title>#159 More on Cucumber</title>
      <description>There is a lot more to Cucumber than I showed in an earlier episode. See how to refactor complex scenarios in this episode.</description>
      <pubDate>Mon, 27 Apr 2009 00:00:00 -0700</pubDate>
      <enclosure url="http://media.railscasts.com/assets/episodes/videos/159-more-on-cucumber.m4v" length="20768056" type="video/mp4"/>
      <link>http://railscasts.com/episodes/159-more-on-cucumber</link>
      <guid isPermaLink="false">more-on-cucumber</guid>
      <itunes:author>Ryan Bates</itunes:author>
      <itunes:subtitle>There is a lot more to Cucumber than I showed in an earlier episode. See how to refactor complex scenarios in this episode.</itunes:subtitle>
      <itunes:summary>There is a lot more to Cucumber than I showed in an earlier episode. See how to refactor complex scenarios in this episode.</itunes:summary>
      <itunes:explicit>no</itunes:explicit>
      <itunes:duration>18:56</itunes:duration>
    </item>
    <item>
      <title>#158 Factories not Fixtures</title>
      <description>Fixtures are external dependencies which can make tests brittle and difficult to read. In this episode I show a better alternative using factories to generate the needed records.</description>
      <pubDate>Mon, 20 Apr 2009 00:00:00 -0700</pubDate>
      <enclosure url="http://media.railscasts.com/assets/episodes/videos/158-factories-not-fixtures.m4v" length="13807920" type="video/mp4"/>
      <link>http://railscasts.com/episodes/158-factories-not-fixtures</link>
      <guid isPermaLink="false">factories-not-fixtures</guid>
      <itunes:author>Ryan Bates</itunes:author>
      <itunes:subtitle>Fixtures are external dependencies which can make tests brittle and difficult to read. In this episode I show a better alternative using factories ...</itunes:subtitle>
      <itunes:summary>Fixtures are external dependencies which can make tests brittle and difficult to read. In this episode I show a better alternative using factories to generate the needed records.</itunes:summary>
      <itunes:explicit>no</itunes:explicit>
      <itunes:duration>12:36</itunes:duration>
    </item>
    <item>
      <title>#157 RSpec Matchers &amp; Macros</title>
      <description>You can improve the readability and remove duplication in RSpec by adding matchers and macros. Learn how in this episode.</description>
      <pubDate>Mon, 13 Apr 2009 00:00:00 -0700</pubDate>
      <enclosure url="http://media.railscasts.com/assets/episodes/videos/157-rspec-matchers-macros.m4v" length="22092500" type="video/mp4"/>
      <link>http://railscasts.com/episodes/157-rspec-matchers-macros</link>
      <guid isPermaLink="false">rspec-matchers-macros</guid>
      <itunes:author>Ryan Bates</itunes:author>
      <itunes:subtitle>You can improve the readability and remove duplication in RSpec by adding matchers and macros. Learn how in this episode.</itunes:subtitle>
      <itunes:summary>You can improve the readability and remove duplication in RSpec by adding matchers and macros. Learn how in this episode.</itunes:summary>
      <itunes:explicit>no</itunes:explicit>
      <itunes:duration>18:09</itunes:duration>
    </item>
    <item>
      <title>#156 Webrat</title>
      <description>If you prefer writing integration tests in ruby instead of Cucumber's plain english, consider interacting with Webrat directly as I show in this episode.</description>
      <pubDate>Mon, 06 Apr 2009 00:00:00 -0700</pubDate>
      <enclosure url="http://media.railscasts.com/assets/episodes/videos/156-webrat.m4v" length="9616008" type="video/mp4"/>
      <link>http://railscasts.com/episodes/156-webrat</link>
      <guid isPermaLink="false">webrat</guid>
      <itunes:author>Ryan Bates</itunes:author>
      <itunes:subtitle>If you prefer writing integration tests in ruby instead of Cucumber's plain english, consider interacting with Webrat directly as I show in this ep...</itunes:subtitle>
      <itunes:summary>If you prefer writing integration tests in ruby instead of Cucumber's plain english, consider interacting with Webrat directly as I show in this episode.</itunes:summary>
      <itunes:explicit>no</itunes:explicit>
      <itunes:duration>7:39</itunes:duration>
    </item>
    <item>
      <title>#155 Beginning with Cucumber</title>
      <description>Cucumber is a high-level testing framework. In this episode we will create a new Rails application from scratch using behavior driven development.</description>
      <pubDate>Mon, 30 Mar 2009 00:00:00 -0700</pubDate>
      <enclosure url="http://media.railscasts.com/assets/episodes/videos/155-beginning-with-cucumber.m4v" length="17160593" type="video/mp4"/>
      <link>http://railscasts.com/episodes/155-beginning-with-cucumber</link>
      <guid isPermaLink="false">beginning-with-cucumber</guid>
      <itunes:author>Ryan Bates</itunes:author>
      <itunes:subtitle>Cucumber is a high-level testing framework. In this episode we will create a new Rails application from scratch using behavior driven development.</itunes:subtitle>
      <itunes:summary>Cucumber is a high-level testing framework. In this episode we will create a new Rails application from scratch using behavior driven development.</itunes:summary>
      <itunes:explicit>no</itunes:explicit>
      <itunes:duration>15:22</itunes:duration>
    </item>
    <item>
      <title>#154 Polymorphic Association</title>
      <description>Polymorphic associations can be perplexing. In this episode I show you how to set it up in Active Record and then move to the controller and view layer.</description>
      <pubDate>Mon, 23 Mar 2009 00:00:00 -0700</pubDate>
      <enclosure url="http://media.railscasts.com/assets/episodes/videos/154-polymorphic-association.m4v" length="9776652" type="video/mp4"/>
      <link>http://railscasts.com/episodes/154-polymorphic-association</link>
      <guid isPermaLink="false">polymorphic-association</guid>
      <itunes:author>Ryan Bates</itunes:author>
      <itunes:subtitle>Polymorphic associations can be perplexing. In this episode I show you how to set it up in Active Record and then move to the controller and view l...</itunes:subtitle>
      <itunes:summary>Polymorphic associations can be perplexing. In this episode I show you how to set it up in Active Record and then move to the controller and view layer.</itunes:summary>
      <itunes:explicit>no</itunes:explicit>
      <itunes:duration>8:52</itunes:duration>
    </item>
    <item>
      <title>#153 PDFs with Prawn</title>
      <description>Prawn is an excellent Ruby library for generating PDF documents. Learn how to use it along with the Prawnto plugin in this episode.</description>
      <pubDate>Mon, 16 Mar 2009 00:00:00 -0700</pubDate>
      <enclosure url="http://media.railscasts.com/assets/episodes/videos/153-pdfs-with-prawn.m4v" length="10673424" type="video/mp4"/>
      <link>http://railscasts.com/episodes/153-pdfs-with-prawn</link>
      <guid isPermaLink="false">pdfs-with-prawn</guid>
      <itunes:author>Ryan Bates</itunes:author>
      <itunes:subtitle>Prawn is an excellent Ruby library for generating PDF documents. Learn how to use it along with the Prawnto plugin in this episode.</itunes:subtitle>
      <itunes:summary>Prawn is an excellent Ruby library for generating PDF documents. Learn how to use it along with the Prawnto plugin in this episode.</itunes:summary>
      <itunes:explicit>no</itunes:explicit>
      <itunes:duration>10:04</itunes:duration>
    </item>
    <item>
      <title>#152 Rails 2.3 Extras</title>
      <description>This episode finishes up this series on Rails 2.3. Here you will learn about several smaller additions in 2.3.</description>
      <pubDate>Mon, 09 Mar 2009 00:00:00 -0700</pubDate>
      <enclosure url="http://media.railscasts.com/assets/episodes/videos/152-rails-2-3-extras.m4v" length="9688444" type="video/mp4"/>
      <link>http://railscasts.com/episodes/152-rails-2-3-extras</link>
      <guid isPermaLink="false">rails-2-3-extras</guid>
      <itunes:author>Ryan Bates</itunes:author>
      <itunes:subtitle>This episode finishes up this series on Rails 2.3. Here you will learn about several smaller additions in 2.3.</itunes:subtitle>
      <itunes:summary>This episode finishes up this series on Rails 2.3. Here you will learn about several smaller additions in 2.3.</itunes:summary>
      <itunes:explicit>no</itunes:explicit>
      <itunes:duration>9:48</itunes:duration>
    </item>
    <item>
      <title>#151 Rack Middleware</title>
      <description>Rack middleware is a way to filter a request and response coming into your application. In this episode I show how to modify the response body using middleware.</description>
      <pubDate>Mon, 02 Mar 2009 00:00:00 -0800</pubDate>
      <enclosure url="http://media.railscasts.com/assets/episodes/videos/151-rack-middleware.m4v" length="14018389" type="video/mp4"/>
      <link>http://railscasts.com/episodes/151-rack-middleware</link>
      <guid isPermaLink="false">rack-middleware</guid>
      <itunes:author>Ryan Bates</itunes:author>
      <itunes:subtitle>Rack middleware is a way to filter a request and response coming into your application. In this episode I show how to modify the response body usin...</itunes:subtitle>
      <itunes:summary>Rack middleware is a way to filter a request and response coming into your application. In this episode I show how to modify the response body using middleware.</itunes:summary>
      <itunes:explicit>no</itunes:explicit>
      <itunes:duration>12:42</itunes:duration>
    </item>
    <item>
      <title>#150 Rails Metal</title>
      <description>Rails Metal is a way to bypass the standard Rails request process for a performance boost. In this episode you will learn how to shave off a few milliseconds using Metal.</description>
      <pubDate>Mon, 23 Feb 2009 00:00:00 -0800</pubDate>
      <enclosure url="http://media.railscasts.com/assets/episodes/videos/150-rails-metal.m4v" length="10034870" type="video/mp4"/>
      <link>http://railscasts.com/episodes/150-rails-metal</link>
      <guid isPermaLink="false">rails-metal</guid>
      <itunes:author>Ryan Bates</itunes:author>
      <itunes:subtitle>Rails Metal is a way to bypass the standard Rails request process for a performance boost. In this episode you will learn how to shave off a few mi...</itunes:subtitle>
      <itunes:summary>Rails Metal is a way to bypass the standard Rails request process for a performance boost. In this episode you will learn how to shave off a few milliseconds using Metal.</itunes:summary>
      <itunes:explicit>no</itunes:explicit>
      <itunes:duration>9:49</itunes:duration>
    </item>
    <item>
      <title>#149 Rails Engines</title>
      <description>Rails 2.3 brings us much of the same functionality as the Rails Engines plugin. Learn how to embed one application into another in this episode.</description>
      <pubDate>Mon, 16 Feb 2009 00:00:00 -0800</pubDate>
      <enclosure url="http://media.railscasts.com/assets/episodes/videos/149-rails-engines.m4v" length="9159171" type="video/mp4"/>
      <link>http://railscasts.com/episodes/149-rails-engines</link>
      <guid isPermaLink="false">rails-engines</guid>
      <itunes:author>Ryan Bates</itunes:author>
      <itunes:subtitle>Rails 2.3 brings us much of the same functionality as the Rails Engines plugin. Learn how to embed one application into another in this episode.</itunes:subtitle>
      <itunes:summary>Rails 2.3 brings us much of the same functionality as the Rails Engines plugin. Learn how to embed one application into another in this episode.</itunes:summary>
      <itunes:explicit>no</itunes:explicit>
      <itunes:duration>8:55</itunes:duration>
    </item>
    <item>
      <title>#148 App Templates in Rails 2.3</title>
      <description>In Rails 2.3 you can provide a template when generating a new Rails application. See how in this episode.</description>
      <pubDate>Mon, 09 Feb 2009 00:00:00 -0800</pubDate>
      <enclosure url="http://media.railscasts.com/assets/episodes/videos/148-app-templates-in-rails-2-3.m4v" length="13250099" type="video/mp4"/>
      <link>http://railscasts.com/episodes/148-app-templates-in-rails-2-3</link>
      <guid isPermaLink="false">app-templates-in-rails-2-3</guid>
      <itunes:author>Ryan Bates</itunes:author>
      <itunes:subtitle>In Rails 2.3 you can provide a template when generating a new Rails application. See how in this episode.</itunes:subtitle>
      <itunes:summary>In Rails 2.3 you can provide a template when generating a new Rails application. See how in this episode.</itunes:summary>
      <itunes:explicit>no</itunes:explicit>
      <itunes:duration>11:36</itunes:duration>
    </item>
    <item>
      <title>#147 Sortable Lists</title>
      <description>Creating drag &amp; drop sortable lists is fairly easy using Prototype and the built in helper methods. See how in this episode.</description>
      <pubDate>Mon, 02 Feb 2009 00:00:00 -0800</pubDate>
      <enclosure url="http://media.railscasts.com/assets/episodes/videos/147-sortable-lists.m4v" length="8741000" type="video/mp4"/>
      <link>http://railscasts.com/episodes/147-sortable-lists</link>
      <guid isPermaLink="false">sortable-lists</guid>
      <itunes:author>Ryan Bates</itunes:author>
      <itunes:subtitle>Creating drag &amp; drop sortable lists is fairly easy using Prototype and the built in helper methods. See how in this episode.</itunes:subtitle>
      <itunes:summary>Creating drag &amp; drop sortable lists is fairly easy using Prototype and the built in helper methods. See how in this episode.</itunes:summary>
      <itunes:explicit>no</itunes:explicit>
      <itunes:duration>8:14</itunes:duration>
    </item>
    <item>
      <title>#146 PayPal Express Checkout</title>
      <description>PayPal Express Checkout is easy to add to an existing ordering system. See how in this episode.</description>
      <pubDate>Mon, 26 Jan 2009 00:00:00 -0800</pubDate>
      <enclosure url="http://media.railscasts.com/assets/episodes/videos/146-paypal-express-checkout.m4v" length="18762839" type="video/mp4"/>
      <link>http://railscasts.com/episodes/146-paypal-express-checkout</link>
      <guid isPermaLink="false">paypal-express-checkout</guid>
      <itunes:author>Ryan Bates</itunes:author>
      <itunes:subtitle>PayPal Express Checkout is easy to add to an existing ordering system. See how in this episode.</itunes:subtitle>
      <itunes:summary>PayPal Express Checkout is easy to add to an existing ordering system. See how in this episode.</itunes:summary>
      <itunes:explicit>no</itunes:explicit>
      <itunes:duration>15:24</itunes:duration>
    </item>
    <item>
      <title>#145 Integrating Active Merchant</title>
      <description>In this episode I show how to add Active Merchant's functionality to a Rails application to make a fully-functional checkout process.</description>
      <pubDate>Mon, 19 Jan 2009 00:00:00 -0800</pubDate>
      <enclosure url="http://media.railscasts.com/assets/episodes/videos/145-integrating-active-merchant.m4v" length="20883072" type="video/mp4"/>
      <link>http://railscasts.com/episodes/145-integrating-active-merchant</link>
      <guid isPermaLink="false">integrating-active-merchant</guid>
      <itunes:author>Ryan Bates</itunes:author>
      <itunes:subtitle>In this episode I show how to add Active Merchant's functionality to a Rails application to make a fully-functional checkout process.</itunes:subtitle>
      <itunes:summary>In this episode I show how to add Active Merchant's functionality to a Rails application to make a fully-functional checkout process.</itunes:summary>
      <itunes:explicit>no</itunes:explicit>
      <itunes:duration>18:15</itunes:duration>
    </item>
    <item>
      <title>#144 Active Merchant Basics</title>
      <description>Active Merchant is a great library for handling credit card transactions. In this episode I will show you the basics of using it to communicate with PayPal's gateway.</description>
      <pubDate>Mon, 12 Jan 2009 00:00:00 -0800</pubDate>
      <enclosure url="http://media.railscasts.com/assets/episodes/videos/144-active-merchant-basics.m4v" length="11173034" type="video/mp4"/>
      <link>http://railscasts.com/episodes/144-active-merchant-basics</link>
      <guid isPermaLink="false">active-merchant-basics</guid>
      <itunes:author>Ryan Bates</itunes:author>
      <itunes:subtitle>Active Merchant is a great library for handling credit card transactions. In this episode I will show you the basics of using it to communicate wit...</itunes:subtitle>
      <itunes:summary>Active Merchant is a great library for handling credit card transactions. In this episode I will show you the basics of using it to communicate with PayPal's gateway.</itunes:summary>
      <itunes:explicit>no</itunes:explicit>
      <itunes:duration>10:10</itunes:duration>
    </item>
    <item>
      <title>#143 PayPal Security</title>
      <description>This episode shows how to encrypt the variables passed to PayPal and verify the authenticity of the payment notifications (IPN).
</description>
      <pubDate>Mon, 05 Jan 2009 00:00:00 -0800</pubDate>
      <enclosure url="http://media.railscasts.com/assets/episodes/videos/143-paypal-security.m4v" length="13996994" type="video/mp4"/>
      <link>http://railscasts.com/episodes/143-paypal-security</link>
      <guid isPermaLink="false">paypal-security</guid>
      <itunes:author>Ryan Bates</itunes:author>
      <itunes:subtitle>This episode shows how to encrypt the variables passed to PayPal and verify the authenticity of the payment notifications (IPN).
</itunes:subtitle>
      <itunes:summary>This episode shows how to encrypt the variables passed to PayPal and verify the authenticity of the payment notifications (IPN).
</itunes:summary>
      <itunes:explicit>no</itunes:explicit>
      <itunes:duration>11:39</itunes:duration>
    </item>
    <item>
      <title>#142 PayPal Notifications</title>
      <description>PayPal's IPN (Instant Payment Notification) service allows your app to get confirmation when an order is processed. In this episode I use IPN to mark a cart as purchased.</description>
      <pubDate>Mon, 29 Dec 2008 00:00:00 -0800</pubDate>
      <enclosure url="http://media.railscasts.com/assets/episodes/videos/142-paypal-notifications.m4v" length="10836433" type="video/mp4"/>
      <link>http://railscasts.com/episodes/142-paypal-notifications</link>
      <guid isPermaLink="false">paypal-notifications</guid>
      <itunes:author>Ryan Bates</itunes:author>
      <itunes:subtitle>PayPal's IPN (Instant Payment Notification) service allows your app to get confirmation when an order is processed. In this episode I use IPN to ma...</itunes:subtitle>
      <itunes:summary>PayPal's IPN (Instant Payment Notification) service allows your app to get confirmation when an order is processed. In this episode I use IPN to mark a cart as purchased.</itunes:summary>
      <itunes:explicit>no</itunes:explicit>
      <itunes:duration>10:46</itunes:duration>
    </item>
    <item>
      <title>#141 PayPal Basics</title>
      <description>This episode is the first in a series on handling the checkout process for orders. Here we show how to complete purchases through PayPal's Website Payments Standard service.</description>
      <pubDate>Mon, 22 Dec 2008 00:00:00 -0800</pubDate>
      <enclosure url="http://media.railscasts.com/assets/episodes/videos/141-paypal-basics.m4v" length="8865064" type="video/mp4"/>
      <link>http://railscasts.com/episodes/141-paypal-basics</link>
      <guid isPermaLink="false">paypal-basics</guid>
      <itunes:author>Ryan Bates</itunes:author>
      <itunes:subtitle>This episode is the first in a series on handling the checkout process for orders. Here we show how to complete purchases through PayPal's Website ...</itunes:subtitle>
      <itunes:summary>This episode is the first in a series on handling the checkout process for orders. Here we show how to complete purchases through PayPal's Website Payments Standard service.</itunes:summary>
      <itunes:explicit>no</itunes:explicit>
      <itunes:duration>7:03</itunes:duration>
    </item>
    <item>
      <title>#140 Rails 2.2 Extras</title>
      <description>This episode finishes up the Rails 2.2 series by showing a few miscellaneous additions that I find useful.</description>
      <pubDate>Mon, 15 Dec 2008 00:00:00 -0800</pubDate>
      <enclosure url="http://media.railscasts.com/assets/episodes/videos/140-rails-2-2-extras.m4v" length="4719280" type="video/mp4"/>
      <link>http://railscasts.com/episodes/140-rails-2-2-extras</link>
      <guid isPermaLink="false">rails-2-2-extras</guid>
      <itunes:author>Ryan Bates</itunes:author>
      <itunes:subtitle>This episode finishes up the Rails 2.2 series by showing a few miscellaneous additions that I find useful.</itunes:subtitle>
      <itunes:summary>This episode finishes up the Rails 2.2 series by showing a few miscellaneous additions that I find useful.</itunes:summary>
      <itunes:explicit>no</itunes:explicit>
      <itunes:duration>4:54</itunes:duration>
    </item>
    <item>
      <title>#139 Nested Resources</title>
      <description>In this episode I show how to nest resources through routing and go into some new additions in Rails 2.2.</description>
      <pubDate>Mon, 08 Dec 2008 00:00:00 -0800</pubDate>
      <enclosure url="http://media.railscasts.com/assets/episodes/videos/139-nested-resources.m4v" length="11396734" type="video/mp4"/>
      <link>http://railscasts.com/episodes/139-nested-resources</link>
      <guid isPermaLink="false">nested-resources</guid>
      <itunes:author>Ryan Bates</itunes:author>
      <itunes:subtitle>In this episode I show how to nest resources through routing and go into some new additions in Rails 2.2.</itunes:subtitle>
      <itunes:summary>In this episode I show how to nest resources through routing and go into some new additions in Rails 2.2.</itunes:summary>
      <itunes:explicit>no</itunes:explicit>
      <itunes:duration>10:20</itunes:duration>
    </item>
    <item>
      <title>#138 I18n</title>
      <description>Internationalization is one of the biggest additions in Rails 2.2. See how the basics work in this episode.</description>
      <pubDate>Mon, 01 Dec 2008 00:00:00 -0800</pubDate>
      <enclosure url="http://media.railscasts.com/assets/episodes/videos/138-i18n.m4v" length="9498654" type="video/mp4"/>
      <link>http://railscasts.com/episodes/138-i18n</link>
      <guid isPermaLink="false">i18n</guid>
      <itunes:author>Ryan Bates</itunes:author>
      <itunes:subtitle>Internationalization is one of the biggest additions in Rails 2.2. See how the basics work in this episode.</itunes:subtitle>
      <itunes:summary>Internationalization is one of the biggest additions in Rails 2.2. See how the basics work in this episode.</itunes:summary>
      <itunes:explicit>no</itunes:explicit>
      <itunes:duration>7:36</itunes:duration>
    </item>
    <item>
      <title>#137 Memoization</title>
      <description>Rails 2.2 is out! In this episode I show how to upgrade Rails and then demonstrate one of the new additions: Memoization.</description>
      <pubDate>Mon, 24 Nov 2008 00:00:00 -0800</pubDate>
      <enclosure url="http://media.railscasts.com/assets/episodes/videos/137-memoization.m4v" length="5262928" type="video/mp4"/>
      <link>http://railscasts.com/episodes/137-memoization</link>
      <guid isPermaLink="false">memoization</guid>
      <itunes:author>Ryan Bates</itunes:author>
      <itunes:subtitle>Rails 2.2 is out! In this episode I show how to upgrade Rails and then demonstrate one of the new additions: Memoization.</itunes:subtitle>
      <itunes:summary>Rails 2.2 is out! In this episode I show how to upgrade Rails and then demonstrate one of the new additions: Memoization.</itunes:summary>
      <itunes:explicit>no</itunes:explicit>
      <itunes:duration>5:16</itunes:duration>
    </item>
    <item>
      <title>#136 jQuery</title>
      <description>How do you use jQuery with Rails? In this episode I redo episode #43 using jQuery instead of Prototype/RJS.</description>
      <pubDate>Mon, 17 Nov 2008 00:00:00 -0800</pubDate>
      <enclosure url="http://media.railscasts.com/assets/episodes/videos/136-jquery.m4v" length="10188030" type="video/mp4"/>
      <link>http://railscasts.com/episodes/136-jquery</link>
      <guid isPermaLink="false">jquery</guid>
      <itunes:author>Ryan Bates</itunes:author>
      <itunes:subtitle>How do you use jQuery with Rails? In this episode I redo episode #43 using jQuery instead of Prototype/RJS.</itunes:subtitle>
      <itunes:summary>How do you use jQuery with Rails? In this episode I redo episode #43 using jQuery instead of Prototype/RJS.</itunes:summary>
      <itunes:explicit>no</itunes:explicit>
      <itunes:duration>9:49</itunes:duration>
    </item>
    <item>
      <title>#135 Making a Gem</title>
      <description>Want to create a Ruby Gem instead of a Rails plugin? In this episode I will walk you through creating a gem to extend Rails.</description>
      <pubDate>Mon, 10 Nov 2008 00:00:00 -0800</pubDate>
      <enclosure url="http://media.railscasts.com/assets/episodes/videos/135-making-a-gem.m4v" length="9845863" type="video/mp4"/>
      <link>http://railscasts.com/episodes/135-making-a-gem</link>
      <guid isPermaLink="false">making-a-gem</guid>
      <itunes:author>Ryan Bates</itunes:author>
      <itunes:subtitle>Want to create a Ruby Gem instead of a Rails plugin? In this episode I will walk you through creating a gem to extend Rails.</itunes:subtitle>
      <itunes:summary>Want to create a Ruby Gem instead of a Rails plugin? In this episode I will walk you through creating a gem to extend Rails.</itunes:summary>
      <itunes:explicit>no</itunes:explicit>
      <itunes:duration>9:08</itunes:duration>
    </item>
    <item>
      <title>#134 Paperclip</title>
      <description>Need to add image attachments to a model? See how with paperclip in this episode.</description>
      <pubDate>Mon, 03 Nov 2008 00:00:00 -0800</pubDate>
      <enclosure url="http://media.railscasts.com/assets/episodes/videos/134-paperclip.m4v" length="8193315" type="video/mp4"/>
      <link>http://railscasts.com/episodes/134-paperclip</link>
      <guid isPermaLink="false">paperclip</guid>
      <itunes:author>Ryan Bates</itunes:author>
      <itunes:subtitle>Need to add image attachments to a model? See how with paperclip in this episode.</itunes:subtitle>
      <itunes:summary>Need to add image attachments to a model? See how with paperclip in this episode.</itunes:summary>
      <itunes:explicit>no</itunes:explicit>
      <itunes:duration>7:46</itunes:duration>
    </item>
    <item>
      <title>#133 Capistrano Tasks</title>
      <description>Do you know how to make Capistrano tasks? See how to change default deployment behavior with custom tasks in this episode.</description>
      <pubDate>Mon, 27 Oct 2008 00:00:00 -0700</pubDate>
      <enclosure url="http://media.railscasts.com/assets/episodes/videos/133-capistrano-tasks.m4v" length="8785789" type="video/mp4"/>
      <link>http://railscasts.com/episodes/133-capistrano-tasks</link>
      <guid isPermaLink="false">capistrano-tasks</guid>
      <itunes:author>Ryan Bates</itunes:author>
      <itunes:subtitle>Do you know how to make Capistrano tasks? See how to change default deployment behavior with custom tasks in this episode.</itunes:subtitle>
      <itunes:summary>Do you know how to make Capistrano tasks? See how to change default deployment behavior with custom tasks in this episode.</itunes:summary>
      <itunes:explicit>no</itunes:explicit>
      <itunes:duration>8:49</itunes:duration>
    </item>
    <item>
      <title>#132 Helpers Outside Views</title>
      <description>Have you ever wanted to access helper methods outside of the view layer? In this episode I show you a couple ways to do just that.</description>
      <pubDate>Mon, 20 Oct 2008 00:00:00 -0700</pubDate>
      <enclosure url="http://media.railscasts.com/assets/episodes/videos/132-helpers-outside-views.m4v" length="6786928" type="video/mp4"/>
      <link>http://railscasts.com/episodes/132-helpers-outside-views</link>
      <guid isPermaLink="false">helpers-outside-views</guid>
      <itunes:author>Ryan Bates</itunes:author>
      <itunes:subtitle>Have you ever wanted to access helper methods outside of the view layer? In this episode I show you a couple ways to do just that.</itunes:subtitle>
      <itunes:summary>Have you ever wanted to access helper methods outside of the view layer? In this episode I show you a couple ways to do just that.</itunes:summary>
      <itunes:explicit>no</itunes:explicit>
      <itunes:duration>6:14</itunes:duration>
    </item>
    <item>
      <title>#131 Going Back</title>
      <description>This episode demonstrates a couple ways to redirect the user back to a previous page. Applying this to your site can help minimize the user's need to press the back button.</description>
      <pubDate>Sun, 12 Oct 2008 00:00:00 -0700</pubDate>
      <enclosure url="http://media.railscasts.com/assets/episodes/videos/131-going-back.m4v" length="4922899" type="video/mp4"/>
      <link>http://railscasts.com/episodes/131-going-back</link>
      <guid isPermaLink="false">going-back</guid>
      <itunes:author>Ryan Bates</itunes:author>
      <itunes:subtitle>This episode demonstrates a couple ways to redirect the user back to a previous page. Applying this to your site can help minimize the user's need ...</itunes:subtitle>
      <itunes:summary>This episode demonstrates a couple ways to redirect the user back to a previous page. Applying this to your site can help minimize the user's need to press the back button.</itunes:summary>
      <itunes:explicit>no</itunes:explicit>
      <itunes:duration>4:51</itunes:duration>
    </item>
    <item>
      <title>#130 Monitoring with God</title>
      <description>Need to ensure your background processes stay up and running and don't use too many resources? Check out the god gem as shown in this episode.</description>
      <pubDate>Sun, 05 Oct 2008 00:00:00 -0700</pubDate>
      <enclosure url="http://media.railscasts.com/assets/episodes/videos/130-monitoring-with-god.m4v" length="17731156" type="video/mp4"/>
      <link>http://railscasts.com/episodes/130-monitoring-with-god</link>
      <guid isPermaLink="false">monitoring-with-god</guid>
      <itunes:author>Ryan Bates</itunes:author>
      <itunes:subtitle>Need to ensure your background processes stay up and running and don't use too many resources? Check out the god gem as shown in this episode.</itunes:subtitle>
      <itunes:summary>Need to ensure your background processes stay up and running and don't use too many resources? Check out the god gem as shown in this episode.</itunes:summary>
      <itunes:explicit>no</itunes:explicit>
      <itunes:duration>14:40</itunes:duration>
    </item>
    <item>
      <title>#129 Custom Daemon</title>
      <description>Creating a custom daemon to handle background tasks is surprisingly simple. In this episode I will make a daemon to handle dynamically scheduled tasks.</description>
      <pubDate>Mon, 29 Sep 2008 00:00:00 -0700</pubDate>
      <enclosure url="http://media.railscasts.com/assets/episodes/videos/129-custom-daemon.m4v" length="7297648" type="video/mp4"/>
      <link>http://railscasts.com/episodes/129-custom-daemon</link>
      <guid isPermaLink="false">custom-daemon</guid>
      <itunes:author>Ryan Bates</itunes:author>
      <itunes:subtitle>Creating a custom daemon to handle background tasks is surprisingly simple. In this episode I will make a daemon to handle dynamically scheduled ta...</itunes:subtitle>
      <itunes:summary>Creating a custom daemon to handle background tasks is surprisingly simple. In this episode I will make a daemon to handle dynamically scheduled tasks.</itunes:summary>
      <itunes:explicit>no</itunes:explicit>
      <itunes:duration>7:40</itunes:duration>
    </item>
    <item>
      <title>#128 Starling and Workling</title>
      <description>Need to run a task frequently in the background? Starling and Workling is a killer combination for doing just that. See how in this episode.</description>
      <pubDate>Mon, 22 Sep 2008 00:00:00 -0700</pubDate>
      <enclosure url="http://media.railscasts.com/assets/episodes/videos/128-starling-and-workling.m4v" length="9567450" type="video/mp4"/>
      <link>http://railscasts.com/episodes/128-starling-and-workling</link>
      <guid isPermaLink="false">starling-and-workling</guid>
      <itunes:author>Ryan Bates</itunes:author>
      <itunes:subtitle>Need to run a task frequently in the background? Starling and Workling is a killer combination for doing just that. See how in this episode.</itunes:subtitle>
      <itunes:summary>Need to run a task frequently in the background? Starling and Workling is a killer combination for doing just that. See how in this episode.</itunes:summary>
      <itunes:explicit>no</itunes:explicit>
      <itunes:duration>9:32</itunes:duration>
    </item>
    <item>
      <title>#127 Rake in Background</title>
      <description>In need of a background process? You may be able to accomplish this with a simple Rake task. See how in this episode.</description>
      <pubDate>Mon, 15 Sep 2008 00:00:00 -0700</pubDate>
      <enclosure url="http://media.railscasts.com/assets/episodes/videos/127-rake-in-background.m4v" length="11276027" type="video/mp4"/>
      <link>http://railscasts.com/episodes/127-rake-in-background</link>
      <guid isPermaLink="false">rake-in-background</guid>
      <itunes:author>Ryan Bates</itunes:author>
      <itunes:subtitle>In need of a background process? You may be able to accomplish this with a simple Rake task. See how in this episode.</itunes:subtitle>
      <itunes:summary>In need of a background process? You may be able to accomplish this with a simple Rake task. See how in this episode.</itunes:summary>
      <itunes:explicit>no</itunes:explicit>
      <itunes:duration>10:38</itunes:duration>
    </item>
    <item>
      <title>#126 Populating a Database</title>
      <description>Have you ever wanted to fill up a database with a lot of test data? See how to do that in this episode using the populator and faker gems.</description>
      <pubDate>Mon, 08 Sep 2008 00:00:00 -0700</pubDate>
      <enclosure url="http://media.railscasts.com/assets/episodes/videos/126-populating-a-database.m4v" length="8732472" type="video/mp4"/>
      <link>http://railscasts.com/episodes/126-populating-a-database</link>
      <guid isPermaLink="false">populating-a-database</guid>
      <itunes:author>Ryan Bates</itunes:author>
      <itunes:subtitle>Have you ever wanted to fill up a database with a lot of test data? See how to do that in this episode using the populator and faker gems.</itunes:subtitle>
      <itunes:summary>Have you ever wanted to fill up a database with a lot of test data? See how to do that in this episode using the populator and faker gems.</itunes:summary>
      <itunes:explicit>no</itunes:explicit>
      <itunes:duration>8:38</itunes:duration>
    </item>
    <item>
      <title>#125 Dynamic Layouts</title>
      <description>Discover how to dynamically change the layout using content in the database. Check out this episode for details.</description>
      <pubDate>Mon, 01 Sep 2008 00:00:00 -0700</pubDate>
      <enclosure url="http://media.railscasts.com/assets/episodes/videos/125-dynamic-layouts.m4v" length="13312160" type="video/mp4"/>
      <link>http://railscasts.com/episodes/125-dynamic-layouts</link>
      <guid isPermaLink="false">dynamic-layouts</guid>
      <itunes:author>Ryan Bates</itunes:author>
      <itunes:subtitle>Discover how to dynamically change the layout using content in the database. Check out this episode for details.</itunes:subtitle>
      <itunes:summary>Discover how to dynamically change the layout using content in the database. Check out this episode for details.</itunes:summary>
      <itunes:explicit>no</itunes:explicit>
      <itunes:duration>11:56</itunes:duration>
    </item>
    <item>
      <title>#124 Beta Invitations</title>
      <description>You know those invitation systems where a given user can invite a number of other people to join? That's what I show you how to make in this episode.</description>
      <pubDate>Mon, 25 Aug 2008 00:00:00 -0700</pubDate>
      <enclosure url="http://media.railscasts.com/assets/episodes/videos/124-beta-invitations.m4v" length="23943879" type="video/mp4"/>
      <link>http://railscasts.com/episodes/124-beta-invitations</link>
      <guid isPermaLink="false">beta-invitations</guid>
      <itunes:author>Ryan Bates</itunes:author>
      <itunes:subtitle>You know those invitation systems where a given user can invite a number of other people to join? That's what I show you how to make in this episode.</itunes:subtitle>
      <itunes:summary>You know those invitation systems where a given user can invite a number of other people to join? That's what I show you how to make in this episode.</itunes:summary>
      <itunes:explicit>no</itunes:explicit>
      <itunes:duration>22:17</itunes:duration>
    </item>
    <item>
      <title>#123 Subdomains</title>
      <description>Learn how to unleash the full potential of subdomains with the subdomain-fu Rails plugin in this episode.</description>
      <pubDate>Mon, 18 Aug 2008 00:00:00 -0700</pubDate>
      <enclosure url="http://media.railscasts.com/assets/episodes/videos/123-subdomains.m4v" length="19717767" type="video/mp4"/>
      <link>http://railscasts.com/episodes/123-subdomains</link>
      <guid isPermaLink="false">subdomains</guid>
      <itunes:author>Ryan Bates</itunes:author>
      <itunes:subtitle>Learn how to unleash the full potential of subdomains with the subdomain-fu Rails plugin in this episode.</itunes:subtitle>
      <itunes:summary>Learn how to unleash the full potential of subdomains with the subdomain-fu Rails plugin in this episode.</itunes:summary>
      <itunes:explicit>no</itunes:explicit>
      <itunes:duration>18:21</itunes:duration>
    </item>
    <item>
      <title>#122 Passenger in Development</title>
      <description>Tired of juggling multiple Rails apps around with script/server? See how to set up Passenger in development so each one has its own local domain name.</description>
      <pubDate>Mon, 11 Aug 2008 00:00:00 -0700</pubDate>
      <enclosure url="http://media.railscasts.com/assets/episodes/videos/122-passenger-in-development.m4v" length="9243613" type="video/mp4"/>
      <link>http://railscasts.com/episodes/122-passenger-in-development</link>
      <guid isPermaLink="false">passenger-in-development</guid>
      <itunes:author>Ryan Bates</itunes:author>
      <itunes:subtitle>Tired of juggling multiple Rails apps around with script/server? See how to set up Passenger in development so each one has its own local domain name.</itunes:subtitle>
      <itunes:summary>Tired of juggling multiple Rails apps around with script/server? See how to set up Passenger in development so each one has its own local domain name.</itunes:summary>
      <itunes:explicit>no</itunes:explicit>
      <itunes:duration>7:52</itunes:duration>
    </item>
    <item>
      <title>#121 Non Active Record Model</title>
      <description>This episode will show you how to make a model which isn't based on Active Record. You may want to do this if a resource isn't backed by the database.</description>
      <pubDate>Mon, 04 Aug 2008 00:00:00 -0700</pubDate>
      <enclosure url="http://media.railscasts.com/assets/episodes/videos/121-non-active-record-model.m4v" length="12709533" type="video/mp4"/>
      <link>http://railscasts.com/episodes/121-non-active-record-model</link>
      <guid isPermaLink="false">non-active-record-model</guid>
      <itunes:author>Ryan Bates</itunes:author>
      <itunes:subtitle>This episode will show you how to make a model which isn't based on Active Record. You may want to do this if a resource isn't backed by the database.</itunes:subtitle>
      <itunes:summary>This episode will show you how to make a model which isn't based on Active Record. You may want to do this if a resource isn't backed by the database.</itunes:summary>
      <itunes:explicit>no</itunes:explicit>
      <itunes:duration>12:51</itunes:duration>
    </item>
    <item>
      <title>#120 Thinking Sphinx</title>
      <description>If you need a full text search engine, Thinking Sphinx is a great solution. See why in this episode.</description>
      <pubDate>Mon, 28 Jul 2008 00:00:00 -0700</pubDate>
      <enclosure url="http://media.railscasts.com/assets/episodes/videos/120-thinking-sphinx.m4v" length="13987076" type="video/mp4"/>
      <link>http://railscasts.com/episodes/120-thinking-sphinx</link>
      <guid isPermaLink="false">thinking-sphinx</guid>
      <itunes:author>Ryan Bates</itunes:author>
      <itunes:subtitle>If you need a full text search engine, Thinking Sphinx is a great solution. See why in this episode.</itunes:subtitle>
      <itunes:summary>If you need a full text search engine, Thinking Sphinx is a great solution. See why in this episode.</itunes:summary>
      <itunes:explicit>no</itunes:explicit>
      <itunes:duration>12:32</itunes:duration>
    </item>
    <item>
      <title>#119 Session Based Model</title>
      <description>If you have a lot of logic associated with the data inside a session, you'll need some central location to put this logic. See how to create a session based model in this episode.</description>
      <pubDate>Mon, 21 Jul 2008 00:00:00 -0700</pubDate>
      <enclosure url="http://media.railscasts.com/assets/episodes/videos/119-session-based-model.m4v" length="14922088" type="video/mp4"/>
      <link>http://railscasts.com/episodes/119-session-based-model</link>
      <guid isPermaLink="false">session-based-model</guid>
      <itunes:author>Ryan Bates</itunes:author>
      <itunes:subtitle>If you have a lot of logic associated with the data inside a session, you'll need some central location to put this logic. See how to create a sess...</itunes:subtitle>
      <itunes:summary>If you have a lot of logic associated with the data inside a session, you'll need some central location to put this logic. See how to create a session based model in this episode.</itunes:summary>
      <itunes:explicit>no</itunes:explicit>
      <itunes:duration>13:26</itunes:duration>
    </item>
    <item>
      <title>#118 Liquid</title>
      <description>Liquid is a safe way to provide a powerful template language to the site's users. See how in this episode.</description>
      <pubDate>Mon, 14 Jul 2008 00:00:00 -0700</pubDate>
      <enclosure url="http://media.railscasts.com/assets/episodes/videos/118-liquid.m4v" length="17809590" type="video/mp4"/>
      <link>http://railscasts.com/episodes/118-liquid</link>
      <guid isPermaLink="false">liquid</guid>
      <itunes:author>Ryan Bates</itunes:author>
      <itunes:subtitle>Liquid is a safe way to provide a powerful template language to the site's users. See how in this episode.</itunes:subtitle>
      <itunes:summary>Liquid is a safe way to provide a powerful template language to the site's users. See how in this episode.</itunes:summary>
      <itunes:explicit>no</itunes:explicit>
      <itunes:duration>16:04</itunes:duration>
    </item>
    <item>
      <title>#117 Semi-Static Pages</title>
      <description>Static pages can sometimes be a little awkward to add to a Rails app. See a couple different solutions to this problem in this episode.</description>
      <pubDate>Mon, 07 Jul 2008 00:00:00 -0700</pubDate>
      <enclosure url="http://media.railscasts.com/assets/episodes/videos/117-semi-static-pages.m4v" length="16487003" type="video/mp4"/>
      <link>http://railscasts.com/episodes/117-semi-static-pages</link>
      <guid isPermaLink="false">semi-static-pages</guid>
      <itunes:author>Ryan Bates</itunes:author>
      <itunes:subtitle>Static pages can sometimes be a little awkward to add to a Rails app. See a couple different solutions to this problem in this episode.</itunes:subtitle>
      <itunes:summary>Static pages can sometimes be a little awkward to add to a Rails app. See a couple different solutions to this problem in this episode.</itunes:summary>
      <itunes:explicit>no</itunes:explicit>
      <itunes:duration>14:48</itunes:duration>
    </item>
    <item>
      <title>#116 Selenium</title>
      <description>Selenium is a great way to test your app automatically through a browser. See how it works in this episode.</description>
      <pubDate>Mon, 30 Jun 2008 00:00:00 -0700</pubDate>
      <enclosure url="http://media.railscasts.com/assets/episodes/videos/116-selenium.m4v" length="10030279" type="video/mp4"/>
      <link>http://railscasts.com/episodes/116-selenium</link>
      <guid isPermaLink="false">selenium</guid>
      <itunes:author>Ryan Bates</itunes:author>
      <itunes:subtitle>Selenium is a great way to test your app automatically through a browser. See how it works in this episode.</itunes:subtitle>
      <itunes:summary>Selenium is a great way to test your app automatically through a browser. See how it works in this episode.</itunes:summary>
      <itunes:explicit>no</itunes:explicit>
      <itunes:duration>9:30</itunes:duration>
    </item>
    <item>
      <title>#115 Caching in Rails 2.1</title>
      <description>Rails 2.1 brings some new caching features which makes it very easy to cache any values including models. See how in this episode.</description>
      <pubDate>Mon, 23 Jun 2008 00:00:00 -0700</pubDate>
      <enclosure url="http://media.railscasts.com/assets/episodes/videos/115-caching-in-rails-2-1.m4v" length="8623406" type="video/mp4"/>
      <link>http://railscasts.com/episodes/115-caching-in-rails-2-1</link>
      <guid isPermaLink="false">caching-in-rails-2-1</guid>
      <itunes:author>Ryan Bates</itunes:author>
      <itunes:subtitle>Rails 2.1 brings some new caching features which makes it very easy to cache any values including models. See how in this episode.</itunes:subtitle>
      <itunes:summary>Rails 2.1 brings some new caching features which makes it very easy to cache any values including models. See how in this episode.</itunes:summary>
      <itunes:explicit>no</itunes:explicit>
      <itunes:duration>8:47</itunes:duration>
    </item>
    <item>
      <title>#114 Endless Page</title>
      <description>Ever wondered how some sites seem to have endless scrolling page with no pagination? Find out how easy it is to do this in Rails in this episode.</description>
      <pubDate>Mon, 16 Jun 2008 00:00:00 -0700</pubDate>
      <enclosure url="http://media.railscasts.com/assets/episodes/videos/114-endless-page.m4v" length="9800832" type="video/mp4"/>
      <link>http://railscasts.com/episodes/114-endless-page</link>
      <guid isPermaLink="false">endless-page</guid>
      <itunes:author>Ryan Bates</itunes:author>
      <itunes:subtitle>Ever wondered how some sites seem to have endless scrolling page with no pagination? Find out how easy it is to do this in Rails in this episode.</itunes:subtitle>
      <itunes:summary>Ever wondered how some sites seem to have endless scrolling page with no pagination? Find out how easy it is to do this in Rails in this episode.</itunes:summary>
      <itunes:explicit>no</itunes:explicit>
      <itunes:duration>8:43</itunes:duration>
    </item>
    <item>
      <title>#113 Contributing to Rails with Git</title>
      <description>If you want Rails to behave a certain way, try changing it and submitting a patch. This episode will show how to do exactly this using Git.</description>
      <pubDate>Mon, 09 Jun 2008 00:00:00 -0700</pubDate>
      <enclosure url="http://media.railscasts.com/assets/episodes/videos/113-contributing-to-rails-with-git.m4v" length="16009200" type="video/mp4"/>
      <link>http://railscasts.com/episodes/113-contributing-to-rails-with-git</link>
      <guid isPermaLink="false">contributing-to-rails-with-git</guid>
      <itunes:author>Ryan Bates</itunes:author>
      <itunes:subtitle>If you want Rails to behave a certain way, try changing it and submitting a patch. This episode will show how to do exactly this using Git.</itunes:subtitle>
      <itunes:summary>If you want Rails to behave a certain way, try changing it and submitting a patch. This episode will show how to do exactly this using Git.</itunes:summary>
      <itunes:explicit>no</itunes:explicit>
      <itunes:duration>11:36</itunes:duration>
    </item>
    <item>
      <title>#112 Anonymous Scopes</title>
      <description>The scoped method allows you to generate named scopes on the fly. In this episode I show how to use anonymous scopes to improve the conditional logic which was used in the previous episode on advanced search form.</description>
      <pubDate>Mon, 02 Jun 2008 00:00:00 -0700</pubDate>
      <enclosure url="http://media.railscasts.com/assets/episodes/videos/112-anonymous-scopes.m4v" length="10514429" type="video/mp4"/>
      <link>http://railscasts.com/episodes/112-anonymous-scopes</link>
      <guid isPermaLink="false">anonymous-scopes</guid>
      <itunes:author>Ryan Bates</itunes:author>
      <itunes:subtitle>The scoped method allows you to generate named scopes on the fly. In this episode I show how to use anonymous scopes to improve the conditional log...</itunes:subtitle>
      <itunes:summary>The scoped method allows you to generate named scopes on the fly. In this episode I show how to use anonymous scopes to improve the conditional logic which was used in the previous episode on advanced search form.</itunes:summary>
      <itunes:explicit>no</itunes:explicit>
      <itunes:duration>8:49</itunes:duration>
    </item>
    <item>
      <title>#111 Advanced Search Form</title>
      <description>If you need to create an advanced search with a lot of fields, it may not be ideal to use a GET request as I showed in episode 37. In this episode I will show you how to handle this by creating a Search resource.</description>
      <pubDate>Mon, 26 May 2008 00:00:00 -0700</pubDate>
      <enclosure url="http://media.railscasts.com/assets/episodes/videos/111-advanced-search-form.m4v" length="8035255" type="video/mp4"/>
      <link>http://railscasts.com/episodes/111-advanced-search-form</link>
      <guid isPermaLink="false">advanced-search-form</guid>
      <itunes:author>Ryan Bates</itunes:author>
      <itunes:subtitle>If you need to create an advanced search with a lot of fields, it may not be ideal to use a GET request as I showed in episode 37. In this episode ...</itunes:subtitle>
      <itunes:summary>If you need to create an advanced search with a lot of fields, it may not be ideal to use a GET request as I showed in episode 37. In this episode I will show you how to handle this by creating a Search resource.</itunes:summary>
      <itunes:explicit>no</itunes:explicit>
      <itunes:duration>7:38</itunes:duration>
    </item>
    <item>
      <title>#110 Gem Dependencies</title>
      <description>In Rails 2.1 we now have the ability to set gem dependencies. Now it's easier than ever to specify which ruby gems our rails app relies on.</description>
      <pubDate>Fri, 23 May 2008 00:00:00 -0700</pubDate>
      <enclosure url="http://media.railscasts.com/assets/episodes/videos/110-gem-dependencies.m4v" length="6950539" type="video/mp4"/>
      <link>http://railscasts.com/episodes/110-gem-dependencies</link>
      <guid isPermaLink="false">gem-dependencies</guid>
      <itunes:author>Ryan Bates</itunes:author>
      <itunes:subtitle>In Rails 2.1 we now have the ability to set gem dependencies. Now it's easier than ever to specify which ruby gems our rails app relies on.</itunes:subtitle>
      <itunes:summary>In Rails 2.1 we now have the ability to set gem dependencies. Now it's easier than ever to specify which ruby gems our rails app relies on.</itunes:summary>
      <itunes:explicit>no</itunes:explicit>
      <itunes:duration>6:33</itunes:duration>
    </item>
    <item>
      <title>#109 Tracking Attribute Changes</title>
      <description>Rails 2.1 keeps track of the changes you make to a model's attributes. It also allows you to see what the previous value was. But watch out for the gotcha! See this episode for details.</description>
      <pubDate>Wed, 21 May 2008 00:00:00 -0700</pubDate>
      <enclosure url="http://media.railscasts.com/assets/episodes/videos/109-tracking-attribute-changes.m4v" length="6965115" type="video/mp4"/>
      <link>http://railscasts.com/episodes/109-tracking-attribute-changes</link>
      <guid isPermaLink="false">tracking-attribute-changes</guid>
      <itunes:author>Ryan Bates</itunes:author>
      <itunes:subtitle>Rails 2.1 keeps track of the changes you make to a model's attributes. It also allows you to see what the previous value was. But watch out for the...</itunes:subtitle>
      <itunes:summary>Rails 2.1 keeps track of the changes you make to a model's attributes. It also allows you to see what the previous value was. But watch out for the gotcha! See this episode for details.</itunes:summary>
      <itunes:explicit>no</itunes:explicit>
      <itunes:duration>7:26</itunes:duration>
    </item>
    <item>
      <title>#108 named_scope</title>
      <description>The named_scope method in Rails 2.1 makes performing finds on models very elegant and convenient. See how in this episode.</description>
      <pubDate>Mon, 19 May 2008 00:00:00 -0700</pubDate>
      <enclosure url="http://media.railscasts.com/assets/episodes/videos/108-named-scope.m4v" length="10655522" type="video/mp4"/>
      <link>http://railscasts.com/episodes/108-named-scope</link>
      <guid isPermaLink="false">named-scope</guid>
      <itunes:author>Ryan Bates</itunes:author>
      <itunes:subtitle>The named_scope method in Rails 2.1 makes performing finds on models very elegant and convenient. See how in this episode.</itunes:subtitle>
      <itunes:summary>The named_scope method in Rails 2.1 makes performing finds on models very elegant and convenient. See how in this episode.</itunes:summary>
      <itunes:explicit>no</itunes:explicit>
      <itunes:duration>11:02</itunes:duration>
    </item>
    <item>
      <title>#107 Migrations in Rails 2.1</title>
      <description>Migrations now have a timestamp as their version number in Rails 2.1. In this episode I will explain this change as well as show you some other cool additions.</description>
      <pubDate>Fri, 16 May 2008 00:00:00 -0700</pubDate>
      <enclosure url="http://media.railscasts.com/assets/episodes/videos/107-migrations-in-rails-2-1.m4v" length="3924765" type="video/mp4"/>
      <link>http://railscasts.com/episodes/107-migrations-in-rails-2-1</link>
      <guid isPermaLink="false">migrations-in-rails-2-1</guid>
      <itunes:author>Ryan Bates</itunes:author>
      <itunes:subtitle>Migrations now have a timestamp as their version number in Rails 2.1. In this episode I will explain this change as well as show you some other coo...</itunes:subtitle>
      <itunes:summary>Migrations now have a timestamp as their version number in Rails 2.1. In this episode I will explain this change as well as show you some other cool additions.</itunes:summary>
      <itunes:explicit>no</itunes:explicit>
      <itunes:duration>4:05</itunes:duration>
    </item>
    <item>
      <title>#106 Time Zones in Rails 2.1</title>
      <description>In the past, time zones have been very difficult to work with, but no longer! Rails 2.1 brings with it great time zone support as you can see in this episode.</description>
      <pubDate>Wed, 14 May 2008 00:00:00 -0700</pubDate>
      <enclosure url="http://media.railscasts.com/assets/episodes/videos/106-time-zones-in-rails-2-1.m4v" length="6117774" type="video/mp4"/>
      <link>http://railscasts.com/episodes/106-time-zones-in-rails-2-1</link>
      <guid isPermaLink="false">time-zones-in-rails-2-1</guid>
      <itunes:author>Ryan Bates</itunes:author>
      <itunes:subtitle>In the past, time zones have been very difficult to work with, but no longer! Rails 2.1 brings with it great time zone support as you can see in th...</itunes:subtitle>
      <itunes:summary>In the past, time zones have been very difficult to work with, but no longer! Rails 2.1 brings with it great time zone support as you can see in this episode.</itunes:summary>
      <itunes:explicit>no</itunes:explicit>
      <itunes:duration>6:07</itunes:duration>
    </item>
    <item>
      <title>#105 Gitting Rails 2.1 RC1</title>
      <description>Rails 2.1 Release Candidate 1 was just released! In this episode I will show you how to install it into your Rails project.</description>
      <pubDate>Mon, 12 May 2008 00:00:00 -0700</pubDate>
      <enclosure url="http://media.railscasts.com/assets/episodes/videos/105-gitting-rails-2-1-rc1.m4v" length="7111542" type="video/mp4"/>
      <link>http://railscasts.com/episodes/105-gitting-rails-2-1-rc1</link>
      <guid isPermaLink="false">gitting-rails-2-1-rc1</guid>
      <itunes:author>Ryan Bates</itunes:author>
      <itunes:subtitle>Rails 2.1 Release Candidate 1 was just released! In this episode I will show you how to install it into your Rails project.</itunes:subtitle>
      <itunes:summary>Rails 2.1 Release Candidate 1 was just released! In this episode I will show you how to install it into your Rails project.</itunes:summary>
      <itunes:explicit>no</itunes:explicit>
      <itunes:duration>6:17</itunes:duration>
    </item>
    <item>
      <title>#104 Exception Notifications</title>
      <description>If you're running a production site, it's a good idea to record all exceptions which occur. See how to set up a notification system which does that in this episode.</description>
      <pubDate>Mon, 05 May 2008 00:00:00 -0700</pubDate>
      <enclosure url="http://media.railscasts.com/assets/episodes/videos/104-exception-notifications.m4v" length="10897425" type="video/mp4"/>
      <link>http://railscasts.com/episodes/104-exception-notifications</link>
      <guid isPermaLink="false">exception-notifications</guid>
      <itunes:author>Ryan Bates</itunes:author>
      <itunes:subtitle>If you're running a production site, it's a good idea to record all exceptions which occur. See how to set up a notification system which does that...</itunes:subtitle>
      <itunes:summary>If you're running a production site, it's a good idea to record all exceptions which occur. See how to set up a notification system which does that in this episode.</itunes:summary>
      <itunes:explicit>no</itunes:explicit>
      <itunes:duration>8:58</itunes:duration>
    </item>
    <item>
      <title>#103 Site Wide Announcements</title>
      <description>Sometimes you need to display an administrative announcement to every page on the site and give the users the ability to hide the announcement. See how in this episode.</description>
      <pubDate>Mon, 28 Apr 2008 00:00:00 -0700</pubDate>
      <enclosure url="http://media.railscasts.com/assets/episodes/videos/103-site-wide-announcements.m4v" length="13754767" type="video/mp4"/>
      <link>http://railscasts.com/episodes/103-site-wide-announcements</link>
      <guid isPermaLink="false">site-wide-announcements</guid>
      <itunes:author>Ryan Bates</itunes:author>
      <itunes:subtitle>Sometimes you need to display an administrative announcement to every page on the site and give the users the ability to hide the announcement. See...</itunes:subtitle>
      <itunes:summary>Sometimes you need to display an administrative announcement to every page on the site and give the users the ability to hide the announcement. See how in this episode.</itunes:summary>
      <itunes:explicit>no</itunes:explicit>
      <itunes:duration>13:30</itunes:duration>
    </item>
    <item>
      <title>#102 Auto-Complete Association</title>
      <description>Usually a select menu is used for setting a belongs_to association, but in this episode I will show you how to use a text field with auto completion.</description>
      <pubDate>Mon, 21 Apr 2008 00:00:00 -0700</pubDate>
      <enclosure url="http://media.railscasts.com/assets/episodes/videos/102-auto-complete-association.m4v" length="13907669" type="video/mp4"/>
      <link>http://railscasts.com/episodes/102-auto-complete-association</link>
      <guid isPermaLink="false">auto-complete-association</guid>
      <itunes:author>Ryan Bates</itunes:author>
      <itunes:subtitle>Usually a select menu is used for setting a belongs_to association, but in this episode I will show you how to use a text field with auto completion.</itunes:subtitle>
      <itunes:summary>Usually a select menu is used for setting a belongs_to association, but in this episode I will show you how to use a text field with auto completion.</itunes:summary>
      <itunes:explicit>no</itunes:explicit>
      <itunes:duration>13:29</itunes:duration>
    </item>
    <item>
      <title>#101 Refactoring Out Helper Object</title>
      <description>If you have complex view logic, this can easily lead to helper methods which call each other. See how to refactor this out into another object in this episode. This is also known as the presenter pattern.</description>
      <pubDate>Mon, 14 Apr 2008 00:00:00 -0700</pubDate>
      <enclosure url="http://media.railscasts.com/assets/episodes/videos/101-refactoring-out-helper-object.m4v" length="9074565" type="video/mp4"/>
      <link>http://railscasts.com/episodes/101-refactoring-out-helper-object</link>
      <guid isPermaLink="false">refactoring-out-helper-object</guid>
      <itunes:author>Ryan Bates</itunes:author>
      <itunes:subtitle>If you have complex view logic, this can easily lead to helper methods which call each other. See how to refactor this out into another object in t...</itunes:subtitle>
      <itunes:summary>If you have complex view logic, this can easily lead to helper methods which call each other. See how to refactor this out into another object in this episode. This is also known as the presenter pattern.</itunes:summary>
      <itunes:explicit>no</itunes:explicit>
      <itunes:duration>7:25</itunes:duration>
    </item>
    <item>
      <title>#100 5 View Tips</title>
      <description>Here's five quick tips to use in views. Be sure to catch the end of the episode where I reveal an exciting contest!</description>
      <pubDate>Mon, 07 Apr 2008 00:00:00 -0700</pubDate>
      <enclosure url="http://media.railscasts.com/assets/episodes/videos/100-5-view-tips.m4v" length="10886086" type="video/mp4"/>
      <link>http://railscasts.com/episodes/100-5-view-tips</link>
      <guid isPermaLink="false">5-view-tips</guid>
      <itunes:author>Ryan Bates</itunes:author>
      <itunes:subtitle>Here's five quick tips to use in views. Be sure to catch the end of the episode where I reveal an exciting contest!</itunes:subtitle>
      <itunes:summary>Here's five quick tips to use in views. Be sure to catch the end of the episode where I reveal an exciting contest!</itunes:summary>
      <itunes:explicit>no</itunes:explicit>
      <itunes:duration>9:25</itunes:duration>
    </item>
    <item>
      <title>#99 Complex Partials</title>
      <description>How do you handle partials which have differences depending on the action which is rendering them? Here's three suggestions for this problem.</description>
      <pubDate>Mon, 31 Mar 2008 00:00:00 -0700</pubDate>
      <enclosure url="http://media.railscasts.com/assets/episodes/videos/099-complex-partials.m4v" length="9797571" type="video/mp4"/>
      <link>http://railscasts.com/episodes/99-complex-partials</link>
      <guid isPermaLink="false">complex-partials</guid>
      <itunes:author>Ryan Bates</itunes:author>
      <itunes:subtitle>How do you handle partials which have differences depending on the action which is rendering them? Here's three suggestions for this problem.</itunes:subtitle>
      <itunes:summary>How do you handle partials which have differences depending on the action which is rendering them? Here's three suggestions for this problem.</itunes:summary>
      <itunes:explicit>no</itunes:explicit>
      <itunes:duration>8:56</itunes:duration>
    </item>
    <item>
      <title>#98 Request Profiling</title>
      <description>You can use profiling to determine where the performance bottlenecks are in specific Rails actions. Watch this episode for details.</description>
      <pubDate>Mon, 24 Mar 2008 00:00:00 -0700</pubDate>
      <enclosure url="http://media.railscasts.com/assets/episodes/videos/098-request-profiling.m4v" length="16309457" type="video/mp4"/>
      <link>http://railscasts.com/episodes/98-request-profiling</link>
      <guid isPermaLink="false">request-profiling</guid>
      <itunes:author>Ryan Bates</itunes:author>
      <itunes:subtitle>You can use profiling to determine where the performance bottlenecks are in specific Rails actions. Watch this episode for details.</itunes:subtitle>
      <itunes:summary>You can use profiling to determine where the performance bottlenecks are in specific Rails actions. Watch this episode for details.</itunes:summary>
      <itunes:explicit>no</itunes:explicit>
      <itunes:duration>10:53</itunes:duration>
    </item>
    <item>
      <title>#97 Analyzing the Production Log</title>
      <description>In order to improve performance of your Rails application you need to find the bottlenecks. A great starting point is your production log. In this episode you will see how to use RAWK to analyze your log file and determine which controller actions take up the most processing time.</description>
      <pubDate>Mon, 17 Mar 2008 00:00:00 -0700</pubDate>
      <enclosure url="http://media.railscasts.com/assets/episodes/videos/097-analyzing-the-production-log.m4v" length="7407028" type="video/mp4"/>
      <link>http://railscasts.com/episodes/97-analyzing-the-production-log</link>
      <guid isPermaLink="false">analyzing-the-production-log</guid>
      <itunes:author>Ryan Bates</itunes:author>
      <itunes:subtitle>In order to improve performance of your Rails application you need to find the bottlenecks. A great starting point is your production log. In this ...</itunes:subtitle>
      <itunes:summary>In order to improve performance of your Rails application you need to find the bottlenecks. A great starting point is your production log. In this episode you will see how to use RAWK to analyze your log file and determine which controller actions take up the most processing time.</itunes:summary>
      <itunes:explicit>no</itunes:explicit>
      <itunes:duration>5:55</itunes:duration>
    </item>
    <item>
      <title>#96 Git on Rails</title>
      <description>Git has been getting a lot of buzz lately, and for good reason. It's an excellent SCM which in many ways is more simple and powerful than subversion. See how to set up a Rails project with Git in this episode.</description>
      <pubDate>Mon, 10 Mar 2008 00:00:00 -0700</pubDate>
      <enclosure url="http://media.railscasts.com/assets/episodes/videos/096-git-on-rails.m4v" length="5674636" type="video/mp4"/>
      <link>http://railscasts.com/episodes/96-git-on-rails</link>
      <guid isPermaLink="false">git-on-rails</guid>
      <itunes:author>Ryan Bates</itunes:author>
      <itunes:subtitle>Git has been getting a lot of buzz lately, and for good reason. It's an excellent SCM which in many ways is more simple and powerful than subversio...</itunes:subtitle>
      <itunes:summary>Git has been getting a lot of buzz lately, and for good reason. It's an excellent SCM which in many ways is more simple and powerful than subversion. See how to set up a Rails project with Git in this episode.</itunes:summary>
      <itunes:explicit>no</itunes:explicit>
      <itunes:duration>5:56</itunes:duration>
    </item>
    <item>
      <title>#95 More on ActiveResource</title>
      <description>See how to handle authentication and custom actions using ActiveResource in this episode.</description>
      <pubDate>Sun, 02 Mar 2008 23:00:00 -0800</pubDate>
      <enclosure url="http://media.railscasts.com/assets/episodes/videos/095-more-on-activeresource.m4v" length="10472331" type="video/mp4"/>
      <link>http://railscasts.com/episodes/95-more-on-activeresource</link>
      <guid isPermaLink="false">more-on-activeresource</guid>
      <itunes:author>Ryan Bates</itunes:author>
      <itunes:subtitle>See how to handle authentication and custom actions using ActiveResource in this episode.</itunes:subtitle>
      <itunes:summary>See how to handle authentication and custom actions using ActiveResource in this episode.</itunes:summary>
      <itunes:explicit>no</itunes:explicit>
      <itunes:duration>8:15</itunes:duration>
    </item>
    <item>
      <title>#94 ActiveResource Basics</title>
      <description>ActiveResource allows you to easily communicate between multiple Rails applications. See how in this episode.</description>
      <pubDate>Sun, 24 Feb 2008 23:00:00 -0800</pubDate>
      <enclosure url="http://media.railscasts.com/assets/episodes/videos/094-activeresource-basics.m4v" length="8044388" type="video/mp4"/>
      <link>http://railscasts.com/episodes/94-activeresource-basics</link>
      <guid isPermaLink="false">activeresource-basics</guid>
      <itunes:author>Ryan Bates</itunes:author>
      <itunes:subtitle>ActiveResource allows you to easily communicate between multiple Rails applications. See how in this episode.</itunes:subtitle>
      <itunes:summary>ActiveResource allows you to easily communicate between multiple Rails applications. See how in this episode.</itunes:summary>
      <itunes:explicit>no</itunes:explicit>
      <itunes:duration>7:07</itunes:duration>
    </item>
    <item>
      <title>#93 Action Caching</title>
      <description>Action caching behaves much like page caching except it processes the controller filters. You can also make it conditional as seen in this episode.</description>
      <pubDate>Sun, 17 Feb 2008 23:00:00 -0800</pubDate>
      <enclosure url="http://media.railscasts.com/assets/episodes/videos/093-action-caching.m4v" length="8836083" type="video/mp4"/>
      <link>http://railscasts.com/episodes/93-action-caching</link>
      <guid isPermaLink="false">action-caching</guid>
      <itunes:author>Ryan Bates</itunes:author>
      <itunes:subtitle>Action caching behaves much like page caching except it processes the controller filters. You can also make it conditional as seen in this episode.</itunes:subtitle>
      <itunes:summary>Action caching behaves much like page caching except it processes the controller filters. You can also make it conditional as seen in this episode.</itunes:summary>
      <itunes:explicit>no</itunes:explicit>
      <itunes:duration>7:04</itunes:duration>
    </item>
    <item>
      <title>#92 make_resourceful</title>
      <description>The make_resourceful plugin is a great way to DRY up the 7 RESTful actions common in most controllers. Learn how to use it in this episode.</description>
      <pubDate>Sun, 10 Feb 2008 23:00:00 -0800</pubDate>
      <enclosure url="http://media.railscasts.com/assets/episodes/videos/092-make-resourceful.m4v" length="6966701" type="video/mp4"/>
      <link>http://railscasts.com/episodes/92-make-resourceful</link>
      <guid isPermaLink="false">make-resourceful</guid>
      <itunes:author>Ryan Bates</itunes:author>
      <itunes:subtitle>The make_resourceful plugin is a great way to DRY up the 7 RESTful actions common in most controllers. Learn how to use it in this episode.</itunes:subtitle>
      <itunes:summary>The make_resourceful plugin is a great way to DRY up the 7 RESTful actions common in most controllers. Learn how to use it in this episode.</itunes:summary>
      <itunes:explicit>no</itunes:explicit>
      <itunes:duration>6:08</itunes:duration>
    </item>
    <item>
      <title>#91 Refactoring Long Methods</title>
      <description>In this episode I walk you through an exercise in refactoring by taking a long method and making it more concise.</description>
      <pubDate>Sun, 03 Feb 2008 23:00:00 -0800</pubDate>
      <enclosure url="http://media.railscasts.com/assets/episodes/videos/091-refactoring-long-methods.m4v" length="7975025" type="video/mp4"/>
      <link>http://railscasts.com/episodes/91-refactoring-long-methods</link>
      <guid isPermaLink="false">refactoring-long-methods</guid>
      <itunes:author>Ryan Bates</itunes:author>
      <itunes:subtitle>In this episode I walk you through an exercise in refactoring by taking a long method and making it more concise.</itunes:subtitle>
      <itunes:summary>In this episode I walk you through an exercise in refactoring by taking a long method and making it more concise.</itunes:summary>
      <itunes:explicit>no</itunes:explicit>
      <itunes:duration>7:29</itunes:duration>
    </item>
    <item>
      <title>#90 Fragment Caching</title>
      <description>Sometimes you only want to cache a section of a page instead of the entire page. Fragment caching is the answer as shown in this episode.</description>
      <pubDate>Sun, 27 Jan 2008 00:00:00 -0800</pubDate>
      <enclosure url="http://media.railscasts.com/assets/episodes/videos/090-fragment-caching.m4v" length="9185388" type="video/mp4"/>
      <link>http://railscasts.com/episodes/90-fragment-caching</link>
      <guid isPermaLink="false">fragment-caching</guid>
      <itunes:author>Ryan Bates</itunes:author>
      <itunes:subtitle>Sometimes you only want to cache a section of a page instead of the entire page. Fragment caching is the answer as shown in this episode.</itunes:subtitle>
      <itunes:summary>Sometimes you only want to cache a section of a page instead of the entire page. Fragment caching is the answer as shown in this episode.</itunes:summary>
      <itunes:explicit>no</itunes:explicit>
      <itunes:duration>6:54</itunes:duration>
    </item>
    <item>
      <title>#89 Page Caching</title>
      <description>Page caching is an efficient way to cache stateless content. In this episode I will show you how to cache the dynamic javascript we created last week.</description>
      <pubDate>Sun, 20 Jan 2008 00:00:00 -0800</pubDate>
      <enclosure url="http://media.railscasts.com/assets/episodes/videos/089-page-caching.m4v" length="9161503" type="video/mp4"/>
      <link>http://railscasts.com/episodes/89-page-caching</link>
      <guid isPermaLink="false">page-caching</guid>
      <itunes:author>Ryan Bates</itunes:author>
      <itunes:subtitle>Page caching is an efficient way to cache stateless content. In this episode I will show you how to cache the dynamic javascript we created last week.</itunes:subtitle>
      <itunes:summary>Page caching is an efficient way to cache stateless content. In this episode I will show you how to cache the dynamic javascript we created last week.</itunes:summary>
      <itunes:explicit>no</itunes:explicit>
      <itunes:duration>6:31</itunes:duration>
    </item>
    <item>
      <title>#88 Dynamic Select Menus</title>
      <description>See how to dynamically change a select menu based on another select menu using Javascript. In this episode everything is kept client side which leads to a more responsive user interface.</description>
      <pubDate>Sun, 13 Jan 2008 00:00:00 -0800</pubDate>
      <enclosure url="http://media.railscasts.com/assets/episodes/videos/088-dynamic-select-menus.m4v" length="8322195" type="video/mp4"/>
      <link>http://railscasts.com/episodes/88-dynamic-select-menus</link>
      <guid isPermaLink="false">dynamic-select-menus</guid>
      <itunes:author>Ryan Bates</itunes:author>
      <itunes:subtitle>See how to dynamically change a select menu based on another select menu using Javascript. In this episode everything is kept client side which lea...</itunes:subtitle>
      <itunes:summary>See how to dynamically change a select menu based on another select menu using Javascript. In this episode everything is kept client side which leads to a more responsive user interface.</itunes:summary>
      <itunes:explicit>no</itunes:explicit>
      <itunes:duration>7:02</itunes:duration>
    </item>
    <item>
      <title>#87 Generating RSS Feeds</title>
      <description>See how to easily generate and link to an RSS feed using new features in Rails 2.0. Watch this episode or details.</description>
      <pubDate>Sun, 06 Jan 2008 00:00:00 -0800</pubDate>
      <enclosure url="http://media.railscasts.com/assets/episodes/videos/087-generating-rss-feeds.m4v" length="6729651" type="video/mp4"/>
      <link>http://railscasts.com/episodes/87-generating-rss-feeds</link>
      <guid isPermaLink="false">generating-rss-feeds</guid>
      <itunes:author>Ryan Bates</itunes:author>
      <itunes:subtitle>See how to easily generate and link to an RSS feed using new features in Rails 2.0. Watch this episode or details.</itunes:subtitle>
      <itunes:summary>See how to easily generate and link to an RSS feed using new features in Rails 2.0. Watch this episode or details.</itunes:summary>
      <itunes:explicit>no</itunes:explicit>
      <itunes:duration>6:06</itunes:duration>
    </item>
    <item>
      <title>#86 Logging Variables</title>
      <description>Have you ever wanted to easily log all variables? Now you can by using some advanced Ruby concepts as shown in this episode.</description>
      <pubDate>Sun, 30 Dec 2007 23:00:00 -0800</pubDate>
      <enclosure url="http://media.railscasts.com/assets/episodes/videos/086-logging-variables.m4v" length="6509448" type="video/mp4"/>
      <link>http://railscasts.com/episodes/86-logging-variables</link>
      <guid isPermaLink="false">logging-variables</guid>
      <itunes:author>Ryan Bates</itunes:author>
      <itunes:subtitle>Have you ever wanted to easily log all variables? Now you can by using some advanced Ruby concepts as shown in this episode.</itunes:subtitle>
      <itunes:summary>Have you ever wanted to easily log all variables? Now you can by using some advanced Ruby concepts as shown in this episode.</itunes:summary>
      <itunes:explicit>no</itunes:explicit>
      <itunes:duration>6:37</itunes:duration>
    </item>
    <item>
      <title>#85 YAML Configuration File</title>
      <description>Application configuration shouldn't be spread throughout your code base. Instead a much better place to put it is an external YAML file. See how to do that in this episode.</description>
      <pubDate>Sun, 23 Dec 2007 23:00:00 -0800</pubDate>
      <enclosure url="http://media.railscasts.com/assets/episodes/videos/085-yaml-configuration-file.m4v" length="7656123" type="video/mp4"/>
      <link>http://railscasts.com/episodes/85-yaml-configuration-file</link>
      <guid isPermaLink="false">yaml-configuration-file</guid>
      <itunes:author>Ryan Bates</itunes:author>
      <itunes:subtitle>Application configuration shouldn't be spread throughout your code base. Instead a much better place to put it is an external YAML file. See how to...</itunes:subtitle>
      <itunes:summary>Application configuration shouldn't be spread throughout your code base. Instead a much better place to put it is an external YAML file. See how to do that in this episode.</itunes:summary>
      <itunes:explicit>no</itunes:explicit>
      <itunes:duration>7:03</itunes:duration>
    </item>
    <item>
      <title>#84 Cookie Based Session Store</title>
      <description>In Rails 1.2 the default session store is file based. This is inefficient and difficult to maintain. In Rails 2.0 the default is now cookie based which has several benefits as you will see in this episode.</description>
      <pubDate>Sun, 16 Dec 2007 00:00:00 -0800</pubDate>
      <enclosure url="http://media.railscasts.com/assets/episodes/videos/084-cookie-based-session-store.m4v" length="3849783" type="video/mp4"/>
      <link>http://railscasts.com/episodes/84-cookie-based-session-store</link>
      <guid isPermaLink="false">cookie-based-session-store</guid>
      <itunes:author>Ryan Bates</itunes:author>
      <itunes:subtitle>In Rails 1.2 the default session store is file based. This is inefficient and difficult to maintain. In Rails 2.0 the default is now cookie based w...</itunes:subtitle>
      <itunes:summary>In Rails 1.2 the default session store is file based. This is inefficient and difficult to maintain. In Rails 2.0 the default is now cookie based which has several benefits as you will see in this episode.</itunes:summary>
      <itunes:explicit>no</itunes:explicit>
      <itunes:duration>4:00</itunes:duration>
    </item>
    <item>
      <title>#83 Migrations in Rails 2.0</title>
      <description>Migrations are now sexy in Rails 2.0! In this episode we will take a look at these improvements and the related rake tasks.</description>
      <pubDate>Sun, 09 Dec 2007 23:00:00 -0800</pubDate>
      <enclosure url="http://media.railscasts.com/assets/episodes/videos/083-migrations-in-rails-2-0.m4v" length="5395507" type="video/mp4"/>
      <link>http://railscasts.com/episodes/83-migrations-in-rails-2-0</link>
      <guid isPermaLink="false">migrations-in-rails-2-0</guid>
      <itunes:author>Ryan Bates</itunes:author>
      <itunes:subtitle>Migrations are now sexy in Rails 2.0! In this episode we will take a look at these improvements and the related rake tasks.</itunes:subtitle>
      <itunes:summary>Migrations are now sexy in Rails 2.0! In this episode we will take a look at these improvements and the related rake tasks.</itunes:summary>
      <itunes:explicit>no</itunes:explicit>
      <itunes:duration>5:31</itunes:duration>
    </item>
    <item>
      <title>#82 HTTP Basic Authentication</title>
      <description>Rails 2.0 offers an extremely easy way to do HTTP basic authentication. See how in this episode.</description>
      <pubDate>Sun, 02 Dec 2007 00:00:00 -0800</pubDate>
      <enclosure url="http://media.railscasts.com/assets/episodes/videos/082-http-basic-authentication.m4v" length="5116654" type="video/mp4"/>
      <link>http://railscasts.com/episodes/82-http-basic-authentication</link>
      <guid isPermaLink="false">http-basic-authentication</guid>
      <itunes:author>Ryan Bates</itunes:author>
      <itunes:subtitle>Rails 2.0 offers an extremely easy way to do HTTP basic authentication. See how in this episode.</itunes:subtitle>
      <itunes:summary>Rails 2.0 offers an extremely easy way to do HTTP basic authentication. See how in this episode.</itunes:summary>
      <itunes:explicit>no</itunes:explicit>
      <itunes:duration>4:23</itunes:duration>
    </item>
    <item>
      <title>#81 Fixtures in Rails 2.0</title>
      <description>In Rails 2.0, fixtures see many improvements which makes them much easier to manage. Watch this episode for details.</description>
      <pubDate>Sun, 25 Nov 2007 23:00:00 -0800</pubDate>
      <enclosure url="http://media.railscasts.com/assets/episodes/videos/081-fixtures-in-rails-2-0.m4v" length="3638197" type="video/mp4"/>
      <link>http://railscasts.com/episodes/81-fixtures-in-rails-2-0</link>
      <guid isPermaLink="false">fixtures-in-rails-2-0</guid>
      <itunes:author>Ryan Bates</itunes:author>
      <itunes:subtitle>In Rails 2.0, fixtures see many improvements which makes them much easier to manage. Watch this episode for details.</itunes:subtitle>
      <itunes:summary>In Rails 2.0, fixtures see many improvements which makes them much easier to manage. Watch this episode for details.</itunes:summary>
      <itunes:explicit>no</itunes:explicit>
      <itunes:duration>4:25</itunes:duration>
    </item>
    <item>
      <title>#80 Simplify Views with Rails 2.0</title>
      <description>Rails 2.0 is almost here. One of the many features in this release is the smarter helper methods which can make your views much cleaner. Learn all about it in this Episode.</description>
      <pubDate>Sun, 18 Nov 2007 23:00:00 -0800</pubDate>
      <enclosure url="http://media.railscasts.com/assets/episodes/videos/080-simplify-views-with-rails-2-0.m4v" length="6064115" type="video/mp4"/>
      <link>http://railscasts.com/episodes/80-simplify-views-with-rails-2-0</link>
      <guid isPermaLink="false">simplify-views-with-rails-2-0</guid>
      <itunes:author>Ryan Bates</itunes:author>
      <itunes:subtitle>Rails 2.0 is almost here. One of the many features in this release is the smarter helper methods which can make your views much cleaner. Learn all ...</itunes:subtitle>
      <itunes:summary>Rails 2.0 is almost here. One of the many features in this release is the smarter helper methods which can make your views much cleaner. Learn all about it in this Episode.</itunes:summary>
      <itunes:explicit>no</itunes:explicit>
      <itunes:duration>6:03</itunes:duration>
    </item>
    <item>
      <title>#79 Generate Named Routes</title>
      <description>This more advanced episode will show you how to dynamically generate named routes by adding a method to the map object.</description>
      <pubDate>Sun, 11 Nov 2007 23:00:00 -0800</pubDate>
      <enclosure url="http://media.railscasts.com/assets/episodes/videos/079-generate-named-routes.m4v" length="5868845" type="video/mp4"/>
      <link>http://railscasts.com/episodes/79-generate-named-routes</link>
      <guid isPermaLink="false">generate-named-routes</guid>
      <itunes:author>Ryan Bates</itunes:author>
      <itunes:subtitle>This more advanced episode will show you how to dynamically generate named routes by adding a method to the map object.</itunes:subtitle>
      <itunes:summary>This more advanced episode will show you how to dynamically generate named routes by adding a method to the map object.</itunes:summary>
      <itunes:explicit>no</itunes:explicit>
      <itunes:duration>5:59</itunes:duration>
    </item>
    <item>
      <title>#78 Generating PDF Documents</title>
      <description>In this episode I will show you how to create PDF documents using the excellent PDF::Writer gem.</description>
      <pubDate>Sun, 04 Nov 2007 23:00:00 -0800</pubDate>
      <enclosure url="http://media.railscasts.com/assets/episodes/videos/078-generating-pdf-documents.m4v" length="7863267" type="video/mp4"/>
      <link>http://railscasts.com/episodes/78-generating-pdf-documents</link>
      <guid isPermaLink="false">generating-pdf-documents</guid>
      <itunes:author>Ryan Bates</itunes:author>
      <itunes:subtitle>In this episode I will show you how to create PDF documents using the excellent PDF::Writer gem.</itunes:subtitle>
      <itunes:summary>In this episode I will show you how to create PDF documents using the excellent PDF::Writer gem.</itunes:summary>
      <itunes:explicit>no</itunes:explicit>
      <itunes:duration>7:13</itunes:duration>
    </item>
    <item>
      <title>#77 Destroy Without JavaScript</title>
      <description>If the user has JavaScript disabled, the "Destroy" link might not work properly. In this episode I will explore a number of ways to work around this issue.</description>
      <pubDate>Mon, 29 Oct 2007 00:00:00 -0700</pubDate>
      <enclosure url="http://media.railscasts.com/assets/episodes/videos/077-destroy-without-javascript.m4v" length="7632242" type="video/mp4"/>
      <link>http://railscasts.com/episodes/77-destroy-without-javascript</link>
      <guid isPermaLink="false">destroy-without-javascript</guid>
      <itunes:author>Ryan Bates</itunes:author>
      <itunes:subtitle>If the user has JavaScript disabled, the "Destroy" link might not work properly. In this episode I will explore a number of ways to work around thi...</itunes:subtitle>
      <itunes:summary>If the user has JavaScript disabled, the "Destroy" link might not work properly. In this episode I will explore a number of ways to work around this issue.</itunes:summary>
      <itunes:explicit>no</itunes:explicit>
      <itunes:duration>7:08</itunes:duration>
    </item>
    <item>
      <title>#76 scope_out</title>
      <description>The scope_out plugin will generate several helpful find methods for you automatically! It's the best way to move the find conditions into your model. Watch this episode for details.</description>
      <pubDate>Mon, 22 Oct 2007 00:00:00 -0700</pubDate>
      <enclosure url="http://media.railscasts.com/assets/episodes/videos/076-scope-out.m4v" length="6177113" type="video/mp4"/>
      <link>http://railscasts.com/episodes/76-scope-out</link>
      <guid isPermaLink="false">scope-out</guid>
      <itunes:author>Ryan Bates</itunes:author>
      <itunes:subtitle>The scope_out plugin will generate several helpful find methods for you automatically! It's the best way to move the find conditions into your mode...</itunes:subtitle>
      <itunes:summary>The scope_out plugin will generate several helpful find methods for you automatically! It's the best way to move the find conditions into your model. Watch this episode for details.</itunes:summary>
      <itunes:explicit>no</itunes:explicit>
      <itunes:duration>6:38</itunes:duration>
    </item>
    <item>
      <title>#75 Complex Forms Part 3</title>
      <description>In this third and final episode on complex forms I will show you how to edit a project and multiple tasks all in one form. This includes removing and adding tasks dynamically as well. See the show notes for updated code.</description>
      <pubDate>Mon, 15 Oct 2007 00:00:00 -0700</pubDate>
      <enclosure url="http://media.railscasts.com/assets/episodes/videos/075-complex-forms-part-3.m4v" length="16480834" type="video/mp4"/>
      <link>http://railscasts.com/episodes/75-complex-forms-part-3</link>
      <guid isPermaLink="false">complex-forms-part-3</guid>
      <itunes:author>Ryan Bates</itunes:author>
      <itunes:subtitle>In this third and final episode on complex forms I will show you how to edit a project and multiple tasks all in one form. This includes removing a...</itunes:subtitle>
      <itunes:summary>In this third and final episode on complex forms I will show you how to edit a project and multiple tasks all in one form. This includes removing and adding tasks dynamically as well. See the show notes for updated code.</itunes:summary>
      <itunes:explicit>no</itunes:explicit>
      <itunes:duration>16:11</itunes:duration>
    </item>
    <item>
      <title>#74 Complex Forms Part 2</title>
      <description>See how to use Javascript and RJS to add and remove form fields dynamically. This episode will build upon the previous episode allowing you to create any number of tasks in one form the same time a project is created.</description>
      <pubDate>Mon, 08 Oct 2007 00:00:00 -0700</pubDate>
      <enclosure url="http://media.railscasts.com/assets/episodes/videos/074-complex-forms-part-2.m4v" length="8862318" type="video/mp4"/>
      <link>http://railscasts.com/episodes/74-complex-forms-part-2</link>
      <guid isPermaLink="false">complex-forms-part-2</guid>
      <itunes:author>Ryan Bates</itunes:author>
      <itunes:subtitle>See how to use Javascript and RJS to add and remove form fields dynamically. This episode will build upon the previous episode allowing you to crea...</itunes:subtitle>
      <itunes:summary>See how to use Javascript and RJS to add and remove form fields dynamically. This episode will build upon the previous episode allowing you to create any number of tasks in one form the same time a project is created.</itunes:summary>
      <itunes:explicit>no</itunes:explicit>
      <itunes:duration>8:54</itunes:duration>
    </item>
    <item>
      <title>#73 Complex Forms Part 1</title>
      <description>Complex forms often lead to complex controllers, but that doesn't have to be the case. In this episode see how you can create multiple models through a single form while keeping the controller clean.</description>
      <pubDate>Mon, 01 Oct 2007 00:00:00 -0700</pubDate>
      <enclosure url="http://media.railscasts.com/assets/episodes/videos/073-complex-forms-part-1.m4v" length="8212007" type="video/mp4"/>
      <link>http://railscasts.com/episodes/73-complex-forms-part-1</link>
      <guid isPermaLink="false">complex-forms-part-1</guid>
      <itunes:author>Ryan Bates</itunes:author>
      <itunes:subtitle>Complex forms often lead to complex controllers, but that doesn't have to be the case. In this episode see how you can create multiple models throu...</itunes:subtitle>
      <itunes:summary>Complex forms often lead to complex controllers, but that doesn't have to be the case. In this episode see how you can create multiple models through a single form while keeping the controller clean.</itunes:summary>
      <itunes:explicit>no</itunes:explicit>
      <itunes:duration>8:05</itunes:duration>
    </item>
    <item>
      <title>#72 Adding an Environment</title>
      <description>Rails comes with three environments: development, test, and production. But, you aren't restricted to just these. You can add your own! See how in this episode.</description>
      <pubDate>Mon, 24 Sep 2007 00:00:00 -0700</pubDate>
      <enclosure url="http://media.railscasts.com/assets/episodes/videos/072-adding-an-environment.m4v" length="4044039" type="video/mp4"/>
      <link>http://railscasts.com/episodes/72-adding-an-environment</link>
      <guid isPermaLink="false">adding-an-environment</guid>
      <itunes:author>Ryan Bates</itunes:author>
      <itunes:subtitle>Rails comes with three environments: development, test, and production. But, you aren't restricted to just these. You can add your own! See how in ...</itunes:subtitle>
      <itunes:summary>Rails comes with three environments: development, test, and production. But, you aren't restricted to just these. You can add your own! See how in this episode.</itunes:summary>
      <itunes:explicit>no</itunes:explicit>
      <itunes:duration>3:22</itunes:duration>
    </item>
    <item>
      <title>#71 Testing Controllers with RSpec</title>
      <description>Controllers are tricky to test, and there's no perfect way to do it. In this episode you will see how I test controllers, and my reasoning behind it.</description>
      <pubDate>Mon, 17 Sep 2007 00:00:00 -0700</pubDate>
      <enclosure url="http://media.railscasts.com/assets/episodes/videos/071-testing-controllers-with-rspec.m4v" length="12720863" type="video/mp4"/>
      <link>http://railscasts.com/episodes/71-testing-controllers-with-rspec</link>
      <guid isPermaLink="false">testing-controllers-with-rspec</guid>
      <itunes:author>Ryan Bates</itunes:author>
      <itunes:subtitle>Controllers are tricky to test, and there's no perfect way to do it. In this episode you will see how I test controllers, and my reasoning behind it.</itunes:subtitle>
      <itunes:summary>Controllers are tricky to test, and there's no perfect way to do it. In this episode you will see how I test controllers, and my reasoning behind it.</itunes:summary>
      <itunes:explicit>no</itunes:explicit>
      <itunes:duration>11:17</itunes:duration>
    </item>
    <item>
      <title>#70 Custom Routes</title>
      <description>In this episode you will learn how to add custom routes, make some parameters optional, and add requirements for other parameters.</description>
      <pubDate>Mon, 10 Sep 2007 00:00:00 -0700</pubDate>
      <enclosure url="http://media.railscasts.com/assets/episodes/videos/070-custom-routes.m4v" length="6920227" type="video/mp4"/>
      <link>http://railscasts.com/episodes/70-custom-routes</link>
      <guid isPermaLink="false">custom-routes</guid>
      <itunes:author>Ryan Bates</itunes:author>
      <itunes:subtitle>In this episode you will learn how to add custom routes, make some parameters optional, and add requirements for other parameters.</itunes:subtitle>
      <itunes:summary>In this episode you will learn how to add custom routes, make some parameters optional, and add requirements for other parameters.</itunes:summary>
      <itunes:explicit>no</itunes:explicit>
      <itunes:duration>7:05</itunes:duration>
    </item>
    <item>
      <title>#69 Markaby in Helper</title>
      <description>Do you ever need to generate HTML code in a helper method? Placing it directly in Ruby strings is not very pretty. Learn a great way to generate HTML through Markaby in this episode.</description>
      <pubDate>Mon, 03 Sep 2007 00:00:00 -0700</pubDate>
      <enclosure url="http://media.railscasts.com/assets/episodes/videos/069-markaby-in-helper.m4v" length="6911586" type="video/mp4"/>
      <link>http://railscasts.com/episodes/69-markaby-in-helper</link>
      <guid isPermaLink="false">markaby-in-helper</guid>
      <itunes:author>Ryan Bates</itunes:author>
      <itunes:subtitle>Do you ever need to generate HTML code in a helper method? Placing it directly in Ruby strings is not very pretty. Learn a great way to generate HT...</itunes:subtitle>
      <itunes:summary>Do you ever need to generate HTML code in a helper method? Placing it directly in Ruby strings is not very pretty. Learn a great way to generate HTML through Markaby in this episode.</itunes:summary>
      <itunes:explicit>no</itunes:explicit>
      <itunes:duration>6:29</itunes:duration>
    </item>
    <item>
      <title>#68 OpenID Authentication</title>
      <description>Ever wonder how to implement OpenID authentication in your Rails app? This episode will show you how to add it to a site with an existing authentication system.</description>
      <pubDate>Mon, 27 Aug 2007 00:00:00 -0700</pubDate>
      <enclosure url="http://media.railscasts.com/assets/episodes/videos/068-openid-authentication.m4v" length="12658150" type="video/mp4"/>
      <link>http://railscasts.com/episodes/68-openid-authentication</link>
      <guid isPermaLink="false">openid-authentication</guid>
      <itunes:author>Ryan Bates</itunes:author>
      <itunes:subtitle>Ever wonder how to implement OpenID authentication in your Rails app? This episode will show you how to add it to a site with an existing authentic...</itunes:subtitle>
      <itunes:summary>Ever wonder how to implement OpenID authentication in your Rails app? This episode will show you how to add it to a site with an existing authentication system.</itunes:summary>
      <itunes:explicit>no</itunes:explicit>
      <itunes:duration>11:09</itunes:duration>
    </item>
    <item>
      <title>#67 restful_authentication</title>
      <description>Need multiple user authentication? If so, the restful_authentication plugin is a great way to go. It will generate some basic authentication code for you which is good starting point to your authentication system. Watch this episode for details.</description>
      <pubDate>Mon, 20 Aug 2007 00:00:00 -0700</pubDate>
      <enclosure url="http://media.railscasts.com/assets/episodes/videos/067-restful-authentication.m4v" length="12400987" type="video/mp4"/>
      <link>http://railscasts.com/episodes/67-restful-authentication</link>
      <guid isPermaLink="false">restful-authentication</guid>
      <itunes:author>Ryan Bates</itunes:author>
      <itunes:subtitle>Need multiple user authentication? If so, the restful_authentication plugin is a great way to go. It will generate some basic authentication code f...</itunes:subtitle>
      <itunes:summary>Need multiple user authentication? If so, the restful_authentication plugin is a great way to go. It will generate some basic authentication code for you which is good starting point to your authentication system. Watch this episode for details.</itunes:summary>
      <itunes:explicit>no</itunes:explicit>
      <itunes:duration>9:30</itunes:duration>
    </item>
    <item>
      <title>#66 Custom Rake Tasks</title>
      <description>Rake is one of those tools that you don't realize how powerful it is until you start using it. In this episode you will learn how to create custom rake tasks and improve them by using rake features.</description>
      <pubDate>Mon, 13 Aug 2007 00:00:00 -0700</pubDate>
      <enclosure url="http://media.railscasts.com/assets/episodes/videos/066-custom-rake-tasks.m4v" length="10343527" type="video/mp4"/>
      <link>http://railscasts.com/episodes/66-custom-rake-tasks</link>
      <guid isPermaLink="false">custom-rake-tasks</guid>
      <itunes:author>Ryan Bates</itunes:author>
      <itunes:subtitle>Rake is one of those tools that you don't realize how powerful it is until you start using it. In this episode you will learn how to create custom ...</itunes:subtitle>
      <itunes:summary>Rake is one of those tools that you don't realize how powerful it is until you start using it. In this episode you will learn how to create custom rake tasks and improve them by using rake features.</itunes:summary>
      <itunes:explicit>no</itunes:explicit>
      <itunes:duration>10:06</itunes:duration>
    </item>
    <item>
      <title>#65 Stopping Spam with Akismet</title>
      <description>The Railscasts site has been getting a lot of comment spam in the past, but no longer. In this episode I will show you how I solved this problem by using the Akismet web service.</description>
      <pubDate>Mon, 06 Aug 2007 00:00:00 -0700</pubDate>
      <enclosure url="http://media.railscasts.com/assets/episodes/videos/065-stopping-spam-with-akismet.m4v" length="16422693" type="video/mp4"/>
      <link>http://railscasts.com/episodes/65-stopping-spam-with-akismet</link>
      <guid isPermaLink="false">stopping-spam-with-akismet</guid>
      <itunes:author>Ryan Bates</itunes:author>
      <itunes:subtitle>The Railscasts site has been getting a lot of comment spam in the past, but no longer. In this episode I will show you how I solved this problem by...</itunes:subtitle>
      <itunes:summary>The Railscasts site has been getting a lot of comment spam in the past, but no longer. In this episode I will show you how I solved this problem by using the Akismet web service.</itunes:summary>
      <itunes:explicit>no</itunes:explicit>
      <itunes:duration>11:17</itunes:duration>
    </item>
    <item>
      <title>#64 Custom Helper Modules</title>
      <description>Rails designates one helper module per controller, but that shouldn't stop you from making custom helper modules to help structure the code. Learn how in this episode.</description>
      <pubDate>Mon, 30 Jul 2007 00:00:00 -0700</pubDate>
      <enclosure url="http://media.railscasts.com/assets/episodes/videos/064-custom-helper-modules.m4v" length="6829634" type="video/mp4"/>
      <link>http://railscasts.com/episodes/64-custom-helper-modules</link>
      <guid isPermaLink="false">custom-helper-modules</guid>
      <itunes:author>Ryan Bates</itunes:author>
      <itunes:subtitle>Rails designates one helper module per controller, but that shouldn't stop you from making custom helper modules to help structure the code. Learn ...</itunes:subtitle>
      <itunes:summary>Rails designates one helper module per controller, but that shouldn't stop you from making custom helper modules to help structure the code. Learn how in this episode.</itunes:summary>
      <itunes:explicit>no</itunes:explicit>
      <itunes:duration>5:06</itunes:duration>
    </item>
    <item>
      <title>#63 Model Name in URL</title>
      <description>By default, Rails uses the model's id in the URL. What if you want to use the name of the model instead? You can change this behavior by overriding the to_param method in the model. Watch this episode for details.</description>
      <pubDate>Fri, 27 Jul 2007 00:00:00 -0700</pubDate>
      <enclosure url="http://media.railscasts.com/assets/episodes/videos/063-model-name-in-url.m4v" length="6510914" type="video/mp4"/>
      <link>http://railscasts.com/episodes/63-model-name-in-url</link>
      <guid isPermaLink="false">model-name-in-url</guid>
      <itunes:author>Ryan Bates</itunes:author>
      <itunes:subtitle>By default, Rails uses the model's id in the URL. What if you want to use the name of the model instead? You can change this behavior by overriding...</itunes:subtitle>
      <itunes:summary>By default, Rails uses the model's id in the URL. What if you want to use the name of the model instead? You can change this behavior by overriding the to_param method in the model. Watch this episode for details.</itunes:summary>
      <itunes:explicit>no</itunes:explicit>
      <itunes:duration>6:07</itunes:duration>
    </item>
    <item>
      <title>#62 Hacking ActiveRecord</title>
      <description>Have you ever wanted to temporarily disable all validations? Well, ActiveRecord doesn't support this, but that doesn't mean we can't add it. This episode will show you how to open up an existing class and change its behavior.</description>
      <pubDate>Wed, 25 Jul 2007 00:00:00 -0700</pubDate>
      <enclosure url="http://media.railscasts.com/assets/episodes/videos/062-hacking-activerecord.m4v" length="12783457" type="video/mp4"/>
      <link>http://railscasts.com/episodes/62-hacking-activerecord</link>
      <guid isPermaLink="false">hacking-activerecord</guid>
      <itunes:author>Ryan Bates</itunes:author>
      <itunes:subtitle>Have you ever wanted to temporarily disable all validations? Well, ActiveRecord doesn't support this, but that doesn't mean we can't add it. This e...</itunes:subtitle>
      <itunes:summary>Have you ever wanted to temporarily disable all validations? Well, ActiveRecord doesn't support this, but that doesn't mean we can't add it. This episode will show you how to open up an existing class and change its behavior.</itunes:summary>
      <itunes:explicit>no</itunes:explicit>
      <itunes:duration>11:13</itunes:duration>
    </item>
    <item>
      <title>#61 Sending Email</title>
      <description>This is a brief guide to sending email in Rails. See how to configure the environment, generate a mailer, create a template, and deliver the mail.</description>
      <pubDate>Mon, 23 Jul 2007 00:00:00 -0700</pubDate>
      <enclosure url="http://media.railscasts.com/assets/episodes/videos/061-sending-email.m4v" length="8643344" type="video/mp4"/>
      <link>http://railscasts.com/episodes/61-sending-email</link>
      <guid isPermaLink="false">sending-email</guid>
      <itunes:author>Ryan Bates</itunes:author>
      <itunes:subtitle>This is a brief guide to sending email in Rails. See how to configure the environment, generate a mailer, create a template, and deliver the mail.</itunes:subtitle>
      <itunes:summary>This is a brief guide to sending email in Rails. See how to configure the environment, generate a mailer, create a template, and deliver the mail.</itunes:summary>
      <itunes:explicit>no</itunes:explicit>
      <itunes:duration>7:58</itunes:duration>
    </item>
    <item>
      <title>#60 Testing without Fixtures</title>
      <description>Tests which rely heavily on fixtures are brittle and can be difficult to maintain. This episode will show a couple techniques for creating tests which don't use fixtures.</description>
      <pubDate>Fri, 20 Jul 2007 00:00:00 -0700</pubDate>
      <enclosure url="http://media.railscasts.com/assets/episodes/videos/060-testing-without-fixtures.m4v" length="10044020" type="video/mp4"/>
      <link>http://railscasts.com/episodes/60-testing-without-fixtures</link>
      <guid isPermaLink="false">testing-without-fixtures</guid>
      <itunes:author>Ryan Bates</itunes:author>
      <itunes:subtitle>Tests which rely heavily on fixtures are brittle and can be difficult to maintain. This episode will show a couple techniques for creating tests wh...</itunes:subtitle>
      <itunes:summary>Tests which rely heavily on fixtures are brittle and can be difficult to maintain. This episode will show a couple techniques for creating tests which don't use fixtures.</itunes:summary>
      <itunes:explicit>no</itunes:explicit>
      <itunes:duration>9:49</itunes:duration>
    </item>
    <item>
      <title>#59 Optimistic Locking</title>
      <description>When two people attempt to update the same record near the same time, one of the updates will likely be overwritten. You can solve this problem with optimistic locking.</description>
      <pubDate>Wed, 18 Jul 2007 00:00:00 -0700</pubDate>
      <enclosure url="http://media.railscasts.com/assets/episodes/videos/059-optimistic-locking.m4v" length="8180606" type="video/mp4"/>
      <link>http://railscasts.com/episodes/59-optimistic-locking</link>
      <guid isPermaLink="false">optimistic-locking</guid>
      <itunes:author>Ryan Bates</itunes:author>
      <itunes:subtitle>When two people attempt to update the same record near the same time, one of the updates will likely be overwritten. You can solve this problem wit...</itunes:subtitle>
      <itunes:summary>When two people attempt to update the same record near the same time, one of the updates will likely be overwritten. You can solve this problem with optimistic locking.</itunes:summary>
      <itunes:explicit>no</itunes:explicit>
      <itunes:duration>7:26</itunes:duration>
    </item>
    <item>
      <title>#58 How to Make a Generator</title>
      <description>Rails comes with many built-in generators, but what if you want to customize them or make your own? Rails gives you a great way to do this which you will learn in this episode.</description>
      <pubDate>Mon, 16 Jul 2007 00:00:00 -0700</pubDate>
      <enclosure url="http://media.railscasts.com/assets/episodes/videos/058-how-to-make-a-generator.m4v" length="13288030" type="video/mp4"/>
      <link>http://railscasts.com/episodes/58-how-to-make-a-generator</link>
      <guid isPermaLink="false">how-to-make-a-generator</guid>
      <itunes:author>Ryan Bates</itunes:author>
      <itunes:subtitle>Rails comes with many built-in generators, but what if you want to customize them or make your own? Rails gives you a great way to do this which yo...</itunes:subtitle>
      <itunes:summary>Rails comes with many built-in generators, but what if you want to customize them or make your own? Rails gives you a great way to do this which you will learn in this episode.</itunes:summary>
      <itunes:explicit>no</itunes:explicit>
      <itunes:duration>11:11</itunes:duration>
    </item>
    <item>
      <title>#57 Create Model Through Text Field</title>
      <description>Let's say you provide a select menu for setting which category a given product belongs to, but you also want the option of creating a new category by typing the name in a text field. See a great way to do that in this episode.</description>
      <pubDate>Fri, 13 Jul 2007 00:00:00 -0700</pubDate>
      <enclosure url="http://media.railscasts.com/assets/episodes/videos/057-create-model-through-text-field.m4v" length="5881741" type="video/mp4"/>
      <link>http://railscasts.com/episodes/57-create-model-through-text-field</link>
      <guid isPermaLink="false">create-model-through-text-field</guid>
      <itunes:author>Ryan Bates</itunes:author>
      <itunes:subtitle>Let's say you provide a select menu for setting which category a given product belongs to, but you also want the option of creating a new category ...</itunes:subtitle>
      <itunes:summary>Let's say you provide a select menu for setting which category a given product belongs to, but you also want the option of creating a new category by typing the name in a text field. See a great way to do that in this episode.</itunes:summary>
      <itunes:explicit>no</itunes:explicit>
      <itunes:duration>5:30</itunes:duration>
    </item>
    <item>
      <title>#56 The Logger</title>
      <description>Learn all about the logger in this episode. See how to send messages to the log and how to customize it.</description>
      <pubDate>Wed, 11 Jul 2007 00:00:00 -0700</pubDate>
      <enclosure url="http://media.railscasts.com/assets/episodes/videos/056-the-logger.m4v" length="14391558" type="video/mp4"/>
      <link>http://railscasts.com/episodes/56-the-logger</link>
      <guid isPermaLink="false">the-logger</guid>
      <itunes:author>Ryan Bates</itunes:author>
      <itunes:subtitle>Learn all about the logger in this episode. See how to send messages to the log and how to customize it.</itunes:subtitle>
      <itunes:summary>Learn all about the logger in this episode. See how to send messages to the log and how to customize it.</itunes:summary>
      <itunes:explicit>no</itunes:explicit>
      <itunes:duration>9:49</itunes:duration>
    </item>
    <item>
      <title>#55 Cleaning Up the View</title>
      <description>This episode starts off with a big, messy template. Watch as this code shrinks and becomes more readable while the interface stays the same.</description>
      <pubDate>Mon, 09 Jul 2007 00:00:00 -0700</pubDate>
      <enclosure url="http://media.railscasts.com/assets/episodes/videos/055-cleaning-up-the-view.m4v" length="11516963" type="video/mp4"/>
      <link>http://railscasts.com/episodes/55-cleaning-up-the-view</link>
      <guid isPermaLink="false">cleaning-up-the-view</guid>
      <itunes:author>Ryan Bates</itunes:author>
      <itunes:subtitle>This episode starts off with a big, messy template. Watch as this code shrinks and becomes more readable while the interface stays the same.</itunes:subtitle>
      <itunes:summary>This episode starts off with a big, messy template. Watch as this code shrinks and becomes more readable while the interface stays the same.</itunes:summary>
      <itunes:explicit>no</itunes:explicit>
      <itunes:duration>9:26</itunes:duration>
    </item>
    <item>
      <title>#54 Debugging with ruby-debug</title>
      <description>This episode will show you how to debug a rails app using ruby-debug: set a breakpoint, inspect variables, change the code and more.</description>
      <pubDate>Fri, 06 Jul 2007 00:00:00 -0700</pubDate>
      <enclosure url="http://media.railscasts.com/assets/episodes/videos/054-debugging-with-ruby-debug.m4v" length="9110919" type="video/mp4"/>
      <link>http://railscasts.com/episodes/54-debugging-with-ruby-debug</link>
      <guid isPermaLink="false">debugging-with-ruby-debug</guid>
      <itunes:author>Ryan Bates</itunes:author>
      <itunes:subtitle>This episode will show you how to debug a rails app using ruby-debug: set a breakpoint, inspect variables, change the code and more.</itunes:subtitle>
      <itunes:summary>This episode will show you how to debug a rails app using ruby-debug: set a breakpoint, inspect variables, change the code and more.</itunes:summary>
      <itunes:explicit>no</itunes:explicit>
      <itunes:duration>8:03</itunes:duration>
    </item>
    <item>
      <title>#53 Handling Exceptions</title>
      <description>When an exception is raised in development you get the full error along with the stack trace. In production, only a simple message is displayed. Learn why this is and how to customize the handling of exceptions.</description>
      <pubDate>Wed, 04 Jul 2007 00:00:00 -0700</pubDate>
      <enclosure url="http://media.railscasts.com/assets/episodes/videos/053-handling-exceptions.m4v" length="11644606" type="video/mp4"/>
      <link>http://railscasts.com/episodes/53-handling-exceptions</link>
      <guid isPermaLink="false">handling-exceptions</guid>
      <itunes:author>Ryan Bates</itunes:author>
      <itunes:subtitle>When an exception is raised in development you get the full error along with the stack trace. In production, only a simple message is displayed. Le...</itunes:subtitle>
      <itunes:summary>When an exception is raised in development you get the full error along with the stack trace. In production, only a simple message is displayed. Learn why this is and how to customize the handling of exceptions.</itunes:summary>
      <itunes:explicit>no</itunes:explicit>
      <itunes:duration>8:32</itunes:duration>
    </item>
    <item>
      <title>#52 Update through Checkboxes</title>
      <description>See how to select multiple items using checkboxes and perform an action on the selected items in this episode.</description>
      <pubDate>Mon, 02 Jul 2007 00:00:00 -0700</pubDate>
      <enclosure url="http://media.railscasts.com/assets/episodes/videos/052-update-through-checkboxes.m4v" length="11801336" type="video/mp4"/>
      <link>http://railscasts.com/episodes/52-update-through-checkboxes</link>
      <guid isPermaLink="false">update-through-checkboxes</guid>
      <itunes:author>Ryan Bates</itunes:author>
      <itunes:subtitle>See how to select multiple items using checkboxes and perform an action on the selected items in this episode.</itunes:subtitle>
      <itunes:summary>See how to select multiple items using checkboxes and perform an action on the selected items in this episode.</itunes:summary>
      <itunes:explicit>no</itunes:explicit>
      <itunes:duration>10:02</itunes:duration>
    </item>
    <item>
      <title>#51 will_paginate</title>
      <description>In edge rails (soon to be Rails 2.0), the built-in pagination has been moved into a plugin: classic_pagination. I recommend jumping over to the will_paginate plugin as shown in this episode.</description>
      <pubDate>Fri, 29 Jun 2007 00:00:00 -0700</pubDate>
      <enclosure url="http://media.railscasts.com/assets/episodes/videos/051-will-paginate.m4v" length="8168134" type="video/mp4"/>
      <link>http://railscasts.com/episodes/51-will-paginate</link>
      <guid isPermaLink="false">will-paginate</guid>
      <itunes:author>Ryan Bates</itunes:author>
      <itunes:subtitle>In edge rails (soon to be Rails 2.0), the built-in pagination has been moved into a plugin: classic_pagination. I recommend jumping over to the wil...</itunes:subtitle>
      <itunes:summary>In edge rails (soon to be Rails 2.0), the built-in pagination has been moved into a plugin: classic_pagination. I recommend jumping over to the will_paginate plugin as shown in this episode.</itunes:summary>
      <itunes:explicit>no</itunes:explicit>
      <itunes:duration>6:48</itunes:duration>
    </item>
    <item>
      <title>#50 Contributing to Rails</title>
      <description>The best way to contribute to the Rails project is to submit a patch. This episode shows how to do exactly that. There's also a surprise at the end that you don't want to miss!</description>
      <pubDate>Wed, 27 Jun 2007 00:00:00 -0700</pubDate>
      <enclosure url="http://media.railscasts.com/assets/episodes/videos/050-contributing-to-rails.m4v" length="19590309" type="video/mp4"/>
      <link>http://railscasts.com/episodes/50-contributing-to-rails</link>
      <guid isPermaLink="false">contributing-to-rails</guid>
      <itunes:author>Ryan Bates</itunes:author>
      <itunes:subtitle>The best way to contribute to the Rails project is to submit a patch. This episode shows how to do exactly that. There's also a surprise at the end...</itunes:subtitle>
      <itunes:summary>The best way to contribute to the Rails project is to submit a patch. This episode shows how to do exactly that. There's also a surprise at the end that you don't want to miss!</itunes:summary>
      <itunes:explicit>no</itunes:explicit>
      <itunes:duration>14:22</itunes:duration>
    </item>
    <item>
      <title>#49 Reading the API</title>
      <description>The Rails API docs are very useful but can be difficult to read. This episode will give some tips on reading the docs and mention a few alternative sites for accessing the API. Update: sorry about the broken movie, it should work now.</description>
      <pubDate>Mon, 25 Jun 2007 00:00:00 -0700</pubDate>
      <enclosure url="http://media.railscasts.com/assets/episodes/videos/049-reading-the-api.m4v" length="14552256" type="video/mp4"/>
      <link>http://railscasts.com/episodes/49-reading-the-api</link>
      <guid isPermaLink="false">reading-the-api</guid>
      <itunes:author>Ryan Bates</itunes:author>
      <itunes:subtitle>The Rails API docs are very useful but can be difficult to read. This episode will give some tips on reading the docs and mention a few alternative...</itunes:subtitle>
      <itunes:summary>The Rails API docs are very useful but can be difficult to read. This episode will give some tips on reading the docs and mention a few alternative sites for accessing the API. Update: sorry about the broken movie, it should work now.</itunes:summary>
      <itunes:explicit>no</itunes:explicit>
      <itunes:duration>6:55</itunes:duration>
    </item>
    <item>
      <title>#48 Console Tricks</title>
      <description>The Rails console is one of my favorite tools. This episode is packed with tips and tricks on how to get the most out of the console.</description>
      <pubDate>Fri, 22 Jun 2007 00:00:00 -0700</pubDate>
      <enclosure url="http://media.railscasts.com/assets/episodes/videos/048-console-tricks.m4v" length="12163805" type="video/mp4"/>
      <link>http://railscasts.com/episodes/48-console-tricks</link>
      <guid isPermaLink="false">console-tricks</guid>
      <itunes:author>Ryan Bates</itunes:author>
      <itunes:subtitle>The Rails console is one of my favorite tools. This episode is packed with tips and tricks on how to get the most out of the console.</itunes:subtitle>
      <itunes:summary>The Rails console is one of my favorite tools. This episode is packed with tips and tricks on how to get the most out of the console.</itunes:summary>
      <itunes:explicit>no</itunes:explicit>
      <itunes:duration>10:51</itunes:duration>
    </item>
    <item>
      <title>#47 Two Many-to-Many</title>
      <description>There are two different ways to set up a many-to-many association in Rails. In this episode you will see how to implement both ways along with some tips on choosing the right one for your project.</description>
      <pubDate>Wed, 20 Jun 2007 00:00:00 -0700</pubDate>
      <enclosure url="http://media.railscasts.com/assets/episodes/videos/047-two-many-to-many.m4v" length="9552757" type="video/mp4"/>
      <link>http://railscasts.com/episodes/47-two-many-to-many</link>
      <guid isPermaLink="false">two-many-to-many</guid>
      <itunes:author>Ryan Bates</itunes:author>
      <itunes:subtitle>There are two different ways to set up a many-to-many association in Rails. In this episode you will see how to implement both ways along with some...</itunes:subtitle>
      <itunes:summary>There are two different ways to set up a many-to-many association in Rails. In this episode you will see how to implement both ways along with some tips on choosing the right one for your project.</itunes:summary>
      <itunes:explicit>no</itunes:explicit>
      <itunes:duration>9:00</itunes:duration>
    </item>
    <item>
      <title>#46 Catch-all Route</title>
      <description>Sometimes you need to add complex/dynamic routes. This is often impossible to do in routes.rb, but do not worry. It can be accomplished with a catch-all route. See how in this episode.</description>
      <pubDate>Mon, 18 Jun 2007 00:00:00 -0700</pubDate>
      <enclosure url="http://media.railscasts.com/assets/episodes/videos/046-catch-all-route.m4v" length="6162386" type="video/mp4"/>
      <link>http://railscasts.com/episodes/46-catch-all-route</link>
      <guid isPermaLink="false">catch-all-route</guid>
      <itunes:author>Ryan Bates</itunes:author>
      <itunes:subtitle>Sometimes you need to add complex/dynamic routes. This is often impossible to do in routes.rb, but do not worry. It can be accomplished with a catc...</itunes:subtitle>
      <itunes:summary>Sometimes you need to add complex/dynamic routes. This is often impossible to do in routes.rb, but do not worry. It can be accomplished with a catch-all route. See how in this episode.</itunes:summary>
      <itunes:explicit>no</itunes:explicit>
      <itunes:duration>5:58</itunes:duration>
    </item>
    <item>
      <title>#45 RJS Tips</title>
      <description>This episode is packed with little RJS goodies. Learn the different ways to access an element, how to add "if" conditions and how to apply an effect to multiple elements.</description>
      <pubDate>Fri, 15 Jun 2007 00:00:00 -0700</pubDate>
      <enclosure url="http://media.railscasts.com/assets/episodes/videos/045-rjs-tips.m4v" length="8200732" type="video/mp4"/>
      <link>http://railscasts.com/episodes/45-rjs-tips</link>
      <guid isPermaLink="false">rjs-tips</guid>
      <itunes:author>Ryan Bates</itunes:author>
      <itunes:subtitle>This episode is packed with little RJS goodies. Learn the different ways to access an element, how to add "if" conditions and how to apply an effec...</itunes:subtitle>
      <itunes:summary>This episode is packed with little RJS goodies. Learn the different ways to access an element, how to add "if" conditions and how to apply an effect to multiple elements.</itunes:summary>
      <itunes:explicit>no</itunes:explicit>
      <itunes:duration>7:30</itunes:duration>
    </item>
    <item>
      <title>#44 Debugging RJS</title>
      <description>RJS and AJAX can be difficult to debug. Many times you don't get any error message in the browser. Learn different techniques for solving these tricky problems in this episode.</description>
      <pubDate>Wed, 13 Jun 2007 00:00:00 -0700</pubDate>
      <enclosure url="http://media.railscasts.com/assets/episodes/videos/044-debugging-rjs.m4v" length="11418100" type="video/mp4"/>
      <link>http://railscasts.com/episodes/44-debugging-rjs</link>
      <guid isPermaLink="false">debugging-rjs</guid>
      <itunes:author>Ryan Bates</itunes:author>
      <itunes:subtitle>RJS and AJAX can be difficult to debug. Many times you don't get any error message in the browser. Learn different techniques for solving these tri...</itunes:subtitle>
      <itunes:summary>RJS and AJAX can be difficult to debug. Many times you don't get any error message in the browser. Learn different techniques for solving these tricky problems in this episode.</itunes:summary>
      <itunes:explicit>no</itunes:explicit>
      <itunes:duration>7:18</itunes:duration>
    </item>
    <item>
      <title>#43 AJAX with RJS</title>
      <description>This episode will walk you through adding AJAX functionality to a form using RJS. See how to easily update multiple elements on a page.</description>
      <pubDate>Mon, 11 Jun 2007 00:00:00 -0700</pubDate>
      <enclosure url="http://media.railscasts.com/assets/episodes/videos/043-ajax-with-rjs.m4v" length="14017961" type="video/mp4"/>
      <link>http://railscasts.com/episodes/43-ajax-with-rjs</link>
      <guid isPermaLink="false">ajax-with-rjs</guid>
      <itunes:author>Ryan Bates</itunes:author>
      <itunes:subtitle>This episode will walk you through adding AJAX functionality to a form using RJS. See how to easily update multiple elements on a page.</itunes:subtitle>
      <itunes:summary>This episode will walk you through adding AJAX functionality to a form using RJS. See how to easily update multiple elements on a page.</itunes:summary>
      <itunes:explicit>no</itunes:explicit>
      <itunes:duration>11:34</itunes:duration>
    </item>
    <item>
      <title>#42 with_options</title>
      <description>Several methods in rails take a hash of options as the last argument. If you are passing the same options to several methods, you can remove this duplication by using with_options. Learn all about it in this episode.</description>
      <pubDate>Fri, 08 Jun 2007 00:00:00 -0700</pubDate>
      <enclosure url="http://media.railscasts.com/assets/episodes/videos/042-with-options.m4v" length="4420078" type="video/mp4"/>
      <link>http://railscasts.com/episodes/42-with-options</link>
      <guid isPermaLink="false">with-options</guid>
      <itunes:author>Ryan Bates</itunes:author>
      <itunes:subtitle>Several methods in rails take a hash of options as the last argument. If you are passing the same options to several methods, you can remove this d...</itunes:subtitle>
      <itunes:summary>Several methods in rails take a hash of options as the last argument. If you are passing the same options to several methods, you can remove this duplication by using with_options. Learn all about it in this episode.</itunes:summary>
      <itunes:explicit>no</itunes:explicit>
      <itunes:duration>3:55</itunes:duration>
    </item>
    <item>
      <title>#41 Conditional Validations</title>
      <description>By default, validations will take place every time the model is saved. Sometimes you only want a validation to happen when certain conditions are met. See how to do that in this episode.</description>
      <pubDate>Wed, 06 Jun 2007 00:00:00 -0700</pubDate>
      <enclosure url="http://media.railscasts.com/assets/episodes/videos/041-conditional-validations.m4v" length="5052761" type="video/mp4"/>
      <link>http://railscasts.com/episodes/41-conditional-validations</link>
      <guid isPermaLink="false">conditional-validations</guid>
      <itunes:author>Ryan Bates</itunes:author>
      <itunes:subtitle>By default, validations will take place every time the model is saved. Sometimes you only want a validation to happen when certain conditions are m...</itunes:subtitle>
      <itunes:summary>By default, validations will take place every time the model is saved. Sometimes you only want a validation to happen when certain conditions are met. See how to do that in this episode.</itunes:summary>
      <itunes:explicit>no</itunes:explicit>
      <itunes:duration>4:59</itunes:duration>
    </item>
    <item>
      <title>#40 Blocks in View</title>
      <description>If you try to create a helper method which accepts a block, you will run into a few gotchas. Learn the secrets of blocks in views in this episode.</description>
      <pubDate>Mon, 04 Jun 2007 00:00:00 -0700</pubDate>
      <enclosure url="http://media.railscasts.com/assets/episodes/videos/040-blocks-in-view.m4v" length="9331526" type="video/mp4"/>
      <link>http://railscasts.com/episodes/40-blocks-in-view</link>
      <guid isPermaLink="false">blocks-in-view</guid>
      <itunes:author>Ryan Bates</itunes:author>
      <itunes:subtitle>If you try to create a helper method which accepts a block, you will run into a few gotchas. Learn the secrets of blocks in views in this episode.</itunes:subtitle>
      <itunes:summary>If you try to create a helper method which accepts a block, you will run into a few gotchas. Learn the secrets of blocks in views in this episode.</itunes:summary>
      <itunes:explicit>no</itunes:explicit>
      <itunes:duration>9:06</itunes:duration>
    </item>
    <item>
      <title>#39 Customize Field Error</title>
      <description>When a validation error occurs, Rails helpfully wraps the field in a div tag so you can style it. But sometimes you don't want this behavior. In this episode you will see how to customize it.</description>
      <pubDate>Fri, 01 Jun 2007 00:00:00 -0700</pubDate>
      <enclosure url="http://media.railscasts.com/assets/episodes/videos/039-customize-field-error.m4v" length="5664975" type="video/mp4"/>
      <link>http://railscasts.com/episodes/39-customize-field-error</link>
      <guid isPermaLink="false">customize-field-error</guid>
      <itunes:author>Ryan Bates</itunes:author>
      <itunes:subtitle>When a validation error occurs, Rails helpfully wraps the field in a div tag so you can style it. But sometimes you don't want this behavior. In th...</itunes:subtitle>
      <itunes:summary>When a validation error occurs, Rails helpfully wraps the field in a div tag so you can style it. But sometimes you don't want this behavior. In this episode you will see how to customize it.</itunes:summary>
      <itunes:explicit>no</itunes:explicit>
      <itunes:duration>3:30</itunes:duration>
    </item>
    <item>
      <title>#38 Multibutton Form</title>
      <description>If you have a form with multiple buttons, you can detect which button was clicked by checking the passed parameters. Learn how in this episode.</description>
      <pubDate>Wed, 30 May 2007 00:00:00 -0700</pubDate>
      <enclosure url="http://media.railscasts.com/assets/episodes/videos/038-multibutton-form.m4v" length="5317777" type="video/mp4"/>
      <link>http://railscasts.com/episodes/38-multibutton-form</link>
      <guid isPermaLink="false">multibutton-form</guid>
      <itunes:author>Ryan Bates</itunes:author>
      <itunes:subtitle>If you have a form with multiple buttons, you can detect which button was clicked by checking the passed parameters. Learn how in this episode.</itunes:subtitle>
      <itunes:summary>If you have a form with multiple buttons, you can detect which button was clicked by checking the passed parameters. Learn how in this episode.</itunes:summary>
      <itunes:explicit>no</itunes:explicit>
      <itunes:duration>4:26</itunes:duration>
    </item>
    <item>
      <title>#37 Simple Search Form</title>
      <description>A search form is quite different than other forms, this is because it does not deal with model's attributes. See a good way to add a simple search form in this episode.</description>
      <pubDate>Mon, 28 May 2007 00:00:00 -0700</pubDate>
      <enclosure url="http://media.railscasts.com/assets/episodes/videos/037-simple-search-form.m4v" length="7385396" type="video/mp4"/>
      <link>http://railscasts.com/episodes/37-simple-search-form</link>
      <guid isPermaLink="false">simple-search-form</guid>
      <itunes:author>Ryan Bates</itunes:author>
      <itunes:subtitle>A search form is quite different than other forms, this is because it does not deal with model's attributes. See a good way to add a simple search ...</itunes:subtitle>
      <itunes:summary>A search form is quite different than other forms, this is because it does not deal with model's attributes. See a good way to add a simple search form in this episode.</itunes:summary>
      <itunes:explicit>no</itunes:explicit>
      <itunes:duration>6:28</itunes:duration>
    </item>
    <item>
      <title>#36 Subversion on Rails</title>
      <description>This episode will walk you through setting up a Rails project on subversion. It covers some helpful tips and gotchas you may experience along the way.</description>
      <pubDate>Fri, 25 May 2007 00:00:00 -0700</pubDate>
      <enclosure url="http://media.railscasts.com/assets/episodes/videos/036-subversion-on-rails.m4v" length="9932610" type="video/mp4"/>
      <link>http://railscasts.com/episodes/36-subversion-on-rails</link>
      <guid isPermaLink="false">subversion-on-rails</guid>
      <itunes:author>Ryan Bates</itunes:author>
      <itunes:subtitle>This episode will walk you through setting up a Rails project on subversion. It covers some helpful tips and gotchas you may experience along the way.</itunes:subtitle>
      <itunes:summary>This episode will walk you through setting up a Rails project on subversion. It covers some helpful tips and gotchas you may experience along the way.</itunes:summary>
      <itunes:explicit>no</itunes:explicit>
      <itunes:duration>8:50</itunes:duration>
    </item>
    <item>
      <title>#35 Custom REST Actions</title>
      <description>REST adds many constraints. It restricts your controllers to seven actions. Normally this is okay, but sometimes you need to add your own custom actions. Learn how in this episode.</description>
      <pubDate>Wed, 23 May 2007 00:00:00 -0700</pubDate>
      <enclosure url="http://media.railscasts.com/assets/episodes/videos/035-custom-rest-actions.m4v" length="9779476" type="video/mp4"/>
      <link>http://railscasts.com/episodes/35-custom-rest-actions</link>
      <guid isPermaLink="false">custom-rest-actions</guid>
      <itunes:author>Ryan Bates</itunes:author>
      <itunes:subtitle>REST adds many constraints. It restricts your controllers to seven actions. Normally this is okay, but sometimes you need to add your own custom ac...</itunes:subtitle>
      <itunes:summary>REST adds many constraints. It restricts your controllers to seven actions. Normally this is okay, but sometimes you need to add your own custom actions. Learn how in this episode.</itunes:summary>
      <itunes:explicit>no</itunes:explicit>
      <itunes:duration>8:44</itunes:duration>
    </item>
    <item>
      <title>#34 Named Routes</title>
      <description>When you add a custom route, make it a named route so you have url helper methods to easily link to that new route. See episode for details.</description>
      <pubDate>Mon, 21 May 2007 00:00:00 -0700</pubDate>
      <enclosure url="http://media.railscasts.com/assets/episodes/videos/034-named-routes.m4v" length="7623998" type="video/mp4"/>
      <link>http://railscasts.com/episodes/34-named-routes</link>
      <guid isPermaLink="false">named-routes</guid>
      <itunes:author>Ryan Bates</itunes:author>
      <itunes:subtitle>When you add a custom route, make it a named route so you have url helper methods to easily link to that new route. See episode for details.</itunes:subtitle>
      <itunes:summary>When you add a custom route, make it a named route so you have url helper methods to easily link to that new route. See episode for details.</itunes:summary>
      <itunes:explicit>no</itunes:explicit>
      <itunes:duration>6:39</itunes:duration>
    </item>
    <item>
      <title>#33 Making a Plugin</title>
      <description>You can sometimes remove a lot of duplication by generating methods dynamic. In this episode I will show you how to create a plugin which does exactly that.</description>
      <pubDate>Fri, 18 May 2007 00:00:00 -0700</pubDate>
      <enclosure url="http://media.railscasts.com/assets/episodes/videos/033-making-a-plugin.m4v" length="9412771" type="video/mp4"/>
      <link>http://railscasts.com/episodes/33-making-a-plugin</link>
      <guid isPermaLink="false">making-a-plugin</guid>
      <itunes:author>Ryan Bates</itunes:author>
      <itunes:subtitle>You can sometimes remove a lot of duplication by generating methods dynamic. In this episode I will show you how to create a plugin which does exac...</itunes:subtitle>
      <itunes:summary>You can sometimes remove a lot of duplication by generating methods dynamic. In this episode I will show you how to create a plugin which does exactly that.</itunes:summary>
      <itunes:explicit>no</itunes:explicit>
      <itunes:duration>7:55</itunes:duration>
    </item>
    <item>
      <title>#32 Time in Text Field</title>
      <description>Although Rails does allow you to edit time attributes with text fields, it's not very flexible. In this episode you will learn how to use a virtual attribute to format the time to your liking.</description>
      <pubDate>Wed, 16 May 2007 00:00:00 -0700</pubDate>
      <enclosure url="http://media.railscasts.com/assets/episodes/videos/032-time-in-text-field.m4v" length="6094029" type="video/mp4"/>
      <link>http://railscasts.com/episodes/32-time-in-text-field</link>
      <guid isPermaLink="false">time-in-text-field</guid>
      <itunes:author>Ryan Bates</itunes:author>
      <itunes:subtitle>Although Rails does allow you to edit time attributes with text fields, it's not very flexible. In this episode you will learn how to use a virtual...</itunes:subtitle>
      <itunes:summary>Although Rails does allow you to edit time attributes with text fields, it's not very flexible. In this episode you will learn how to use a virtual attribute to format the time to your liking.</itunes:summary>
      <itunes:explicit>no</itunes:explicit>
      <itunes:duration>5:22</itunes:duration>
    </item>
    <item>
      <title>#31 Formatting Time</title>
      <description>Learn how to use the trusty strftime method to format a time, and see how Rails allows you to save this format for later use.</description>
      <pubDate>Mon, 14 May 2007 00:00:00 -0700</pubDate>
      <enclosure url="http://media.railscasts.com/assets/episodes/videos/031-formatting-time.m4v" length="5968919" type="video/mp4"/>
      <link>http://railscasts.com/episodes/31-formatting-time</link>
      <guid isPermaLink="false">formatting-time</guid>
      <itunes:author>Ryan Bates</itunes:author>
      <itunes:subtitle>Learn how to use the trusty strftime method to format a time, and see how Rails allows you to save this format for later use.</itunes:subtitle>
      <itunes:summary>Learn how to use the trusty strftime method to format a time, and see how Rails allows you to save this format for later use.</itunes:summary>
      <itunes:explicit>no</itunes:explicit>
      <itunes:duration>5:01</itunes:duration>
    </item>
    <item>
      <title>#30 Pretty Page Title</title>
      <description>If you are like me, you avoid creating page titles because it is kind of a pain. But in this episode I will show you a clean way to add titles to your pages.</description>
      <pubDate>Fri, 11 May 2007 00:00:00 -0700</pubDate>
      <enclosure url="http://media.railscasts.com/assets/episodes/videos/030-pretty-page-title.m4v" length="5812863" type="video/mp4"/>
      <link>http://railscasts.com/episodes/30-pretty-page-title</link>
      <guid isPermaLink="false">pretty-page-title</guid>
      <itunes:author>Ryan Bates</itunes:author>
      <itunes:subtitle>If you are like me, you avoid creating page titles because it is kind of a pain. But in this episode I will show you a clean way to add titles to y...</itunes:subtitle>
      <itunes:summary>If you are like me, you avoid creating page titles because it is kind of a pain. But in this episode I will show you a clean way to add titles to your pages.</itunes:summary>
      <itunes:explicit>no</itunes:explicit>
      <itunes:duration>5:16</itunes:duration>
    </item>
    <item>
      <title>#29 group_by Month</title>
      <description>Learn how to use the very useful group_by method to group an array by anything you want! In this episode I group an array of tasks by month then sort it properly.</description>
      <pubDate>Wed, 09 May 2007 00:00:00 -0700</pubDate>
      <enclosure url="http://media.railscasts.com/assets/episodes/videos/029-group-by-month.m4v" length="6976497" type="video/mp4"/>
      <link>http://railscasts.com/episodes/29-group-by-month</link>
      <guid isPermaLink="false">group-by-month</guid>
      <itunes:author>Ryan Bates</itunes:author>
      <itunes:subtitle>Learn how to use the very useful group_by method to group an array by anything you want! In this episode I group an array of tasks by month then so...</itunes:subtitle>
      <itunes:summary>Learn how to use the very useful group_by method to group an array by anything you want! In this episode I group an array of tasks by month then sort it properly.</itunes:summary>
      <itunes:explicit>no</itunes:explicit>
      <itunes:duration>5:11</itunes:duration>
    </item>
    <item>
      <title>#28 in_groups_of</title>
      <description>Have you ever wanted to visually line up items in rows and columns? The in_groups_of method makes this a cinch. Just watch out for the gotcha.</description>
      <pubDate>Mon, 07 May 2007 00:00:00 -0700</pubDate>
      <enclosure url="http://media.railscasts.com/assets/episodes/videos/028-in-groups-of.m4v" length="5340308" type="video/mp4"/>
      <link>http://railscasts.com/episodes/28-in-groups-of</link>
      <guid isPermaLink="false">in-groups-of</guid>
      <itunes:author>Ryan Bates</itunes:author>
      <itunes:subtitle>Have you ever wanted to visually line up items in rows and columns? The in_groups_of method makes this a cinch. Just watch out for the gotcha.</itunes:subtitle>
      <itunes:summary>Have you ever wanted to visually line up items in rows and columns? The in_groups_of method makes this a cinch. Just watch out for the gotcha.</itunes:summary>
      <itunes:explicit>no</itunes:explicit>
      <itunes:duration>4:25</itunes:duration>
    </item>
    <item>
      <title>#27 Cross Site Scripting</title>
      <description>Another common security issue is cross site scripting. In this episode you will see why it is so important to escape any HTML a user may submit.</description>
      <pubDate>Fri, 04 May 2007 00:00:00 -0700</pubDate>
      <enclosure url="http://media.railscasts.com/assets/episodes/videos/027-cross-site-scripting.m4v" length="7068448" type="video/mp4"/>
      <link>http://railscasts.com/episodes/27-cross-site-scripting</link>
      <guid isPermaLink="false">cross-site-scripting</guid>
      <itunes:author>Ryan Bates</itunes:author>
      <itunes:subtitle>Another common security issue is cross site scripting. In this episode you will see why it is so important to escape any HTML a user may submit.</itunes:subtitle>
      <itunes:summary>Another common security issue is cross site scripting. In this episode you will see why it is so important to escape any HTML a user may submit.</itunes:summary>
      <itunes:explicit>no</itunes:explicit>
      <itunes:duration>5:50</itunes:duration>
    </item>
    <item>
      <title>#26 Hackers Love Mass Assignment</title>
      <description>Your site may be at risk! When using mass assignment, you are giving the user complete control over that model and its associations. See how a hacker might use this vulnerability and learn how to stop it in this episode.</description>
      <pubDate>Wed, 02 May 2007 00:00:00 -0700</pubDate>
      <enclosure url="http://media.railscasts.com/assets/episodes/videos/026-hackers-love-mass-assignment.m4v" length="7134613" type="video/mp4"/>
      <link>http://railscasts.com/episodes/26-hackers-love-mass-assignment</link>
      <guid isPermaLink="false">hackers-love-mass-assignment</guid>
      <itunes:author>Ryan Bates</itunes:author>
      <itunes:subtitle>Your site may be at risk! When using mass assignment, you are giving the user complete control over that model and its associations. See how a hack...</itunes:subtitle>
      <itunes:summary>Your site may be at risk! When using mass assignment, you are giving the user complete control over that model and its associations. See how a hacker might use this vulnerability and learn how to stop it in this episode.</itunes:summary>
      <itunes:explicit>no</itunes:explicit>
      <itunes:duration>6:14</itunes:duration>
    </item>
    <item>
      <title>#25 SQL Injection</title>
      <description>One of the most common security problems for dynamic sites is SQL Injection. Thankfully Rails does everything it can in solving this issue, but you still need to be aware of it.</description>
      <pubDate>Mon, 30 Apr 2007 00:00:00 -0700</pubDate>
      <enclosure url="http://media.railscasts.com/assets/episodes/videos/025-sql-injection.m4v" length="6541902" type="video/mp4"/>
      <link>http://railscasts.com/episodes/25-sql-injection</link>
      <guid isPermaLink="false">sql-injection</guid>
      <itunes:author>Ryan Bates</itunes:author>
      <itunes:subtitle>One of the most common security problems for dynamic sites is SQL Injection. Thankfully Rails does everything it can in solving this issue, but you...</itunes:subtitle>
      <itunes:summary>One of the most common security problems for dynamic sites is SQL Injection. Thankfully Rails does everything it can in solving this issue, but you still need to be aware of it.</itunes:summary>
      <itunes:explicit>no</itunes:explicit>
      <itunes:duration>5:29</itunes:duration>
    </item>
    <item>
      <title>#24 The Stack Trace</title>
      <description>The stack trace can be a very useful tool when it comes to debugging. Learn the ins and outs of how the stack trace works in this episode. Note: I am using an older version of the Rails bundle here so it might be a little different than yours. The command in the newer version is called Install Plugin and requires you to type textmate_footnotes in the search.</description>
      <pubDate>Fri, 27 Apr 2007 00:00:00 -0700</pubDate>
      <enclosure url="http://media.railscasts.com/assets/episodes/videos/024-the-stack-trace.m4v" length="7505184" type="video/mp4"/>
      <link>http://railscasts.com/episodes/24-the-stack-trace</link>
      <guid isPermaLink="false">the-stack-trace</guid>
      <itunes:author>Ryan Bates</itunes:author>
      <itunes:subtitle>The stack trace can be a very useful tool when it comes to debugging. Learn the ins and outs of how the stack trace works in this episode. Note: I ...</itunes:subtitle>
      <itunes:summary>The stack trace can be a very useful tool when it comes to debugging. Learn the ins and outs of how the stack trace works in this episode. Note: I am using an older version of the Rails bundle here so it might be a little different than yours. The command in the newer version is called Install Plugin and requires you to type textmate_footnotes in the search.</itunes:summary>
      <itunes:explicit>no</itunes:explicit>
      <itunes:duration>4:39</itunes:duration>
    </item>
    <item>
      <title>#23 Counter Cache Column</title>
      <description>If you need to display the record count for a has_many association, you can improve performance by caching that number in a column.</description>
      <pubDate>Wed, 25 Apr 2007 00:00:00 -0700</pubDate>
      <enclosure url="http://media.railscasts.com/assets/episodes/videos/023-counter-cache-column.m4v" length="8516463" type="video/mp4"/>
      <link>http://railscasts.com/episodes/23-counter-cache-column</link>
      <guid isPermaLink="false">counter-cache-column</guid>
      <itunes:author>Ryan Bates</itunes:author>
      <itunes:subtitle>If you need to display the record count for a has_many association, you can improve performance by caching that number in a column.</itunes:subtitle>
      <itunes:summary>If you need to display the record count for a has_many association, you can improve performance by caching that number in a column.</itunes:summary>
      <itunes:explicit>no</itunes:explicit>
      <itunes:duration>7:18</itunes:duration>
    </item>
    <item>
      <title>#22 Eager Loading</title>
      <description>One way to improve performance is to cut down on the number of SQL queries. You can do this through eager loading. Learn all about it in this episode!</description>
      <pubDate>Mon, 23 Apr 2007 00:00:00 -0700</pubDate>
      <enclosure url="http://media.railscasts.com/assets/episodes/videos/022-eager-loading.m4v" length="6481406" type="video/mp4"/>
      <link>http://railscasts.com/episodes/22-eager-loading</link>
      <guid isPermaLink="false">eager-loading</guid>
      <itunes:author>Ryan Bates</itunes:author>
      <itunes:subtitle>One way to improve performance is to cut down on the number of SQL queries. You can do this through eager loading. Learn all about it in this episode!</itunes:subtitle>
      <itunes:summary>One way to improve performance is to cut down on the number of SQL queries. You can do this through eager loading. Learn all about it in this episode!</itunes:summary>
      <itunes:explicit>no</itunes:explicit>
      <itunes:duration>4:37</itunes:duration>
    </item>
    <item>
      <title>#21 Super Simple Authentication</title>
      <description>The final piece of the administration puzzle: authentication. There are many different approaches which is why I saved this step for last. This episode will cover a few techniques including the simple solution used for this site.</description>
      <pubDate>Fri, 20 Apr 2007 00:00:00 -0700</pubDate>
      <enclosure url="http://media.railscasts.com/assets/episodes/videos/021-super-simple-authentication.m4v" length="8894908" type="video/mp4"/>
      <link>http://railscasts.com/episodes/21-super-simple-authentication</link>
      <guid isPermaLink="false">super-simple-authentication</guid>
      <itunes:author>Ryan Bates</itunes:author>
      <itunes:subtitle>The final piece of the administration puzzle: authentication. There are many different approaches which is why I saved this step for last. This epi...</itunes:subtitle>
      <itunes:summary>The final piece of the administration puzzle: authentication. There are many different approaches which is why I saved this step for last. This episode will cover a few techniques including the simple solution used for this site.</itunes:summary>
      <itunes:explicit>no</itunes:explicit>
      <itunes:duration>6:41</itunes:duration>
    </item>
    <item>
      <title>#20 Restricting Access</title>
      <description>In this second part of the series on administration, you will learn how to lock down the site to keep the public from accessing the administration features.</description>
      <pubDate>Wed, 18 Apr 2007 00:00:00 -0700</pubDate>
      <enclosure url="http://media.railscasts.com/assets/episodes/videos/020-restricting-access.m4v" length="6101449" type="video/mp4"/>
      <link>http://railscasts.com/episodes/20-restricting-access</link>
      <guid isPermaLink="false">restricting-access</guid>
      <itunes:author>Ryan Bates</itunes:author>
      <itunes:subtitle>In this second part of the series on administration, you will learn how to lock down the site to keep the public from accessing the administration ...</itunes:subtitle>
      <itunes:summary>In this second part of the series on administration, you will learn how to lock down the site to keep the public from accessing the administration features.</itunes:summary>
      <itunes:explicit>no</itunes:explicit>
      <itunes:duration>4:32</itunes:duration>
    </item>
    <item>
      <title>#19 Where Administration Goes</title>
      <description>This is the first part of a three part series on building an administration system. Many developers choose to separate it completely from the public side of the site by placing it into an admin subdirectory. This episode will show you an alternative and often better solution.</description>
      <pubDate>Mon, 16 Apr 2007 00:00:00 -0700</pubDate>
      <enclosure url="http://media.railscasts.com/assets/episodes/videos/019-where-administration-goes.m4v" length="6649804" type="video/mp4"/>
      <link>http://railscasts.com/episodes/19-where-administration-goes</link>
      <guid isPermaLink="false">where-administration-goes</guid>
      <itunes:author>Ryan Bates</itunes:author>
      <itunes:subtitle>This is the first part of a three part series on building an administration system. Many developers choose to separate it completely from the publi...</itunes:subtitle>
      <itunes:summary>This is the first part of a three part series on building an administration system. Many developers choose to separate it completely from the public side of the site by placing it into an admin subdirectory. This episode will show you an alternative and often better solution.</itunes:summary>
      <itunes:explicit>no</itunes:explicit>
      <itunes:duration>5:12</itunes:duration>
    </item>
    <item>
      <title>#18 Looping Through Flash</title>
      <description>Displaying flash messages in the layout can be a pain at times. In this episode you will learn an easy way to display any kind of flash message by looping through the hash.</description>
      <pubDate>Fri, 13 Apr 2007 00:00:00 -0700</pubDate>
      <enclosure url="http://media.railscasts.com/assets/episodes/videos/018-looping-through-flash.m4v" length="2406083" type="video/mp4"/>
      <link>http://railscasts.com/episodes/18-looping-through-flash</link>
      <guid isPermaLink="false">looping-through-flash</guid>
      <itunes:author>Ryan Bates</itunes:author>
      <itunes:subtitle>Displaying flash messages in the layout can be a pain at times. In this episode you will learn an easy way to display any kind of flash message by ...</itunes:subtitle>
      <itunes:summary>Displaying flash messages in the layout can be a pain at times. In this episode you will learn an easy way to display any kind of flash message by looping through the hash.</itunes:summary>
      <itunes:explicit>no</itunes:explicit>
      <itunes:duration>1:44</itunes:duration>
    </item>
    <item>
      <title>#17 HABTM Checkboxes</title>
      <description>It is often asked: how do I create a list of checkboxes for managing a HABTM association? Ask no more because this episode will show you how to do exactly that.</description>
      <pubDate>Wed, 11 Apr 2007 00:00:00 -0700</pubDate>
      <enclosure url="http://media.railscasts.com/assets/episodes/videos/017-habtm-checkboxes.m4v" length="10064522" type="video/mp4"/>
      <link>http://railscasts.com/episodes/17-habtm-checkboxes</link>
      <guid isPermaLink="false">habtm-checkboxes</guid>
      <itunes:author>Ryan Bates</itunes:author>
      <itunes:subtitle>It is often asked: how do I create a list of checkboxes for managing a HABTM association? Ask no more because this episode will show you how to do ...</itunes:subtitle>
      <itunes:summary>It is often asked: how do I create a list of checkboxes for managing a HABTM association? Ask no more because this episode will show you how to do exactly that.</itunes:summary>
      <itunes:explicit>no</itunes:explicit>
      <itunes:duration>6:54</itunes:duration>
    </item>
    <item>
      <title>#16 Virtual Attributes</title>
      <description>Keep your controllers clean and forms flexible by adding virtual attributes to your model. This very powerful technique allows you to create form fields which may not directly relate to the database.</description>
      <pubDate>Mon, 09 Apr 2007 00:00:00 -0700</pubDate>
      <enclosure url="http://media.railscasts.com/assets/episodes/videos/016-virtual-attributes.m4v" length="4078281" type="video/mp4"/>
      <link>http://railscasts.com/episodes/16-virtual-attributes</link>
      <guid isPermaLink="false">virtual-attributes</guid>
      <itunes:author>Ryan Bates</itunes:author>
      <itunes:subtitle>Keep your controllers clean and forms flexible by adding virtual attributes to your model. This very powerful technique allows you to create form f...</itunes:subtitle>
      <itunes:summary>Keep your controllers clean and forms flexible by adding virtual attributes to your model. This very powerful technique allows you to create form fields which may not directly relate to the database.</itunes:summary>
      <itunes:explicit>no</itunes:explicit>
      <itunes:duration>3:41</itunes:duration>
    </item>
    <item>
      <title>#15 Fun with Find Conditions</title>
      <description>You can pass more than simple strings to find conditions. Arrays, ranges, and nil values can be passed as well. In this episode you will see the tricks involved with passing these odd objects to find conditions. (Update: audio fixed).</description>
      <pubDate>Fri, 06 Apr 2007 00:00:00 -0700</pubDate>
      <enclosure url="http://media.railscasts.com/assets/episodes/videos/015-fun-with-find-conditions.m4v" length="7102770" type="video/mp4"/>
      <link>http://railscasts.com/episodes/15-fun-with-find-conditions</link>
      <guid isPermaLink="false">fun-with-find-conditions</guid>
      <itunes:author>Ryan Bates</itunes:author>
      <itunes:subtitle>You can pass more than simple strings to find conditions. Arrays, ranges, and nil values can be passed as well. In this episode you will see the tr...</itunes:subtitle>
      <itunes:summary>You can pass more than simple strings to find conditions. Arrays, ranges, and nil values can be passed as well. In this episode you will see the tricks involved with passing these odd objects to find conditions. (Update: audio fixed).</itunes:summary>
      <itunes:explicit>no</itunes:explicit>
      <itunes:duration>4:31</itunes:duration>
    </item>
    <item>
      <title>#14 Performing Calculations on Models</title>
      <description>Did you know ActiveRecord provides class methods for performing calculations on models? You can even use these methods through associations.</description>
      <pubDate>Wed, 04 Apr 2007 00:00:00 -0700</pubDate>
      <enclosure url="http://media.railscasts.com/assets/episodes/videos/014-performing-calculations-on-models.m4v" length="3869776" type="video/mp4"/>
      <link>http://railscasts.com/episodes/14-performing-calculations-on-models</link>
      <guid isPermaLink="false">performing-calculations-on-models</guid>
      <itunes:author>Ryan Bates</itunes:author>
      <itunes:subtitle>Did you know ActiveRecord provides class methods for performing calculations on models? You can even use these methods through associations.</itunes:subtitle>
      <itunes:summary>Did you know ActiveRecord provides class methods for performing calculations on models? You can even use these methods through associations.</itunes:summary>
      <itunes:explicit>no</itunes:explicit>
      <itunes:duration>2:57</itunes:duration>
    </item>
    <item>
      <title>#13 Dangers of Model in Session</title>
      <description>Be careful when storing a model in a session. It will behave differently than you expect and can easily get out of sync with the database. Instead of storing the model directly in the session, store the id to the model and use that to fetch it from the database.</description>
      <pubDate>Mon, 02 Apr 2007 00:00:00 -0700</pubDate>
      <enclosure url="http://media.railscasts.com/assets/episodes/videos/013-dangers-of-model-in-session.m4v" length="5522658" type="video/mp4"/>
      <link>http://railscasts.com/episodes/13-dangers-of-model-in-session</link>
      <guid isPermaLink="false">dangers-of-model-in-session</guid>
      <itunes:author>Ryan Bates</itunes:author>
      <itunes:subtitle>Be careful when storing a model in a session. It will behave differently than you expect and can easily get out of sync with the database. Instead ...</itunes:subtitle>
      <itunes:summary>Be careful when storing a model in a session. It will behave differently than you expect and can easily get out of sync with the database. Instead of storing the model directly in the session, store the id to the model and use that to fetch it from the database.</itunes:summary>
      <itunes:explicit>no</itunes:explicit>
      <itunes:duration>5:17</itunes:duration>
    </item>
    <item>
      <title>#12 Refactoring User Name Part 3</title>
      <description>In the final part of this series you will see how to refactor your tests. Keeping tests clean is important because it will make testing easier to do in the future.</description>
      <pubDate>Fri, 30 Mar 2007 00:00:00 -0700</pubDate>
      <enclosure url="http://media.railscasts.com/assets/episodes/videos/012-refactoring-user-name-part-3.m4v" length="4976901" type="video/mp4"/>
      <link>http://railscasts.com/episodes/12-refactoring-user-name-part-3</link>
      <guid isPermaLink="false">refactoring-user-name-part-3</guid>
      <itunes:author>Ryan Bates</itunes:author>
      <itunes:subtitle>In the final part of this series you will see how to refactor your tests. Keeping tests clean is important because it will make testing easier to d...</itunes:subtitle>
      <itunes:summary>In the final part of this series you will see how to refactor your tests. Keeping tests clean is important because it will make testing easier to do in the future.</itunes:summary>
      <itunes:explicit>no</itunes:explicit>
      <itunes:duration>4:03</itunes:duration>
    </item>
    <item>
      <title>#11 Refactoring User Name Part 2</title>
      <description>Testing and refactoring go hand in hand. Refactoring is all about improving code without changing its behavior. Testing is all about making sure you don't change the behavior while you are improving the code.</description>
      <pubDate>Wed, 28 Mar 2007 00:00:00 -0700</pubDate>
      <enclosure url="http://media.railscasts.com/assets/episodes/videos/011-refactoring-user-name-part-2.m4v" length="7132146" type="video/mp4"/>
      <link>http://railscasts.com/episodes/11-refactoring-user-name-part-2</link>
      <guid isPermaLink="false">refactoring-user-name-part-2</guid>
      <itunes:author>Ryan Bates</itunes:author>
      <itunes:subtitle>Testing and refactoring go hand in hand. Refactoring is all about improving code without changing its behavior. Testing is all about making sure yo...</itunes:subtitle>
      <itunes:summary>Testing and refactoring go hand in hand. Refactoring is all about improving code without changing its behavior. Testing is all about making sure you don't change the behavior while you are improving the code.</itunes:summary>
      <itunes:explicit>no</itunes:explicit>
      <itunes:duration>6:34</itunes:duration>
    </item>
    <item>
      <title>#10 Refactoring User Name Part 1</title>
      <description>Learn how to clean up your code through refactoring. This episode will show you how to move code from the view into the model to remove duplication and simplify the view.</description>
      <pubDate>Mon, 26 Mar 2007 00:00:00 -0700</pubDate>
      <enclosure url="http://media.railscasts.com/assets/episodes/videos/010-refactoring-user-name-part-1.m4v" length="6027728" type="video/mp4"/>
      <link>http://railscasts.com/episodes/10-refactoring-user-name-part-1</link>
      <guid isPermaLink="false">refactoring-user-name-part-1</guid>
      <itunes:author>Ryan Bates</itunes:author>
      <itunes:subtitle>Learn how to clean up your code through refactoring. This episode will show you how to move code from the view into the model to remove duplication...</itunes:subtitle>
      <itunes:summary>Learn how to clean up your code through refactoring. This episode will show you how to move code from the view into the model to remove duplication and simplify the view.</itunes:summary>
      <itunes:explicit>no</itunes:explicit>
      <itunes:duration>5:44</itunes:duration>
    </item>
    <item>
      <title>#9 Filtering Sensitive Logs</title>
      <description>Are you accepting sensitive user data? Passwords, credit card numbers, etc. By default, Rails stores all submitted parameters in plain text in the logs. This episode will show you how to filter this sensitive input so it doesn't show up in the log file.</description>
      <pubDate>Fri, 23 Mar 2007 00:00:00 -0700</pubDate>
      <enclosure url="http://media.railscasts.com/assets/episodes/videos/009-filtering-sensitive-logs.m4v" length="3545446" type="video/mp4"/>
      <link>http://railscasts.com/episodes/9-filtering-sensitive-logs</link>
      <guid isPermaLink="false">filtering-sensitive-logs</guid>
      <itunes:author>Ryan Bates</itunes:author>
      <itunes:subtitle>Are you accepting sensitive user data? Passwords, credit card numbers, etc. By default, Rails stores all submitted parameters in plain text in the ...</itunes:subtitle>
      <itunes:summary>Are you accepting sensitive user data? Passwords, credit card numbers, etc. By default, Rails stores all submitted parameters in plain text in the logs. This episode will show you how to filter this sensitive input so it doesn't show up in the log file.</itunes:summary>
      <itunes:explicit>no</itunes:explicit>
      <itunes:duration>2:42</itunes:duration>
    </item>
    <item>
      <title>#8 Layouts and content_for</title>
      <description>If you want to change something in the layout on a per-template basis, content_for is your answer! This allows templates to specify view code that can be placed anywhere in a layout.</description>
      <pubDate>Wed, 21 Mar 2007 00:00:00 -0700</pubDate>
      <enclosure url="http://media.railscasts.com/assets/episodes/videos/008-layouts-and-content-for.m4v" length="4089479" type="video/mp4"/>
      <link>http://railscasts.com/episodes/8-layouts-and-content-for</link>
      <guid isPermaLink="false">layouts-and-content-for</guid>
      <itunes:author>Ryan Bates</itunes:author>
      <itunes:subtitle>If you want to change something in the layout on a per-template basis, content_for is your answer! This allows templates to specify view code that ...</itunes:subtitle>
      <itunes:summary>If you want to change something in the layout on a per-template basis, content_for is your answer! This allows templates to specify view code that can be placed anywhere in a layout.</itunes:summary>
      <itunes:explicit>no</itunes:explicit>
      <itunes:duration>3:30</itunes:duration>
    </item>
    <item>
      <title>#7 All About Layouts</title>
      <description>Everything you wanted to know about layouts: global layouts, controller layouts, shared layouts, dynamic layouts and action layouts. Yes, there really are that many ways to specify a layout.</description>
      <pubDate>Mon, 19 Mar 2007 00:00:00 -0700</pubDate>
      <enclosure url="http://media.railscasts.com/assets/episodes/videos/007-all-about-layouts.m4v" length="7994112" type="video/mp4"/>
      <link>http://railscasts.com/episodes/7-all-about-layouts</link>
      <guid isPermaLink="false">all-about-layouts</guid>
      <itunes:author>Ryan Bates</itunes:author>
      <itunes:subtitle>Everything you wanted to know about layouts: global layouts, controller layouts, shared layouts, dynamic layouts and action layouts. Yes, there rea...</itunes:subtitle>
      <itunes:summary>Everything you wanted to know about layouts: global layouts, controller layouts, shared layouts, dynamic layouts and action layouts. Yes, there really are that many ways to specify a layout.</itunes:summary>
      <itunes:explicit>no</itunes:explicit>
      <itunes:duration>6:54</itunes:duration>
    </item>
    <item>
      <title>#6 Shortcut Blocks with Symbol to_proc</title>
      <description>It may have a goofy syntax, but the Symbol#to_proc feature Rails adds allows you to do simple blocks very quickly and easily.</description>
      <pubDate>Fri, 16 Mar 2007 00:00:00 -0700</pubDate>
      <enclosure url="http://media.railscasts.com/assets/episodes/videos/006-shortcut-blocks-with-symbol-to-proc.m4v" length="4136774" type="video/mp4"/>
      <link>http://railscasts.com/episodes/6-shortcut-blocks-with-symbol-to-proc</link>
      <guid isPermaLink="false">shortcut-blocks-with-symbol-to-proc</guid>
      <itunes:author>Ryan Bates</itunes:author>
      <itunes:subtitle>It may have a goofy syntax, but the Symbol#to_proc feature Rails adds allows you to do simple blocks very quickly and easily.</itunes:subtitle>
      <itunes:summary>It may have a goofy syntax, but the Symbol#to_proc feature Rails adds allows you to do simple blocks very quickly and easily.</itunes:summary>
      <itunes:explicit>no</itunes:explicit>
      <itunes:duration>3:44</itunes:duration>
    </item>
    <item>
      <title>#5 Using with_scope</title>
      <description>Learn how to use with_scope - a very powerful method which will allow your custom find methods to accept any find options. Just like magic!</description>
      <pubDate>Wed, 14 Mar 2007 00:00:00 -0700</pubDate>
      <enclosure url="http://media.railscasts.com/assets/episodes/videos/005-using-with-scope.m4v" length="3006290" type="video/mp4"/>
      <link>http://railscasts.com/episodes/5-using-with-scope</link>
      <guid isPermaLink="false">using-with-scope</guid>
      <itunes:author>Ryan Bates</itunes:author>
      <itunes:subtitle>Learn how to use with_scope - a very powerful method which will allow your custom find methods to accept any find options. Just like magic!</itunes:subtitle>
      <itunes:summary>Learn how to use with_scope - a very powerful method which will allow your custom find methods to accept any find options. Just like magic!</itunes:summary>
      <itunes:explicit>no</itunes:explicit>
      <itunes:duration>2:50</itunes:duration>
    </item>
    <item>
      <title>#4 Move Find into Model</title>
      <description>Move a find into the model to clean up the controllers and remove duplication. Also see how you can call these custom find methods through an association.</description>
      <pubDate>Mon, 12 Mar 2007 00:00:00 -0700</pubDate>
      <enclosure url="http://media.railscasts.com/assets/episodes/videos/004-move-find-into-model.m4v" length="2179210" type="video/mp4"/>
      <link>http://railscasts.com/episodes/4-move-find-into-model</link>
      <guid isPermaLink="false">move-find-into-model</guid>
      <itunes:author>Ryan Bates</itunes:author>
      <itunes:subtitle>Move a find into the model to clean up the controllers and remove duplication. Also see how you can call these custom find methods through an assoc...</itunes:subtitle>
      <itunes:summary>Move a find into the model to clean up the controllers and remove duplication. Also see how you can call these custom find methods through an association.</itunes:summary>
      <itunes:explicit>no</itunes:explicit>
      <itunes:duration>2:03</itunes:duration>
    </item>
    <item>
      <title>#3 Find Through Association</title>
      <description>No need to pass foreign keys in find conditions, just do the find through a has_many association.</description>
      <pubDate>Thu, 08 Mar 2007 23:00:00 -0800</pubDate>
      <enclosure url="http://media.railscasts.com/assets/episodes/videos/003-find-through-association.m4v" length="2434406" type="video/mp4"/>
      <link>http://railscasts.com/episodes/3-find-through-association</link>
      <guid isPermaLink="false">find-through-association</guid>
      <itunes:author>Ryan Bates</itunes:author>
      <itunes:subtitle>No need to pass foreign keys in find conditions, just do the find through a has_many association.</itunes:subtitle>
      <itunes:summary>No need to pass foreign keys in find conditions, just do the find through a has_many association.</itunes:summary>
      <itunes:explicit>no</itunes:explicit>
      <itunes:duration>2:17</itunes:duration>
    </item>
    <item>
      <title>#2 Dynamic find_by Methods</title>
      <description>Shorten simple finds considerably and improve readability by using the dynamic find_all_by and find_by methods.</description>
      <pubDate>Tue, 06 Mar 2007 23:00:00 -0800</pubDate>
      <enclosure url="http://media.railscasts.com/assets/episodes/videos/002-dynamic-find-by-methods.m4v" length="1968073" type="video/mp4"/>
      <link>http://railscasts.com/episodes/2-dynamic-find-by-methods</link>
      <guid isPermaLink="false">dynamic-find-by-methods</guid>
      <itunes:author>Ryan Bates</itunes:author>
      <itunes:subtitle>Shorten simple finds considerably and improve readability by using the dynamic find_all_by and find_by methods.</itunes:subtitle>
      <itunes:summary>Shorten simple finds considerably and improve readability by using the dynamic find_all_by and find_by methods.</itunes:summary>
      <itunes:explicit>no</itunes:explicit>
      <itunes:duration>1:28</itunes:duration>
    </item>
    <item>
      <title>#1 Caching with Instance Variables</title>
      <description>Learn a quick way to improve performance. Just store the end result of an expensive command in an instance variable!</description>
      <pubDate>Sun, 04 Mar 2007 00:00:00 -0800</pubDate>
      <enclosure url="http://media.railscasts.com/assets/episodes/videos/001-caching-with-instance-variables.m4v" length="2627849" type="video/mp4"/>
      <link>http://railscasts.com/episodes/1-caching-with-instance-variables</link>
      <guid isPermaLink="false">caching-with-instance-variables</guid>
      <itunes:author>Ryan Bates</itunes:author>
      <itunes:subtitle>Learn a quick way to improve performance. Just store the end result of an expensive command in an instance variable!</itunes:subtitle>
      <itunes:summary>Learn a quick way to improve performance. Just store the end result of an expensive command in an instance variable!</itunes:summary>
      <itunes:explicit>no</itunes:explicit>
      <itunes:duration>2:06</itunes:duration>
    </item>
  </channel>
</rss>
