<?xml version="1.0" encoding="UTF-8"?>
<?xml-stylesheet type="text/xsl" media="screen" href="/~d/styles/atom10full.xsl"?><?xml-stylesheet type="text/css" media="screen" href="http://feeds.feedburner.com/~d/styles/itemcontent.css"?><feed xmlns="http://www.w3.org/2005/Atom" xmlns:feedburner="http://rssnamespace.org/feedburner/ext/1.0">

  <title><![CDATA[Ruby on Rails Tutorial News]]></title>
  
  <link href="http://news.railstutorial.org/" />
  <updated>2013-05-15T15:12:29-07:00</updated>
  <id>http://news.railstutorial.org/</id>
  <author>
    <name><![CDATA[Michael Hartl]]></name>
    
  </author>
  <generator uri="http://octopress.org/">Octopress</generator>

  
  <atom10:link xmlns:atom10="http://www.w3.org/2005/Atom" rel="self" type="application/atom+xml" href="http://feeds.feedburner.com/railstutorial" /><feedburner:info uri="railstutorial" /><atom10:link xmlns:atom10="http://www.w3.org/2005/Atom" rel="hub" href="http://pubsubhubbub.appspot.com/" /><feedburner:emailServiceId>railstutorial</feedburner:emailServiceId><feedburner:feedburnerHostname>http://feedburner.google.com</feedburner:feedburnerHostname><entry>
    <title type="html"><![CDATA[Rails Tutorial for Rails 4.0 RC1]]></title>
    <link href="http://feedproxy.google.com/~r/railstutorial/~3/U7xmTNwWLqQ/" />
    <updated>2013-05-15T00:00:00-07:00</updated>
    <id>http://news.railstutorial.org/rails-tutorial-for-rails-4-0-rc</id>
    <content type="html">&lt;p&gt;After some &lt;a href="http://news.railstutorial.org/failing-rails-4-0-rc1/"&gt;initial hiccups&lt;/a&gt;, I&amp;#8217;ve finished preparing a version of the &lt;a href="http://ruby.railstutorial.org/ruby-on-rails-tutorial-book?version=4.0"&gt;Ruby on Rails Tutorial compatible with the first Rails 4.0 release candidate&lt;/a&gt;. Interested readers can take a look at it and &lt;a href="http://railstutorial.org/contact"&gt;let me know&lt;/a&gt; if anything doesn&amp;#8217;t work.&lt;/p&gt;
&lt;img src="http://feeds.feedburner.com/~r/railstutorial/~4/U7xmTNwWLqQ" height="1" width="1"/&gt;</content>
  <feedburner:origLink>http://news.railstutorial.org/rails-tutorial-for-rails-4-0-rc/</feedburner:origLink></entry>
  
  <entry>
    <title type="html"><![CDATA[Rails 4.0 Release Candidate 1]]></title>
    <link href="http://feedproxy.google.com/~r/railstutorial/~3/pfvjhrIetIM/" />
    <updated>2013-05-10T00:00:00-07:00</updated>
    <id>http://news.railstutorial.org/failing-rails-4-0-rc1</id>
    <content type="html">&lt;p&gt;&lt;strong&gt;Update:&lt;/strong&gt; &lt;a href="https://github.com/steveklabnik"&gt;Steve Klabnik&lt;/a&gt; has solved the problem discussed in the post below by &lt;a href="https://github.com/rails/rails/issues/10563#issuecomment-17780709"&gt;noting&lt;/a&gt; that the latest version of the rspec-rails gem (2.13.1) has fixes specific to Rails 4.0. After upgrading the Gemfile to use this version, I have confirmed that the issue described in the post is fixed. Thanks, Steve!&lt;/p&gt;

&lt;p&gt;The first Rails 4.0 release candidate, &lt;a href="http://weblog.rubyonrails.org/2013/5/1/Rails-4-0-release-candidate-1/"&gt;Rails 4.0 RC1&lt;/a&gt;, is now available. Unfortunately, although the Rails Tutorial sample app appears to run fine under the RC, a large number of tests fail. Most of the failing tests appear to be related to the test database not being rolled back properly. I&amp;#8217;m posting the details here both to solicit assistance and to serve as a reference for the &lt;a href="https://github.com/rails/rails/issues/10563"&gt;issue&lt;/a&gt; I&amp;#8217;ve filed on the Rails issue tracker at GitHub. This issue is currently the main obstacle blocking the preparation of the Rails&amp;nbsp;4.0–compatible version of the &lt;a href="http://railstutorial.org/book"&gt;Ruby on Rails Tutorial book&lt;/a&gt;.&lt;/p&gt;

&lt;h2&gt;Isolating the issue&lt;/h2&gt;

&lt;p&gt;To isolate the issue, I&amp;#8217;ve prepared a minimial &lt;a href="https://github.com/mhartl/failing_app_rails_4_0_rc1"&gt;failing app&lt;/a&gt;. To reproduce the error I&amp;#8217;m seeing, first clone it from GitHub:&lt;/p&gt;

&lt;figure class='code'&gt;&lt;div class="highlight"&gt;&lt;table&gt;&lt;tr&gt;&lt;td class="gutter"&gt;&lt;pre class="line-numbers"&gt;&lt;span class='line-number'&gt;1&lt;/span&gt;
&lt;/pre&gt;&lt;/td&gt;&lt;td class='code'&gt;&lt;pre&gt;&lt;code class=''&gt;&lt;span class='line'&gt;git clone https://github.com/mhartl/failing_app_rails_4_0_rc1.git&lt;/span&gt;&lt;/code&gt;&lt;/pre&gt;&lt;/td&gt;&lt;/tr&gt;&lt;/table&gt;&lt;/div&gt;&lt;/figure&gt;


&lt;p&gt;Then install the gems and migrate the database:&lt;/p&gt;

&lt;figure class='code'&gt;&lt;div class="highlight"&gt;&lt;table&gt;&lt;tr&gt;&lt;td class="gutter"&gt;&lt;pre class="line-numbers"&gt;&lt;span class='line-number'&gt;1&lt;/span&gt;
&lt;span class='line-number'&gt;2&lt;/span&gt;
&lt;span class='line-number'&gt;3&lt;/span&gt;
&lt;span class='line-number'&gt;4&lt;/span&gt;
&lt;span class='line-number'&gt;5&lt;/span&gt;
&lt;/pre&gt;&lt;/td&gt;&lt;td class='code'&gt;&lt;pre&gt;&lt;code class=''&gt;&lt;span class='line'&gt;cd failing_app_rails_4_0_rc1
&lt;/span&gt;&lt;span class='line'&gt;rvm use 2.0.0@rails_4_0_rc1 --create
&lt;/span&gt;&lt;span class='line'&gt;gem install bundler
&lt;/span&gt;&lt;span class='line'&gt;bundle
&lt;/span&gt;&lt;span class='line'&gt;rake db:migrate&lt;/span&gt;&lt;/code&gt;&lt;/pre&gt;&lt;/td&gt;&lt;/tr&gt;&lt;/table&gt;&lt;/div&gt;&lt;/figure&gt;


&lt;h2&gt;Preparing the test database&lt;/h2&gt;

&lt;p&gt;So far, so good. The first problem comes from trying to run the tests after preparing the test database:&lt;/p&gt;

&lt;figure class='code'&gt;&lt;div class="highlight"&gt;&lt;table&gt;&lt;tr&gt;&lt;td class="gutter"&gt;&lt;pre class="line-numbers"&gt;&lt;span class='line-number'&gt;1&lt;/span&gt;
&lt;span class='line-number'&gt;2&lt;/span&gt;
&lt;/pre&gt;&lt;/td&gt;&lt;td class='code'&gt;&lt;pre&gt;&lt;code class=''&gt;&lt;span class='line'&gt;rake db:test:prepare
&lt;/span&gt;&lt;span class='line'&gt;rspec spec/&lt;/span&gt;&lt;/code&gt;&lt;/pre&gt;&lt;/td&gt;&lt;/tr&gt;&lt;/table&gt;&lt;/div&gt;&lt;/figure&gt;


&lt;p&gt;Unfortunately, this doesn&amp;#8217;t work. Instead, I get an error:&lt;/p&gt;

&lt;figure class='code'&gt;&lt;div class="highlight"&gt;&lt;table&gt;&lt;tr&gt;&lt;td class="gutter"&gt;&lt;pre class="line-numbers"&gt;&lt;span class='line-number'&gt;1&lt;/span&gt;
&lt;span class='line-number'&gt;2&lt;/span&gt;
&lt;span class='line-number'&gt;3&lt;/span&gt;
&lt;span class='line-number'&gt;4&lt;/span&gt;
&lt;/pre&gt;&lt;/td&gt;&lt;td class='code'&gt;&lt;pre&gt;&lt;code class=''&gt;&lt;span class='line'&gt;/Users/mhartl/.rvm/gems/ruby-2.0.0-p0@rails_4_0_rc1/gems/activerecord-
&lt;/span&gt;&lt;span class='line'&gt;4.0.0.rc1/lib/active_record/migration.rb:376:in `check_pending!': 
&lt;/span&gt;&lt;span class='line'&gt;Migrations are pending; run 'rake db:migrate RAILS_ENV=test' to resolve 
&lt;/span&gt;&lt;span class='line'&gt;this issue. (ActiveRecord::PendingMigrationError)&lt;/span&gt;&lt;/code&gt;&lt;/pre&gt;&lt;/td&gt;&lt;/tr&gt;&lt;/table&gt;&lt;/div&gt;&lt;/figure&gt;


&lt;p&gt;I have never had to run &lt;code&gt;rake db:migrate RAILS_ENV=test&lt;/code&gt; in the course of normal Rails application development. To my knowledge, this should automatically be handled by&lt;/p&gt;

&lt;figure class='code'&gt;&lt;div class="highlight"&gt;&lt;table&gt;&lt;tr&gt;&lt;td class="gutter"&gt;&lt;pre class="line-numbers"&gt;&lt;span class='line-number'&gt;1&lt;/span&gt;
&lt;/pre&gt;&lt;/td&gt;&lt;td class='code'&gt;&lt;pre&gt;&lt;code class=''&gt;&lt;span class='line'&gt;rake db:test:prepare&lt;/span&gt;&lt;/code&gt;&lt;/pre&gt;&lt;/td&gt;&lt;/tr&gt;&lt;/table&gt;&lt;/div&gt;&lt;/figure&gt;


&lt;p&gt;But to proceed I had to run it:&lt;/p&gt;

&lt;figure class='code'&gt;&lt;div class="highlight"&gt;&lt;table&gt;&lt;tr&gt;&lt;td class="gutter"&gt;&lt;pre class="line-numbers"&gt;&lt;span class='line-number'&gt;1&lt;/span&gt;
&lt;/pre&gt;&lt;/td&gt;&lt;td class='code'&gt;&lt;pre&gt;&lt;code class=''&gt;&lt;span class='line'&gt;rake db:migrate RAILS_ENV=test&lt;/span&gt;&lt;/code&gt;&lt;/pre&gt;&lt;/td&gt;&lt;/tr&gt;&lt;/table&gt;&lt;/div&gt;&lt;/figure&gt;


&lt;h2&gt;Passing test, then failing test&lt;/h2&gt;

&lt;p&gt;The test now passes:&lt;/p&gt;

&lt;figure class='code'&gt;&lt;div class="highlight"&gt;&lt;table&gt;&lt;tr&gt;&lt;td class="gutter"&gt;&lt;pre class="line-numbers"&gt;&lt;span class='line-number'&gt;1&lt;/span&gt;
&lt;span class='line-number'&gt;2&lt;/span&gt;
&lt;span class='line-number'&gt;3&lt;/span&gt;
&lt;span class='line-number'&gt;4&lt;/span&gt;
&lt;span class='line-number'&gt;5&lt;/span&gt;
&lt;/pre&gt;&lt;/td&gt;&lt;td class='code'&gt;&lt;pre&gt;&lt;code class=''&gt;&lt;span class='line'&gt;$ rspec spec/
&lt;/span&gt;&lt;span class='line'&gt;.
&lt;/span&gt;&lt;span class='line'&gt;
&lt;/span&gt;&lt;span class='line'&gt;Finished in 0.03903 seconds
&lt;/span&gt;&lt;span class='line'&gt;1 example, 0 failures&lt;/span&gt;&lt;/code&gt;&lt;/pre&gt;&lt;/td&gt;&lt;/tr&gt;&lt;/table&gt;&lt;/div&gt;&lt;/figure&gt;


&lt;p&gt;Unfortunately, running the test a second time produces an error:&lt;/p&gt;

&lt;figure class='code'&gt;&lt;div class="highlight"&gt;&lt;table&gt;&lt;tr&gt;&lt;td class="gutter"&gt;&lt;pre class="line-numbers"&gt;&lt;span class='line-number'&gt;1&lt;/span&gt;
&lt;span class='line-number'&gt;2&lt;/span&gt;
&lt;span class='line-number'&gt;3&lt;/span&gt;
&lt;span class='line-number'&gt;4&lt;/span&gt;
&lt;span class='line-number'&gt;5&lt;/span&gt;
&lt;span class='line-number'&gt;6&lt;/span&gt;
&lt;span class='line-number'&gt;7&lt;/span&gt;
&lt;span class='line-number'&gt;8&lt;/span&gt;
&lt;span class='line-number'&gt;9&lt;/span&gt;
&lt;span class='line-number'&gt;10&lt;/span&gt;
&lt;span class='line-number'&gt;11&lt;/span&gt;
&lt;span class='line-number'&gt;12&lt;/span&gt;
&lt;span class='line-number'&gt;13&lt;/span&gt;
&lt;span class='line-number'&gt;14&lt;/span&gt;
&lt;span class='line-number'&gt;15&lt;/span&gt;
&lt;/pre&gt;&lt;/td&gt;&lt;td class='code'&gt;&lt;pre&gt;&lt;code class=''&gt;&lt;span class='line'&gt;$ rspec spec/
&lt;/span&gt;&lt;span class='line'&gt;F
&lt;/span&gt;&lt;span class='line'&gt;
&lt;/span&gt;&lt;span class='line'&gt;Failures:
&lt;/span&gt;&lt;span class='line'&gt;
&lt;/span&gt;&lt;span class='line'&gt;  1) User should save the user
&lt;/span&gt;&lt;span class='line'&gt;     Failure/Error: expect { user.save! }.not_to raise_error
&lt;/span&gt;&lt;span class='line'&gt;       expected no Exception, got #&amp;lt;ActiveRecord::RecordInvalid: Validation
&lt;/span&gt;&lt;span class='line'&gt;       failed: Email has already been taken&amp;gt; with backtrace:
&lt;/span&gt;&lt;span class='line'&gt;         # ./spec/models/user_spec.rb:6:in `block (3 levels) in &amp;lt;top (required)&amp;gt;'
&lt;/span&gt;&lt;span class='line'&gt;         # ./spec/models/user_spec.rb:6:in `block (2 levels) in &amp;lt;top (required)&amp;gt;'
&lt;/span&gt;&lt;span class='line'&gt;     # ./spec/models/user_spec.rb:6:in `block (2 levels) in &amp;lt;top (required)&amp;gt;'
&lt;/span&gt;&lt;span class='line'&gt;
&lt;/span&gt;&lt;span class='line'&gt;Finished in 0.03405 seconds
&lt;/span&gt;&lt;span class='line'&gt;1 example, 1 failure&lt;/span&gt;&lt;/code&gt;&lt;/pre&gt;&lt;/td&gt;&lt;/tr&gt;&lt;/table&gt;&lt;/div&gt;&lt;/figure&gt;


&lt;h2&gt;Email uniqueness&lt;/h2&gt;

&lt;p&gt;If you look at the &lt;a href="https://github.com/mhartl/failing_app_rails_4_0_rc1"&gt;source code&lt;/a&gt;, you&amp;#8217;ll see that the &amp;#8220;app&amp;#8221; is really just a User model that enforces email uniqueness:&lt;/p&gt;

&lt;figure class='code'&gt;&lt;figcaption&gt;&lt;span&gt;&lt;/span&gt;&lt;/figcaption&gt;&lt;div class="highlight"&gt;&lt;table&gt;&lt;tr&gt;&lt;td class="gutter"&gt;&lt;pre class="line-numbers"&gt;&lt;span class='line-number'&gt;1&lt;/span&gt;
&lt;span class='line-number'&gt;2&lt;/span&gt;
&lt;span class='line-number'&gt;3&lt;/span&gt;
&lt;span class='line-number'&gt;4&lt;/span&gt;
&lt;/pre&gt;&lt;/td&gt;&lt;td class='code'&gt;&lt;pre&gt;&lt;code class='ruby'&gt;&lt;span class='line'&gt;&lt;span class="c1"&gt;# app/models/user.rb&lt;/span&gt;
&lt;/span&gt;&lt;span class='line'&gt;&lt;span class="k"&gt;class&lt;/span&gt; &lt;span class="nc"&gt;User&lt;/span&gt; &lt;span class="o"&gt;&amp;lt;&lt;/span&gt; &lt;span class="ss"&gt;ActiveRecord&lt;/span&gt;&lt;span class="p"&gt;:&lt;/span&gt;&lt;span class="ss"&gt;:Base&lt;/span&gt;
&lt;/span&gt;&lt;span class='line'&gt;  &lt;span class="n"&gt;validates&lt;/span&gt; &lt;span class="ss"&gt;:email&lt;/span&gt;&lt;span class="p"&gt;,&lt;/span&gt; &lt;span class="ss"&gt;uniqueness&lt;/span&gt;&lt;span class="p"&gt;:&lt;/span&gt; &lt;span class="kp"&gt;true&lt;/span&gt;
&lt;/span&gt;&lt;span class='line'&gt;&lt;span class="k"&gt;end&lt;/span&gt;
&lt;/span&gt;&lt;/code&gt;&lt;/pre&gt;&lt;/td&gt;&lt;/tr&gt;&lt;/table&gt;&lt;/div&gt;&lt;/figure&gt;


&lt;p&gt;The corrsponding test just tries to save the user:&lt;/p&gt;

&lt;figure class='code'&gt;&lt;figcaption&gt;&lt;span&gt;&lt;/span&gt;&lt;/figcaption&gt;&lt;div class="highlight"&gt;&lt;table&gt;&lt;tr&gt;&lt;td class="gutter"&gt;&lt;pre class="line-numbers"&gt;&lt;span class='line-number'&gt;1&lt;/span&gt;
&lt;span class='line-number'&gt;2&lt;/span&gt;
&lt;span class='line-number'&gt;3&lt;/span&gt;
&lt;span class='line-number'&gt;4&lt;/span&gt;
&lt;span class='line-number'&gt;5&lt;/span&gt;
&lt;span class='line-number'&gt;6&lt;/span&gt;
&lt;span class='line-number'&gt;7&lt;/span&gt;
&lt;span class='line-number'&gt;8&lt;/span&gt;
&lt;span class='line-number'&gt;9&lt;/span&gt;
&lt;/pre&gt;&lt;/td&gt;&lt;td class='code'&gt;&lt;pre&gt;&lt;code class='ruby'&gt;&lt;span class='line'&gt;&lt;span class="c1"&gt;# spec/models/user_spec.rb&lt;/span&gt;
&lt;/span&gt;&lt;span class='line'&gt;&lt;span class="nb"&gt;require&lt;/span&gt; &lt;span class="s1"&gt;&amp;#39;spec_helper&amp;#39;&lt;/span&gt;
&lt;/span&gt;&lt;span class='line'&gt;
&lt;/span&gt;&lt;span class='line'&gt;&lt;span class="n"&gt;describe&lt;/span&gt; &lt;span class="no"&gt;User&lt;/span&gt; &lt;span class="k"&gt;do&lt;/span&gt;
&lt;/span&gt;&lt;span class='line'&gt;  &lt;span class="n"&gt;let&lt;/span&gt;&lt;span class="p"&gt;(&lt;/span&gt;&lt;span class="ss"&gt;:user&lt;/span&gt;&lt;span class="p"&gt;)&lt;/span&gt; &lt;span class="p"&gt;{&lt;/span&gt; &lt;span class="no"&gt;User&lt;/span&gt;&lt;span class="o"&gt;.&lt;/span&gt;&lt;span class="n"&gt;new&lt;/span&gt;&lt;span class="p"&gt;(&lt;/span&gt;&lt;span class="ss"&gt;email&lt;/span&gt;&lt;span class="p"&gt;:&lt;/span&gt; &lt;span class="s2"&gt;&amp;quot;user@example.com&amp;quot;&lt;/span&gt;&lt;span class="p"&gt;)&lt;/span&gt; &lt;span class="p"&gt;}&lt;/span&gt;
&lt;/span&gt;&lt;span class='line'&gt;  &lt;span class="n"&gt;it&lt;/span&gt; &lt;span class="s2"&gt;&amp;quot;should save the user&amp;quot;&lt;/span&gt; &lt;span class="k"&gt;do&lt;/span&gt;
&lt;/span&gt;&lt;span class='line'&gt;    &lt;span class="n"&gt;expect&lt;/span&gt; &lt;span class="p"&gt;{&lt;/span&gt; &lt;span class="n"&gt;user&lt;/span&gt;&lt;span class="o"&gt;.&lt;/span&gt;&lt;span class="n"&gt;save!&lt;/span&gt; &lt;span class="p"&gt;}&lt;/span&gt;&lt;span class="o"&gt;.&lt;/span&gt;&lt;span class="n"&gt;not_to&lt;/span&gt; &lt;span class="n"&gt;raise_error&lt;/span&gt;
&lt;/span&gt;&lt;span class='line'&gt;  &lt;span class="k"&gt;end&lt;/span&gt;
&lt;/span&gt;&lt;span class='line'&gt;&lt;span class="k"&gt;end&lt;/span&gt;
&lt;/span&gt;&lt;/code&gt;&lt;/pre&gt;&lt;/td&gt;&lt;/tr&gt;&lt;/table&gt;&lt;/div&gt;&lt;/figure&gt;


&lt;p&gt;After excuting the test, Rails should roll back the test database, but instead it is persisting from invocation to invocation, resulting in a violation of the email uniqueness constraint the second time through.&lt;/p&gt;

&lt;h2&gt;Reproducing the error&lt;/h2&gt;

&lt;p&gt;We can reproduce the error by removing the test database, re-migrating, and running the test again (twice):&lt;/p&gt;

&lt;figure class='code'&gt;&lt;figcaption&gt;&lt;span&gt;&lt;/span&gt;&lt;/figcaption&gt;&lt;div class="highlight"&gt;&lt;table&gt;&lt;tr&gt;&lt;td class="gutter"&gt;&lt;pre class="line-numbers"&gt;&lt;span class='line-number'&gt;1&lt;/span&gt;
&lt;span class='line-number'&gt;2&lt;/span&gt;
&lt;span class='line-number'&gt;3&lt;/span&gt;
&lt;span class='line-number'&gt;4&lt;/span&gt;
&lt;span class='line-number'&gt;5&lt;/span&gt;
&lt;/pre&gt;&lt;/td&gt;&lt;td class='code'&gt;&lt;pre&gt;&lt;code class='ruby'&gt;&lt;span class='line'&gt;&lt;span class="err"&gt;$&lt;/span&gt; &lt;span class="n"&gt;rm&lt;/span&gt; &lt;span class="o"&gt;-&lt;/span&gt;&lt;span class="n"&gt;f&lt;/span&gt; &lt;span class="n"&gt;db&lt;/span&gt;&lt;span class="o"&gt;/&lt;/span&gt;&lt;span class="nb"&gt;test&lt;/span&gt;&lt;span class="o"&gt;.&lt;/span&gt;&lt;span class="n"&gt;sqlite3&lt;/span&gt; &lt;span class="o"&gt;&amp;amp;&amp;amp;&lt;/span&gt; &lt;span class="n"&gt;rake&lt;/span&gt; &lt;span class="ss"&gt;db&lt;/span&gt;&lt;span class="p"&gt;:&lt;/span&gt;&lt;span class="n"&gt;migrate&lt;/span&gt; &lt;span class="no"&gt;RAILS_ENV&lt;/span&gt;&lt;span class="o"&gt;=&lt;/span&gt;&lt;span class="nb"&gt;test&lt;/span&gt;
&lt;/span&gt;&lt;span class='line'&gt;&lt;span class="err"&gt;$&lt;/span&gt; &lt;span class="n"&gt;rspec&lt;/span&gt; &lt;span class="n"&gt;spec&lt;/span&gt;&lt;span class="o"&gt;/&lt;/span&gt;
&lt;/span&gt;&lt;span class='line'&gt;&lt;span class="c1"&gt;# test passes&lt;/span&gt;
&lt;/span&gt;&lt;span class='line'&gt;&lt;span class="err"&gt;$&lt;/span&gt; &lt;span class="n"&gt;rspec&lt;/span&gt; &lt;span class="n"&gt;spec&lt;/span&gt;&lt;span class="o"&gt;/&lt;/span&gt;
&lt;/span&gt;&lt;span class='line'&gt;&lt;span class="c1"&gt;# test fails&lt;/span&gt;
&lt;/span&gt;&lt;/code&gt;&lt;/pre&gt;&lt;/td&gt;&lt;/tr&gt;&lt;/table&gt;&lt;/div&gt;&lt;/figure&gt;


&lt;p&gt;Any help in solving this issue would be much appreciated (admin at railstutorial dot org).&lt;/p&gt;
&lt;img src="http://feeds.feedburner.com/~r/railstutorial/~4/pfvjhrIetIM" height="1" width="1"/&gt;</content>
  <feedburner:origLink>http://news.railstutorial.org/failing-rails-4-0-rc1/</feedburner:origLink></entry>
  
  <entry>
    <title type="html"><![CDATA[Rails Tutorial Russian translation]]></title>
    <link href="http://feedproxy.google.com/~r/railstutorial/~3/cAvzhs9_ZZY/" />
    <updated>2013-04-05T00:00:00-07:00</updated>
    <id>http://news.railstutorial.org/rails-tutorial-russian-translation</id>
    <content type="html">&lt;p&gt;Hot on the heels of the &lt;a href="http://railstutorial-china.org/"&gt;Chinese version&lt;/a&gt;, I&amp;#8217;m pleased to announce the availability of a &lt;a href="http://railstutorial.ru/"&gt;Russian translation of the Ruby on Rails Tutorial&lt;/a&gt;. I&amp;#8217;d like to thank translator Alexey Razuvaev (Алексей Разуваев) for his initiative and outstanding work. As with the &lt;a href="http://railstutorial.org/book"&gt;English version&lt;/a&gt;, the Russian translation is available for free online as HTML. If you are a Russian speaker, please &lt;a href="http://railstutorial.ru/"&gt;check it out&lt;/a&gt;!&lt;/p&gt;
&lt;img src="http://feeds.feedburner.com/~r/railstutorial/~4/cAvzhs9_ZZY" height="1" width="1"/&gt;</content>
  <feedburner:origLink>http://news.railstutorial.org/rails-tutorial-russian-translation/</feedburner:origLink></entry>
  
  <entry>
    <title type="html"><![CDATA[The Ruby on Rails Tutorial for Rails 4.0 (beta)]]></title>
    <link href="http://feedproxy.google.com/~r/railstutorial/~3/dffThsPVJwA/" />
    <updated>2013-03-20T00:00:00-07:00</updated>
    <id>http://news.railstutorial.org/ruby-on-rails-tutorial-rails-4-beta</id>
    <content type="html">&lt;p&gt;&lt;strong&gt;tl;dr:&lt;/strong&gt; A &lt;a href="http://ruby.railstutorial.org/ruby-on-rails-tutorial-book?version=4.0#top"&gt;Rails 4.0&amp;ndash;compatible version of the &lt;em&gt;Ruby on Rails Tutorial&lt;/em&gt; book&lt;/a&gt; is now available online. Sales of the ebook and a supplementary screencast will start after the final version of Rails&amp;nbsp;4.0 is released (available at a large discount to current customers). A new third edition is planned for later this year (with upgrade discounts for current customers). &lt;a href="http://feedburner.google.com/fb/a/mailverify?uri=railstutorial&amp;amp;loc=en_US"&gt;Subscribe&lt;/a&gt; to get email notifications of future announcements.&lt;/p&gt;

&lt;p&gt;&lt;strong&gt;I&amp;#8217;m pleased to announce&lt;/strong&gt; the availability of &lt;a href="http://ruby.railstutorial.org/ruby-on-rails-tutorial-book?version=4.0#top"&gt;a full draft of the &lt;em&gt;Ruby on Rails Tutorial&lt;/em&gt; book updated for Rails 4.0&lt;/a&gt;. Changes include updates to all relevant gems, the use of some newer features of &lt;a href="https://github.com/jnicklas/capybara"&gt;Capybara&lt;/a&gt;, &lt;a href="http://blog.remarkablelabs.com/2012/12/what-s-new-in-active-record-rails-4-countdown-to-2013"&gt;new-style scopes&lt;/a&gt;, &lt;a href="http://blog.remarkablelabs.com/2012/12/what-s-new-in-active-record-rails-4-countdown-to-2013"&gt;updated Active Record finders&lt;/a&gt;, and coverage of the new &lt;a href="http://weblog.rubyonrails.org/2012/3/21/strong-parameters/"&gt;strong parameters&lt;/a&gt; feature to prevent &lt;a href="http://guides.rubyonrails.org/security.html#mass-assignment"&gt;mass assignment vulnerabilities&lt;/a&gt;. Previous versions have benefited tremendously from the book&amp;#8217;s many eagle-eyed readers, so please &lt;a href="http://railstutorial.org/contact"&gt;email me&lt;/a&gt; with any typos or bugs you find in the new version.&lt;/p&gt;

&lt;p&gt;&lt;em&gt;Warning&lt;/em&gt;: Rails&amp;nbsp;4.0 is currently in beta, and this is bleeding-edge stuff, so you may get cut. For example, as of this writing Spork doesn&amp;#8217;t work with Rails&amp;nbsp;4. To work around this, the Gemfile in the book pulls directly from a fork I made of a repository that fixes the issue (and whose pull request hasn&amp;#8217;t yet been accepted). Another example, needed to work around changes in Capybara, is to pull the XPath and Capybara libraries directly from the latest master branches on GitHub, which introduces a significant risk of instability. And there are surely other examples ready to surprise the unwary.&lt;/p&gt;

&lt;p&gt;Once the situation has stabilized a bit, I plan to make a short supplementary screencast highlighting the relevant changes and showing how the sample app works with Rails&amp;nbsp;4. When that happens, I will make sales of the Rails&amp;nbsp;4 version ebooks (PDF/EPUB/MOBI) available as well.&lt;/p&gt;

&lt;p&gt;Once I feel the changes in Rails justify the effort, I plan to release a complete revision with a new screencast series. That will involve some more extensive changes, including the incorporation of a new spec syntax supported by the latest version of RSpec (so-called &lt;em&gt;feature specs&lt;/em&gt;). I expect this to happen some time later this year.&lt;/p&gt;

&lt;p&gt;To get future announcements delivered to your inbox, &lt;a href="http://feedburner.google.com/fb/a/mailverify?uri=railstutorial&amp;amp;loc=en_US"&gt;subscribe&lt;/a&gt; to get email notifications. (Google apparently doesn&amp;#8217;t believe in RSS, but I do, so you can also &lt;a href="http://feeds.feedburner.com/railstutorial"&gt;subscribe to the news feed&lt;/a&gt;.)&lt;/p&gt;
&lt;img src="http://feeds.feedburner.com/~r/railstutorial/~4/dffThsPVJwA" height="1" width="1"/&gt;</content>
  <feedburner:origLink>http://news.railstutorial.org/ruby-on-rails-tutorial-rails-4-beta/</feedburner:origLink></entry>
  
  <entry>
    <title type="html"><![CDATA[Rails Tutorial Chinese translation]]></title>
    <link href="http://feedproxy.google.com/~r/railstutorial/~3/9X98w215r0k/" />
    <updated>2013-03-13T00:00:00-07:00</updated>
    <id>http://news.railstutorial.org/rails-tutorial-chinese-translation</id>
    <content type="html">&lt;p&gt;I&amp;#8217;m pleased to announce the availability of a &lt;a href="http://railstutorial-china.org/"&gt;Chinese translation of the Ruby on Rails Tutorial&lt;/a&gt;. I&amp;#8217;d like to thank translator Andor Chen for his outstanding work. I deserve none of the credit; Andor reached out to me and asked if it was OK to translate the book, and I happily agreed. (All I did was contribute a &lt;a href="http://railstutorial-china.org/preface.html"&gt;short preface&lt;/a&gt;.) As with the English version, the Chinese translation is available for free online as HTML; with my blessing, Andor is also offering ebook sales of the translation, the proceeds of which go directly to him. If you are a Chinese speaker, please &lt;a href="http://railstutorial-china.org/"&gt;check it out&lt;/a&gt;!&lt;/p&gt;
&lt;img src="http://feeds.feedburner.com/~r/railstutorial/~4/9X98w215r0k" height="1" width="1"/&gt;</content>
  <feedburner:origLink>http://news.railstutorial.org/rails-tutorial-chinese-translation/</feedburner:origLink></entry>
  
  <entry>
    <title type="html"><![CDATA[Rails Tutorial News test post]]></title>
    <link href="http://feedproxy.google.com/~r/railstutorial/~3/LtsoXQQ34gc/" />
    <updated>2013-02-21T00:00:00-08:00</updated>
    <id>http://news.railstutorial.org/test-post</id>
    <content type="html">&lt;p&gt;This post is a test of the Rails Tutorial News feed. (&lt;a href="http://en.wikipedia.org/wiki/Emergency_Broadcast_System#Later_test_pattern"&gt;This is only a test.&lt;/a&gt;) Since the Rails Tutorial News feed is (or, rather, was) hosted at Posterous, which is &lt;a href="http://blog.posterous.com/thanks-from-posterous"&gt;shutting down&lt;/a&gt;, I&amp;#8217;ve moved it over to a new location. This post is written in &lt;a href="http://daringfireball.net/projects/markdown/"&gt;Markdown&lt;/a&gt;, and the site is produced with &lt;a href="https://github.com/mojombo/jekyll"&gt;Jekyll&lt;/a&gt; and &lt;a href="http://octopress.org/"&gt;Octopress&lt;/a&gt;. The generated static site is hosted at &lt;a href="http://pages.github.com/"&gt;GitHub Pages&lt;/a&gt;.&lt;/p&gt;

&lt;p&gt;I&amp;#8217;m making this test post to make sure everything is working. If all goes well, the post will show up in your feed reader or email inbox (depending on your subscription preferences). Because of the new XML feed generated by Jekyll, it&amp;#8217;s also likely that many feed readers will show sixteen or so unread posts. I apologize in advance for the noise; unfortunately, this is the inevitable cost of the changeover. This post is the only one that&amp;#8217;s actually new, so you can just mark all the other posts as read.&lt;/p&gt;

&lt;p&gt;Now back to our &lt;a href="http://railstutorial.org/book"&gt;regularly scheduled program&lt;/a&gt;.&lt;/p&gt;
&lt;img src="http://feeds.feedburner.com/~r/railstutorial/~4/LtsoXQQ34gc" height="1" width="1"/&gt;</content>
  <feedburner:origLink>http://news.railstutorial.org/test-post/</feedburner:origLink></entry>
  
  <entry>
    <title type="html"><![CDATA[Rails security fixes, version upgrade]]></title>
    <link href="http://feedproxy.google.com/~r/railstutorial/~3/PxX-kxECR1o/" />
    <updated>2013-01-08T00:00:00-08:00</updated>
    <id>http://news.railstutorial.org/rails-security-fixes-version-upgrade</id>
    <content type="html">&lt;p&gt;I&amp;#8217;ve just upgraded the &lt;a href="http://ruby.railstutorial.org/ruby-on-rails-tutorial-book"&gt;Ruby on Rails Tutorial&lt;/a&gt; to use Rails&amp;nbsp;3.2.11, which contains two important security fixes (one for &lt;a href="https://groups.google.com/forum/?fromgroups=#!topic/rubyonrails-security/DCNTNp_qjFM"&gt;SQL injection&lt;/a&gt; and one for &lt;a href="https://groups.google.com/forum/#!topic/rubyonrails-security/61bkgvnSGTQ/discussion"&gt;parameter parsing&lt;/a&gt;). The latest versions of the online book, ebooks, and sample application all now reflect this change.&lt;/p&gt;
&lt;p&gt;It is critical to upgrade all of your production applications as soon as possible. The easiest way to do this is to edit your &lt;tt&gt;Gemfile&lt;/tt&gt; and change the Rails gem version from &lt;tt&gt;&amp;#8216;3.2.x&amp;#8217;&lt;/tt&gt; to &lt;tt&gt;&amp;#8216;3.2.11&amp;#8217;&lt;/tt&gt;. Then run&lt;/p&gt;
&lt;div class="CodeRay"&gt;
  &lt;div class="code"&gt;&lt;pre&gt;$ bundle update rails &amp;amp;&amp;amp; bundle install&lt;/pre&gt;&lt;/div&gt;
&lt;/div&gt;

&lt;p&gt;to apply the update. (If you&amp;#8217;re running Rails 3.1.x, 3.0.x, or 2.3.x, there are security patches for those branches as well, as detailed in the &lt;a href="https://groups.google.com/forum/#!topic/rubyonrails-security/61bkgvnSGTQ/discussion"&gt;parameter parsing post&lt;/a&gt;.)&lt;/p&gt;
&lt;img src="http://feeds.feedburner.com/~r/railstutorial/~4/PxX-kxECR1o" height="1" width="1"/&gt;</content>
  <feedburner:origLink>http://news.railstutorial.org/rails-security-fixes-version-upgrade/</feedburner:origLink></entry>
  
  <entry>
    <title type="html"><![CDATA[Programmer training academies]]></title>
    <link href="http://feedproxy.google.com/~r/railstutorial/~3/tNyiHyr7haw/" />
    <updated>2012-12-23T00:00:00-08:00</updated>
    <id>http://news.railstutorial.org/programmer-training-academies</id>
    <content type="html">&lt;p&gt;Programmers in general, and Rails developers in particular, continue to be in strong demand, and several excellent in-person training courses have sprung up to help meet the need, including &lt;a href="http://devbootcamp.com/"&gt;Dev Bootcamp&lt;/a&gt; and &lt;a href="http://bit.ly/WnmFTS"&gt;App Academy&lt;/a&gt; in San Francisco, &lt;a href="http://www.starterleague.com/"&gt;The Starter League&lt;/a&gt; (formerly Code Academy) in Chicago, and &lt;a href="http://hackerschool.com/"&gt;Hacker School&lt;/a&gt; in New York. (I&amp;#8217;m pleased to note that all four have used the &lt;a href="http://ruby.railstutorial.org/"&gt;Ruby on Rails Tutorial&lt;/a&gt; as part of their curriculum at one time or another.) Such programs typically aren&amp;#8217;t cheap (although Hacker School is free), but the people I&amp;#8217;ve talked to who  have gone through them say they are a good  investment.&lt;/p&gt;
&lt;p&gt;Dev Bootcamp doesn&amp;#8217;t appear to have any openings right now, but both &lt;a href="http://bit.ly/WnmFTS"&gt;App Academy&lt;/a&gt; and &lt;a href="http://www.starterleague.com/"&gt;The Starter League&lt;/a&gt; have openings for their classes starting on January&amp;nbsp;7, and &lt;a href="https://www.hackerschool.com/"&gt;Hacker School&lt;/a&gt; is accepting applications for its winter batch until January&amp;nbsp;1. If you&amp;#8217;re interested in taking your web development skills to the next level, I recommend checking them out. (&lt;em&gt;Note&lt;/em&gt;: While I have no formal relationship with any of the groups mentioned, I know people at all four places, and &lt;a href="http://bit.ly/WnmFTS"&gt;App Academy&lt;/a&gt; pays referral bonuses if you end up attending.)&lt;/p&gt;
&lt;img src="http://feeds.feedburner.com/~r/railstutorial/~4/tNyiHyr7haw" height="1" width="1"/&gt;</content>
  <feedburner:origLink>http://news.railstutorial.org/programmer-training-academies/</feedburner:origLink></entry>
  
  <entry>
    <title type="html"><![CDATA[Update on the Rails Tutorial print edition]]></title>
    <link href="http://feedproxy.google.com/~r/railstutorial/~3/EL8SHvpNJJU/" />
    <updated>2012-10-08T00:00:00-07:00</updated>
    <id>http://news.railstutorial.org/update-on-the-rails-tutorial-print-edition</id>
    <content type="html">&lt;p&gt;&lt;a href="http://www.amazon.com/gp/product/0321832051/ref=as_li_qf_sp_asin_il?ie=UTF8&amp;amp;camp=1789&amp;amp;creative=9325&amp;amp;creativeASIN=0321832051&amp;amp;linkCode=as2&amp;amp;tag=therubonraitu-20"&gt;&lt;img src="http://ws.assoc-amazon.com/widgets/q?_encoding=UTF8&amp;amp;ASIN=0321832051&amp;amp;Format=_SL110_&amp;amp;ID=AsinImage&amp;amp;MarketPlace=US&amp;amp;ServiceVersion=20070822&amp;amp;WS=1&amp;amp;tag=therubonraitu-20" border="0" alt="" /&gt;&lt;/a&gt;&lt;img src="http://www.assoc-amazon.com/e/ir?t=therubonraitu-20&amp;amp;l=as2&amp;amp;o=1&amp;amp;a=0321832051" border="0" height="1" alt="" style="border: none !important; margin: 0px !important;" width="1" /&gt;&lt;/p&gt;
&lt;p&gt;tl;dr:&lt;/p&gt;
&lt;ul&gt;
&lt;li&gt;Buy the &lt;a href="http://www.amazon.com/gp/product/0321832051/ref=as_li_qf_sp_asin_tl?ie=UTF8&amp;amp;camp=1789&amp;amp;creative=9325&amp;amp;creativeASIN=0321832051&amp;amp;linkCode=as2&amp;amp;tag=therubonraitu-20"&gt;print edition of the Ruby on Rails Tutorial, 2nd Edition&lt;/a&gt;&lt;img src="http://www.assoc-amazon.com/e/ir?t=therubonraitu-20&amp;amp;l=as2&amp;amp;o=1&amp;amp;a=0321832051" border="0" height="1" alt="" style="border: none !important; margin: 0px !important;" width="1" /&gt; at Amazon.com&lt;/li&gt;
&lt;li&gt;Please &lt;a href="http://www.amazon.com/gp/product/0321832051/ref=as_li_qf_sp_asin_tl?ie=UTF8&amp;amp;camp=1789&amp;amp;creative=9325&amp;amp;creativeASIN=0321832051&amp;amp;linkCode=as2&amp;amp;tag=therubonraitu-20"&gt;leave a review at Amazon&lt;/a&gt;&lt;img src="http://www.assoc-amazon.com/e/ir?t=therubonraitu-20&amp;amp;l=as2&amp;amp;o=1&amp;amp;a=0321832051" border="0" height="1" alt="" style="border: none !important; margin: 0px !important;" width="1" /&gt;&lt;/li&gt;
&lt;li&gt;If you want a Kindle version, &lt;a href="http://railstutorial.org/#buy"&gt;buy directly from railstutorial.org&lt;/a&gt;&lt;/li&gt;
&lt;/ul&gt;
&lt;p&gt;This is a quick update on the &lt;a href="http://www.amazon.com/gp/product/0321832051/ref=as_li_qf_sp_asin_tl?ie=UTF8&amp;amp;camp=1789&amp;amp;creative=9325&amp;amp;creativeASIN=0321832051&amp;amp;linkCode=as2&amp;amp;tag=therubonraitu-20"&gt;print edition of the Ruby on Rails Tutorial, 2nd Edition&lt;/a&gt;&lt;img src="http://www.assoc-amazon.com/e/ir?t=therubonraitu-20&amp;amp;l=as2&amp;amp;o=1&amp;amp;a=0321832051" border="0" height="1" alt="" style="border: none !important; margin: 0px !important;" width="1" /&gt;. I&amp;#8217;ve been notified by several readers that, despite the discount I negotiated at a non-Amazon retailer, in fact the print edition of the book is cheapest at Amazon. Having spent a week trying and failing to negotiate a bigger discount, I&amp;#8217;ve decided that sending people to Amazon is best. (Please accept my apologies if you bought a copy at the (slightly) higher price; send me an &lt;a href="http://railstutorial.org/contact"&gt;email&lt;/a&gt; and I&amp;#8217;ll do my best to make it up to you.)&lt;/p&gt;
&lt;p&gt;This change in retailer also affords us an opportunity, as the book&amp;#8217;s star rating at Amazon is currently being dragged down by several obsolete one-star reviews dating from the book&amp;#8217;s &lt;a href="http://news.railstutorial.org/do-not-buy-the-print-version-of-the-ruby-on-rails-tutorial-yet-/"&gt;blown first printing&lt;/a&gt;. Now that the corrected second printing is out, I would deeply appreciate it if you could &lt;a href="http://www.amazon.com/gp/product/0321832051/ref=as_li_qf_sp_asin_tl?ie=UTF8&amp;amp;camp=1789&amp;amp;creative=9325&amp;amp;creativeASIN=0321832051&amp;amp;linkCode=as2&amp;amp;tag=therubonraitu-20"&gt;leave a review at Amazon.com&lt;/a&gt;&lt;img src="http://www.assoc-amazon.com/e/ir?t=therubonraitu-20&amp;amp;l=as2&amp;amp;o=1&amp;amp;a=0321832051" border="0" height="1" alt="" style="border: none !important; margin: 0px !important;" width="1" /&gt; to help counterbalance these outdated bad reviews. (Of course, maybe you think the book deserves its one-star ratings, in which case&amp;mdash;&lt;em&gt;ouch&lt;/em&gt;.)&lt;/p&gt;
&lt;p&gt;Finally, I&amp;#8217;d like to note that the &lt;a href="http://railstutorial.org/#buy"&gt;Rails Tutorial ebook bundle&lt;/a&gt; includes a MOBI format for Kindle. I&amp;#8217;ve had reports that the formatting is nicer than the &amp;#8220;official&amp;#8221; version at Amazon, and my version comes with free updates and bugfixes, so I recommend buying directly from railstutorial.org.&lt;/p&gt;
&lt;img src="http://feeds.feedburner.com/~r/railstutorial/~4/EL8SHvpNJJU" height="1" width="1"/&gt;</content>
  <feedburner:origLink>http://news.railstutorial.org/update-on-the-rails-tutorial-print-edition/</feedburner:origLink></entry>
  
  <entry>
    <title type="html"><![CDATA[Print edition of the Ruby on Rails Tutorial book]]></title>
    <link href="http://feedproxy.google.com/~r/railstutorial/~3/iPgrAiNSfa4/" />
    <updated>2012-09-27T00:00:00-07:00</updated>
    <id>http://news.railstutorial.org/print-edition-of-the-ruby-on-rails-tutorial-book</id>
    <content type="html">&lt;p&gt;&lt;a href="http://www.amazon.com/gp/product/0321832051/ref=as_li_qf_sp_asin_il?ie=UTF8&amp;amp;camp=1789&amp;amp;creative=9325&amp;amp;creativeASIN=0321832051&amp;amp;linkCode=as2&amp;amp;tag=therubonraitu-20"&gt;&lt;img src="http://ws.assoc-amazon.com/widgets/q?_encoding=UTF8&amp;amp;ASIN=0321832051&amp;amp;Format=_SL110_&amp;amp;ID=AsinImage&amp;amp;MarketPlace=US&amp;amp;ServiceVersion=20070822&amp;amp;WS=1&amp;amp;tag=therubonraitu-20" border="0" alt="" /&gt;&lt;/a&gt;&lt;img src="http://www.assoc-amazon.com/e/ir?t=therubonraitu-20&amp;amp;l=as2&amp;amp;o=1&amp;amp;a=0321832051" border="0" height="1" alt="" style="border: none !important; margin: 0px !important;" width="1" /&gt;&lt;/p&gt;
&lt;p&gt;I&amp;#8217;m pleased to announce that, after a &lt;a href="http://news.railstutorial.org/do-not-buy-the-print-version-of-the-ruby-on-rails-tutorial-yet-/"&gt;temporary hiccup&lt;/a&gt;, the print edition of &lt;a href="http://www.amazon.com/gp/product/0321832051/ref=as_li_qf_sp_asin_tl?ie=UTF8&amp;amp;camp=1789&amp;amp;creative=9325&amp;amp;creativeASIN=0321832051&amp;amp;linkCode=as2&amp;amp;tag=therubonraitu-20"&gt;Ruby on Rails Tutorial: Learn Web Development with Rails (2nd Edition)&lt;/a&gt;&lt;img src="http://www.assoc-amazon.com/e/ir?t=therubonraitu-20&amp;amp;l=as2&amp;amp;o=1&amp;amp;a=0321832051" border="0" height="1" alt="" style="border: none !important; margin: 0px !important;" width="1" /&gt; is now available at Amazon.com. (A previous version of this post suggested buying from a different website, but it turned out that even my specially negotiated discount wasn&amp;#8217;t enough to compete with Amazon. Please accept my apologies for the discrepancy.)&lt;/p&gt;
&lt;p&gt;Speaking of Amazon, I would greatly appreciate your taking the time to &lt;a href="http://www.amazon.com/gp/product/0321832051/ref=as_li_qf_sp_asin_tl?ie=UTF8&amp;amp;camp=1789&amp;amp;creative=9325&amp;amp;creativeASIN=0321832051&amp;amp;linkCode=as2&amp;amp;tag=therubonraitu-20"&gt;leave a review at Amazon.com&lt;/a&gt;&lt;img src="http://www.assoc-amazon.com/e/ir?t=therubonraitu-20&amp;amp;l=as2&amp;amp;o=1&amp;amp;a=0321832051" border="0" height="1" alt="" style="border: none !important; margin: 0px !important;" width="1" /&gt;, especially because there are (as of this writing) several obsolete one-star reviews dating from the &lt;a href="http://news.railstutorial.org/do-not-buy-the-print-version-of-the-ruby-on-rails-tutorial-yet-/"&gt;broken first printing&lt;/a&gt;. A few good reviews to counterbalance those bad ones sure would be nice&amp;hellip; Thanks!&lt;/p&gt;
&lt;img src="http://feeds.feedburner.com/~r/railstutorial/~4/iPgrAiNSfa4" height="1" width="1"/&gt;</content>
  <feedburner:origLink>http://news.railstutorial.org/print-edition-of-the-ruby-on-rails-tutorial-book/</feedburner:origLink></entry>
  
  <entry>
    <title type="html"><![CDATA[New EPUB and MOBI versions of the Ruby on Rails Tutorial]]></title>
    <link href="http://feedproxy.google.com/~r/railstutorial/~3/yKGK4aC3Hx4/" />
    <updated>2012-08-27T00:00:00-07:00</updated>
    <id>http://news.railstutorial.org/new-epub-and-mobi-versions-of-the-ruby-on-rails-tutorial</id>
    <content type="html">&lt;p&gt;I&amp;#8217;m pleased to announce the immediate availability of EPUB and MOBI versions of the Ruby on Rails Tutorial, 2nd Edition, in addition to the original PDF. All three formats are 100% DRM-free. This is a FREE UPGRADE for purchasers of the 2nd edition PDF or PDF/screencast bundle. Simply search your mail program for &amp;#8220;Rails Tutorial purchase&amp;#8221; to find the email with the download link, and then re-download the relevant ZIP file. New customers who buy the ebook or ebook/screencast bundle will also get the new formats at no additional charge:&lt;p /&gt;&lt;a href="http://ruby.railstutorial.org/#buy"&gt;http://ruby.railstutorial.org/#buy&lt;/a&gt;&lt;p /&gt;The production of these ebook formats is due to popular demand, but requires a brief rant.&lt;p&gt; 

  &lt;p&gt;&lt;strong&gt;&amp;lt;rant&amp;gt;&lt;/strong&gt;The EPUB and MOBI formats allow much less control over visual appearance and formatting than PDF does. This makes them particularly ill-suited to technical books, but they have significant limitations even for books consisting only of text. &lt;em&gt;Type is a visual medium.&lt;/em&gt; EPUB and MOBI, while preserving content, undermine form. Nevertheless, they do offer certain compensating conveniences; thus, the present announcement.&lt;strong&gt;&amp;lt;/rant&amp;gt;&lt;/strong&gt;&lt;/p&gt;

  &lt;p&gt;As noted above, if you already bought the 2nd edition of the Rails Tutorial PDF, just re-download the book ZIP file to get the new formats. If you haven&amp;#8217;t bought it yet, maybe this will sweeten the deal enough for you to pull the trigger. Get them while they&amp;#8217;re hot: &lt;p /&gt;&lt;a href="http://ruby.railstutorial.org/#buy"&gt;http://ruby.railstutorial.org/#buy&lt;/a&gt;&lt;/p&gt;
&lt;img src="http://feeds.feedburner.com/~r/railstutorial/~4/yKGK4aC3Hx4" height="1" width="1"/&gt;</content>
  <feedburner:origLink>http://news.railstutorial.org/new-epub-and-mobi-versions-of-the-ruby-on-rails-tutorial/</feedburner:origLink></entry>
  
  <entry>
    <title type="html"><![CDATA[Do not buy the print version of the Ruby on Rails Tutorial (yet)]]></title>
    <link href="http://feedproxy.google.com/~r/railstutorial/~3/dEDjQZbKSdU/" />
    <updated>2012-08-09T00:00:00-07:00</updated>
    <id>http://news.railstutorial.org/do-not-buy-the-print-version-of-the-ruby-on-rails-tutorial-yet-</id>
    <content type="html">&lt;p&gt;&lt;strong&gt;UPDATE:&lt;/strong&gt; The &lt;a href="http://news.railstutorial.org/print-edition-of-the-ruby-on-rails-tutorial-book/"&gt;corrected second printing of the print edition&lt;/a&gt; is now available.&lt;/p&gt;
&lt;p&gt;The print version of the Ruby on Rails Tutorial, 2nd edition, has recently been released, and this is a warning not to buy it, at least not yet.&lt;p /&gt;You might be tempted to think this is some kind of clever reverse-psychology marketing strategy, but alas it is not: the print book&amp;#8217;s source code listings have been hopelessly mangled, with all angle brackets, curly braces, and quotes inexplicably omitted. This makes the source listings worse than useless. (The &lt;a href="http://ruby.railstutorial.org/book"&gt;online HTML book&lt;/a&gt; and &lt;a href="http://ruby.railstutorial.org/#buy"&gt;ebooks&lt;/a&gt; are unaffected and remain correct as before.)&lt;/p&gt;
&lt;p&gt;I have alerted the publisher to the problem; how they&amp;#8217;ll respond remains to be seen, but my hope is that it will involve a recall, correction, and re-issue. As a result, I hope and expect this to be fixed eventually. I plan to send out an announcement when it is. &lt;strong&gt;UPDATE:&lt;/strong&gt; The plan is to freeze the current inventory and make a corrected second printing. I&amp;#8217;d like to thank the publisher for their quick response.&lt;/p&gt;
&lt;p&gt;In the meantime, &lt;em&gt;do not buy&lt;/em&gt; the print version of the Ruby on Rails Tutorial until the second printing is available. Please accept my apologies for any inconvenience.&lt;/p&gt;
&lt;img src="http://feeds.feedburner.com/~r/railstutorial/~4/dEDjQZbKSdU" height="1" width="1"/&gt;</content>
  <feedburner:origLink>http://news.railstutorial.org/do-not-buy-the-print-version-of-the-ruby-on-rails-tutorial-yet-/</feedburner:origLink></entry>
  
  <entry>
    <title type="html"><![CDATA[Ruby on Rails Tutorial screencasts, 2nd Edition]]></title>
    <link href="http://feedproxy.google.com/~r/railstutorial/~3/yJ_i-_Oj_pw/" />
    <updated>2012-06-05T00:00:00-07:00</updated>
    <id>http://news.railstutorial.org/ruby-on-rails-tutorial-screencasts-2nd-edition</id>
    <content type="html">&lt;p&gt;I&amp;#8217;m pleased to announce the official release of the&lt;a href="http://ruby.railstutorial.org/"&gt; 2nd Edition of the Ruby on Rails Tutorial screencasts&lt;/a&gt;. Use the coupon code &lt;tt&gt;2ndEd&lt;/tt&gt; to get 20% off through &lt;a href="http://tauday.com/"&gt;June 28&lt;/a&gt;.&lt;/p&gt;
&lt;p&gt;Based on the &lt;a href="http://ruby.railstutorial.org/ruby-on-rails-tutorial-book"&gt;Ruby on Rails Tutorial book&lt;/a&gt;, the &lt;a href="http://ruby.railstutorial.org/"&gt;Rails Tutorial screencasts&lt;/a&gt; include more than 15 hours of hands-on instruction that take you through the development of a full, industrial-strength web application with &lt;a href="http://rubyonrails.org/"&gt;Ruby on Rails&lt;/a&gt;.&lt;/p&gt;
&lt;h2&gt;New in the 2nd Edition&lt;/h2&gt;
&lt;ul&gt;
&lt;li&gt;Fully updated for Rails 3.2 and Ruby 1.9&lt;/li&gt;
&lt;li&gt;All-new design using Twitter&amp;#8217;s Bootstrap&lt;/li&gt;
&lt;li&gt;Coverage of the new asset pipeline, including Sprockets &amp;amp; Sass&lt;/li&gt;
&lt;li&gt;Behavior-driven development (BDD) with Capybara &amp;amp; RSpec&lt;/li&gt;
&lt;li&gt;Better automated testing with Guard &amp;amp; Spork&lt;/li&gt;
&lt;li&gt;Roll your own authentication with &lt;tt&gt;has_secure_password&lt;/tt&gt;&lt;/li&gt;
&lt;li&gt;An introduction to Gherkin &amp;amp; Cucumber&lt;/li&gt;
&lt;/ul&gt;
&lt;p&gt;The 2nd edition includes some &lt;a href="http://ruby.railstutorial.org/#free_screencasts"&gt;free screencasts&lt;/a&gt;, and the full series is available for purchase here:&lt;/p&gt;
&lt;p&gt;&lt;strong&gt;&lt;a href="http://railstutorial.org/screencasts"&gt;http://railstutorial.org/screencasts&lt;/a&gt;&lt;/strong&gt;&lt;/p&gt;
&lt;p&gt;The purchase price is $125 for the full PDF/screencast bundle, but (as noted above) you can use the coupon code &lt;tt&gt;2ndEd&lt;/tt&gt; to get 20% off through June 28.&lt;/p&gt;
&lt;img src="http://feeds.feedburner.com/~r/railstutorial/~4/yJ_i-_Oj_pw" height="1" width="1"/&gt;</content>
  <feedburner:origLink>http://news.railstutorial.org/ruby-on-rails-tutorial-screencasts-2nd-edition/</feedburner:origLink></entry>
  
  <entry>
    <title type="html"><![CDATA[Some free Rails Tutorial screencasts]]></title>
    <link href="http://feedproxy.google.com/~r/railstutorial/~3/pvm3F5OoP38/" />
    <updated>2012-05-09T00:00:00-07:00</updated>
    <id>http://news.railstutorial.org/some-free-rails-tutorial-screencasts</id>
    <content type="html">&lt;p&gt;I&amp;#8217;ve just released some free screencasts on Rails installation, advanced setup, and Sublime Text&amp;nbsp;2. All three are available on YouTube here:&lt;/p&gt;
&lt;ul&gt;
&lt;li&gt;&lt;a href="http://youtu.be/MiAz0DnnY_k"&gt;Installation screencast&lt;/a&gt;&lt;/li&gt;
&lt;li&gt;&lt;a href="http://youtu.be/FZ-b9oZpCZY"&gt;Advanced setup screencast&lt;/a&gt;&lt;/li&gt;
&lt;li&gt;&lt;a href="http://youtu.be/05x1Jk4rT1A"&gt;Sublime Text 2 screencast&lt;/a&gt;&lt;/li&gt;
&lt;/ul&gt;
&lt;p&gt;You can also &lt;a href="http://railstutorial.org/samples?file=rails_tutorial_free_screencasts.zip"&gt;download all three screencasts as a ZIP file&lt;/a&gt;.&lt;/p&gt;
&lt;p&gt;I&amp;#8217;m especially pleased with the final of the three, which really shows off the power of the excellent (and cross-platform!) &lt;a href="http://www.sublimetext.com/2"&gt;Sublime Text&amp;nbsp;2&lt;/a&gt; editor. Check it out &lt;a href="http://youtu.be/05x1Jk4rT1A"&gt;here&lt;/a&gt;.&lt;/p&gt;
&lt;img src="http://feeds.feedburner.com/~r/railstutorial/~4/pvm3F5OoP38" height="1" width="1"/&gt;</content>
  <feedburner:origLink>http://news.railstutorial.org/some-free-rails-tutorial-screencasts/</feedburner:origLink></entry>
  
  <entry>
    <title type="html"><![CDATA[International Day Against DRM Rails Tutorial discount]]></title>
    <link href="http://feedproxy.google.com/~r/railstutorial/~3/7B3ZLTLUU7Q/" />
    <updated>2012-05-04T00:00:00-07:00</updated>
    <id>http://news.railstutorial.org/international-day-against-drm-rails-tutorial-discount</id>
    <content type="html">&lt;p&gt;The &lt;a href="http://ruby.railstutorial.org/"&gt;Ruby on Rails Tutorial&lt;/a&gt; is 100% DRM-free and always will be. In honor of the &lt;a href="http://www.defectivebydesign.org/dayagainstdrm/"&gt;International Day Against DRM&lt;/a&gt;, from today (2012-05-04) through noon tomorrow (&lt;a href="http://www.timeanddate.com/library/abbreviations/timezones/na/pdt.html"&gt;PDT&lt;/a&gt;) you can use the coupon code IH8DRM to get 40% off any combination of Rails Tutorial products&amp;mdash;because I hate DRM as much as you do. (HT: &lt;a href="http://radar.oreilly.com/2012/05/drm-free-day-forever.html"&gt;O&amp;#8217;Reilly&lt;/a&gt;.)&lt;/p&gt;
&lt;img src="http://feeds.feedburner.com/~r/railstutorial/~4/7B3ZLTLUU7Q" height="1" width="1"/&gt;</content>
  <feedburner:origLink>http://news.railstutorial.org/international-day-against-drm-rails-tutorial-discount/</feedburner:origLink></entry>
  
  <entry>
    <title type="html"><![CDATA[Confusing coupons]]></title>
    <link href="http://feedproxy.google.com/~r/railstutorial/~3/bUhr_Rp-_ZY/" />
    <updated>2012-05-04T00:00:00-07:00</updated>
    <id>http://news.railstutorial.org/confusing-coupons</id>
    <content type="html">&lt;p&gt;A commenter at Hacker News noted that there have been a lot (perhaps too many) Rails Tutorial coupon codes recently. I may have gotten carried away with this last one, but I hate DRM so much that I really wanted to do something about it. Please email me directly (&lt;a href="mailto:admin@railstutorial.org"&gt;admin@railstutorial.org&lt;/a&gt;) if you have any complaints and I&amp;#8217;ll do what it takes to make things right.&lt;/p&gt;
&lt;img src="http://feeds.feedburner.com/~r/railstutorial/~4/bUhr_Rp-_ZY" height="1" width="1"/&gt;</content>
  <feedburner:origLink>http://news.railstutorial.org/confusing-coupons/</feedburner:origLink></entry>
  
  <entry>
    <title type="html"><![CDATA[Minor book update]]></title>
    <link href="http://feedproxy.google.com/~r/railstutorial/~3/AhbFco2cZJg/" />
    <updated>2012-04-21T00:00:00-07:00</updated>
    <id>http://news.railstutorial.org/minor-book-update</id>
    <content type="html">&lt;p&gt;GitHub recently changed how they &lt;a href="https://github.com/blog/1105-an-easier-way-to-create-repositories"&gt;create new repositories&lt;/a&gt;, so the Rails Tutorial book has been updated accordingly. PDF purchasers can get the updated version from their downloads page. (You might have to clear your browser cache first.) The Lesson 3 screencast, currently in preparation, will also show the updated new repository page.&lt;/p&gt;
&lt;img src="http://feeds.feedburner.com/~r/railstutorial/~4/AhbFco2cZJg" height="1" width="1"/&gt;</content>
  <feedburner:origLink>http://news.railstutorial.org/minor-book-update/</feedburner:origLink></entry>
  
  <entry>
    <title type="html"><![CDATA[Ruby on Rails Tutorial, 2nd edition]]></title>
    <link href="http://feedproxy.google.com/~r/railstutorial/~3/Xm8LqpHYeKM/" />
    <updated>2012-04-20T00:00:00-07:00</updated>
    <id>http://news.railstutorial.org/ruby-on-rails-tutorial-2nd-edition</id>
    <content type="html">&lt;p&gt;tl;dr: The Rails Tutorial 2nd edition PDF is out; early access to the 2nd edition screencasts is open; use the code &amp;#8220;rt2ndEd&amp;#8221; through the end of April to get a 20% discount. Go to &lt;a href="http://railstutorial.org/"&gt;http://railstutorial.org/&lt;/a&gt; for more information.&lt;p /&gt;I&amp;#8217;m pleased to announce the availability of the Ruby on Rails Tutorial, 2nd Edition PDF. This new edition has been specially optimized for e-readers such as Kindle and iPad; you can download a sample PDF here:&lt;p /&gt;&lt;a href="http://railstutorial.org/samples?file=rails_tutorial_2nd_edition_sample.pdf"&gt;http://railstutorial.org/samples?file=rails_tutorial_2nd_edition_sample.pdf&lt;/a&gt;&lt;p /&gt;Here&amp;#8217;s what&amp;#8217;s new in the 2nd edition:&lt;p /&gt;&lt;a href="http://railstutorial.org/#new"&gt;http://railstutorial.org/#new&lt;/a&gt;&lt;p /&gt;I&amp;#8217;d especially like to thank the many readers who reported errors in the online version of the 2nd edition.&lt;p /&gt;I&amp;#8217;d also like to announce the launch of access to the 2nd edition screencasts. Right now this consists of Lessons 1 &amp;amp; 2, along with two short screencasts on installation and advanced setup. Anyone who buys the screencasts now will get each new screencast as it&amp;#8217;s produced, as well as the 1st edition screencasts in their entirety. I&amp;#8217;m planning to increase the price to $125 once they&amp;#8217;re done, but until then they are available for $95. You can find them on the Rails Tutorial home page:&lt;p /&gt;&lt;a href="http://railstutorial.org/"&gt;http://railstutorial.org/&lt;/a&gt;&lt;p /&gt;I&amp;#8217;m offering a 20% discount using the coupon code &amp;#8220;rt2ndEd&amp;#8221; (expires at the end of April).&lt;/p&gt;
&lt;p&gt;As a heads-up, progress on the new screencasts will probably be slow for the next week or so, as I&amp;#8217;ll be in Austin, Texas, for &lt;a href="http://railsconf2012.com/"&gt;RailsConf 2012&lt;/a&gt;. I&amp;#8217;ll be speaking on Monday afternoon (4/23) on &amp;#8220;Rails-flavored Ruby&amp;#8221; (based on Chapter 4 of the Rails Tutorial book), and I&amp;#8217;ll be around through the end of the conference. If any of you will be in attendance and would like to make good on the book&amp;#8217;s &lt;a href="http://railstutorial.org/book#license"&gt;Beerware License&lt;/a&gt;, now&amp;#8217;s your chance. ;-)&lt;/p&gt;
&lt;img src="http://feeds.feedburner.com/~r/railstutorial/~4/Xm8LqpHYeKM" height="1" width="1"/&gt;</content>
  <feedburner:origLink>http://news.railstutorial.org/ruby-on-rails-tutorial-2nd-edition/</feedburner:origLink></entry>
  
  <entry>
    <title type="html"><![CDATA[Rails 3.2.3 update]]></title>
    <link href="http://feedproxy.google.com/~r/railstutorial/~3/T76ChvdfUWM/" />
    <updated>2012-03-31T00:00:00-07:00</updated>
    <id>http://news.railstutorial.org/rails-3-2-3-update</id>
    <content type="html">&lt;p&gt;I&amp;#8217;ve updated the &lt;a href="http://ruby.railstutorial.org/"&gt;&lt;em&gt;Ruby on Rails Tutorial&lt;/em&gt;&lt;/a&gt; to use &lt;a href="http://weblog.rubyonrails.org/2012/3/30/ann-rails-3-2-3-has-been-released/"&gt;Rails 3.2.3&lt;/a&gt;. For the short version of what this means for &lt;em&gt;Rails Tutorial &lt;/em&gt;readers, see my &lt;a href="http://news.ycombinator.com/item?id=3781233"&gt;recent comment on Hacker News&lt;/a&gt;. For the long version, see the &lt;a href="http://ruby.railstutorial.org/ruby-on-rails-tutorial-book?version=3.2"&gt;latest version of the book&lt;/a&gt;.&lt;/p&gt;
&lt;img src="http://feeds.feedburner.com/~r/railstutorial/~4/T76ChvdfUWM" height="1" width="1"/&gt;</content>
  <feedburner:origLink>http://news.railstutorial.org/rails-3-2-3-update/</feedburner:origLink></entry>
  
  <entry>
    <title type="html"><![CDATA[A behind-the-scenes look at the Rails Tutorial]]></title>
    <link href="http://feedproxy.google.com/~r/railstutorial/~3/Vnf-NFi3yyw/" />
    <updated>2012-03-21T00:00:00-07:00</updated>
    <id>http://news.railstutorial.org/a-behind-the-scenes-look-at-the-rails-tutorial</id>
    <content type="html">&lt;p&gt;As part of gearing up for full screencast production and as a teaser for what&amp;#8217;s to come, I&amp;#8217;ve made a &lt;a href="http://www.youtube.com/watch?v=CEWtc2nTwCQ"&gt;short screencast&lt;/a&gt; with a special behing-the-scenes look at how I produce both the Rails Tutorial sample app and the Rails Tutorial book itself. You can find it on YouTube &lt;a href="http://www.youtube.com/watch?v=CEWtc2nTwCQ"&gt;here&lt;/a&gt;. (For best viewing, increase the resolution to HD and run it in full-screen mode.)&lt;/p&gt;
&lt;img src="http://feeds.feedburner.com/~r/railstutorial/~4/Vnf-NFi3yyw" height="1" width="1"/&gt;</content>
  <feedburner:origLink>http://news.railstutorial.org/a-behind-the-scenes-look-at-the-rails-tutorial/</feedburner:origLink></entry>
  
</feed>
