<?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" xml:lang="en-US">
  <id>tag:blog.railsprescriptions.com,2008:/posts</id>
  <link type="text/html" href="http://blog.railsprescriptions.com/posts" rel="alternate" />
  
  <title>Rails Prescriptions 24 Hour Window Blog</title>
  <updated>2009-10-20T23:48:20-05:00</updated>
  <generator uri="http://enkiblog.com">Enki</generator>
  <author>
    <name>Noel Rappin</name>
    <email>railsprescriptions@gmail.com</email>
  </author>
  <link rel="self" href="http://feeds.feedburner.com/railsprescriptions" type="application/atom+xml" /><atom10:link xmlns:atom10="http://www.w3.org/2005/Atom" rel="hub" href="http://pubsubhubbub.appspot.com" /><entry>
    <id>tag:blog.railsprescriptions.com,2008:Post/58</id>
    <published>2009-10-20T23:48:20-05:00</published>
    <updated>2009-10-20T23:48:20-05:00</updated>
    <link type="text/html" href="http://feedproxy.google.com/~r/railsprescriptions/~3/76AqMGz5J3c/back-in-the-saddle-again" rel="alternate" />
    <title>Back in the Saddle Again</title>
    <content type="html">&lt;p&gt;A number of updates, since it&amp;#8217;s been a while since I posted anything remotely update-y.&lt;/p&gt;


	&lt;p&gt;First off, as those of you who &lt;a href="http://www.twitter.com/noelrap"&gt;follow me on twitter&lt;/a&gt; already know, there&amp;#8217;s been a change in my employment status. Starting Monday, I&amp;#8217;ll be working for &lt;a href="http://www.obtiva.com"&gt;Obtiva&lt;/a&gt;. I&amp;#8217;m very excited about this. I like to do a lot of different things &amp;emdash; code, lead teams, coach, do training, write &amp;emdash; and it looks like I&amp;#8217;ll get the chance to do pretty much all of them at Obtiva. Some of you reading this were helpful either by offering support or helping me make a connection, thank you all.&lt;/p&gt;


	&lt;p&gt;Obtiva doesn&amp;#8217;t do a company blog the way Pathfinder does, but I&amp;#8217;m hoping to continue to write about Rails, software development, &lt;span class="caps"&gt;TDD&lt;/span&gt;, or whatever else springs to mind. I do think I might switch to a different blogging platform though, the spam attacks are getting to be a little to much for the haphazard install I&amp;#8217;ve got going here.&lt;/p&gt;


	&lt;p&gt;As for the book, it&amp;#8217;s moving along. Oddly, job hunting actually didn&amp;#8217;t give me as much time to work on it over the last couple of weeks as I was hoping. All the text has been converted to Pragmatic markup, we&amp;#8217;ve come up with what I think is the new structure of the book, which groups chapters by common topic more strongly than the original structure did. Hoping for a round of editing based on that structure to be completed shortly, and then we&amp;#8217;ll move on to the last round of new chapters, and whatever other review and edit processes come next.&lt;/p&gt;&lt;div class="feedflare"&gt;
&lt;a href="http://feeds.feedburner.com/~ff/railsprescriptions?a=76AqMGz5J3c:WkQTedhybU0:yIl2AUoC8zA"&gt;&lt;img src="http://feeds.feedburner.com/~ff/railsprescriptions?d=yIl2AUoC8zA" border="0"&gt;&lt;/img&gt;&lt;/a&gt; &lt;a href="http://feeds.feedburner.com/~ff/railsprescriptions?a=76AqMGz5J3c:WkQTedhybU0:63t7Ie-LG7Y"&gt;&lt;img src="http://feeds.feedburner.com/~ff/railsprescriptions?d=63t7Ie-LG7Y" border="0"&gt;&lt;/img&gt;&lt;/a&gt; &lt;a href="http://feeds.feedburner.com/~ff/railsprescriptions?a=76AqMGz5J3c:WkQTedhybU0:V_sGLiPBpWU"&gt;&lt;img src="http://feeds.feedburner.com/~ff/railsprescriptions?i=76AqMGz5J3c:WkQTedhybU0:V_sGLiPBpWU" border="0"&gt;&lt;/img&gt;&lt;/a&gt; &lt;a href="http://feeds.feedburner.com/~ff/railsprescriptions?a=76AqMGz5J3c:WkQTedhybU0:F7zBnMyn0Lo"&gt;&lt;img src="http://feeds.feedburner.com/~ff/railsprescriptions?i=76AqMGz5J3c:WkQTedhybU0:F7zBnMyn0Lo" border="0"&gt;&lt;/img&gt;&lt;/a&gt;
&lt;/div&gt;&lt;img src="http://feeds.feedburner.com/~r/railsprescriptions/~4/76AqMGz5J3c" height="1" width="1"/&gt;</content>
  <feedburner:origLink>http://blog.railsprescriptions.com/2009/10/20/back-in-the-saddle-again</feedburner:origLink></entry>
  <entry>
    <id>tag:blog.railsprescriptions.com,2008:Post/57</id>
    <published>2009-10-04T23:29:06-05:00</published>
    <updated>2009-10-04T23:29:06-05:00</updated>
    <link type="text/html" href="http://feedproxy.google.com/~r/railsprescriptions/~3/5LybgbOBCrA/a-given-when-then-test-framework" rel="alternate" />
    <title>A Given/When/Then Test Framework</title>
    <content type="html">&lt;p&gt;Jim Weirich put up a &lt;a href="http://github.com/jimweirich/Given"&gt;potential Ruby test framework&lt;/a&gt; that steals the Given/When/Then syntax from Cucumber. I spent some time noodling along similar lines some months back but never got very far with it. Interestingly, Jim&amp;#8217;s proposal and my idea seem to be a little bit different, so I thought I&amp;#8217;d write up what I was trying to do, and maybe actually try and make it real.&lt;/p&gt;


	&lt;p&gt;I was thinking about a particular problem that&amp;#8217;s easiest to see in a Rails controller test. Using Shoulda, and trying to use a nested context, one assertion per test style, I was trying to test admin and regular user behavior in a particular controller. I started with something like this:&lt;/p&gt;


&lt;pre&gt;
  context "GET edit" do

    setup do
      @proj1 = Project.make(:name =&amp;gt; "Project Runway")
      get :edit, :id =&amp;gt; @proj1.to_param
    end

    should "have something" { assert something here}
  end
&lt;/pre&gt;

	&lt;p&gt;Fine and dandy, but when I want to split this into admin and regular users, what I really want to do is this, bear with the slight pseduo-code:&lt;/p&gt;


&lt;pre&gt;
  context "GET edit" do

    setup do
      @proj1 = Project.make(:name =&amp;gt; "Project Runway")
      get :edit, :id =&amp;gt; @proj1.to_param
    end

    context "with a normal user" do
      setup { @user = login! }

      should "have something" { assert something here}  
    end

    context "with an admin user" do 
      setup { @user = admin! }

      should "have something adminy" { assert something here}
    end
  end
&lt;/pre&gt;

	&lt;p&gt;Unfortunately this doesn&amp;#8217;t work, since the &lt;code&gt;get&lt;/code&gt; is called before the subordinate setup clauses, the user doesn&amp;#8217;t take effect until after the controller call has been made. The workaround is to move the &lt;code&gt;get&lt;/code&gt; call into the subordinate setup clauses, which is hardly the end of the world or anything like that but which did bug me a little.&lt;/p&gt;


	&lt;p&gt;Thinking about this, it occurred to me that the user set up is basically Given, while the &lt;code&gt;get&lt;/code&gt; call is basically a When, and what I want to do is insert a new given, while keeping the same when.&lt;/p&gt;


	&lt;p&gt;I never did quite nail the syntax, but I was hoping for something like this&lt;/p&gt;


&lt;pre&gt;
  Scenario "GET edit" do  
    Given { @proj1 = Project.make(:name =&amp;gt; "Project Runway") }
    When { get :edit, :id =&amp;gt; @proj1.to_param }

    Scenario "For a normal user" do
      Given { @user = login! }
      Then { assert something here}
    end

    Scenario "For an admin user" do
      Given { @user = admin! }
      Then { assert something here}
    end
  end
&lt;/pre&gt;

	&lt;p&gt;The semantics of this is that any &lt;code&gt;Then&lt;/code&gt; clause would trigger a test, first all the &lt;code&gt;Given&lt;/code&gt; clauses would be run for all nested scenarios, then all the &lt;code&gt;When&lt;/code&gt; clauses, followed by the &lt;code&gt;Then&lt;/code&gt; block, which would need to return true for the test to pass.&lt;/p&gt;


	&lt;p&gt;I never got around to implementing it, in part for lack of time, and in part doubting whether this occasional case would be worth the extra effort. As much as I like how the Given/When/Then structure reads here, I&amp;#8217;m not sure that it would be clear to a reader of this test that the subordinate &lt;code&gt;Given&lt;/code&gt; clauses would be executed before the &lt;code&gt;When&lt;/code&gt; clause. Though I guess that would come after some time with the framework.&lt;/p&gt;


	&lt;p&gt;Thoughts? Am I crazy?&lt;/p&gt;&lt;div class="feedflare"&gt;
&lt;a href="http://feeds.feedburner.com/~ff/railsprescriptions?a=5LybgbOBCrA:9dJB1IZHTiQ:yIl2AUoC8zA"&gt;&lt;img src="http://feeds.feedburner.com/~ff/railsprescriptions?d=yIl2AUoC8zA" border="0"&gt;&lt;/img&gt;&lt;/a&gt; &lt;a href="http://feeds.feedburner.com/~ff/railsprescriptions?a=5LybgbOBCrA:9dJB1IZHTiQ:63t7Ie-LG7Y"&gt;&lt;img src="http://feeds.feedburner.com/~ff/railsprescriptions?d=63t7Ie-LG7Y" border="0"&gt;&lt;/img&gt;&lt;/a&gt; &lt;a href="http://feeds.feedburner.com/~ff/railsprescriptions?a=5LybgbOBCrA:9dJB1IZHTiQ:V_sGLiPBpWU"&gt;&lt;img src="http://feeds.feedburner.com/~ff/railsprescriptions?i=5LybgbOBCrA:9dJB1IZHTiQ:V_sGLiPBpWU" border="0"&gt;&lt;/img&gt;&lt;/a&gt; &lt;a href="http://feeds.feedburner.com/~ff/railsprescriptions?a=5LybgbOBCrA:9dJB1IZHTiQ:F7zBnMyn0Lo"&gt;&lt;img src="http://feeds.feedburner.com/~ff/railsprescriptions?i=5LybgbOBCrA:9dJB1IZHTiQ:F7zBnMyn0Lo" border="0"&gt;&lt;/img&gt;&lt;/a&gt;
&lt;/div&gt;&lt;img src="http://feeds.feedburner.com/~r/railsprescriptions/~4/5LybgbOBCrA" height="1" width="1"/&gt;</content>
  <feedburner:origLink>http://blog.railsprescriptions.com/2009/10/04/a-given-when-then-test-framework</feedburner:origLink></entry>
  <entry>
    <id>tag:blog.railsprescriptions.com,2008:Post/56</id>
    <published>2009-08-30T15:27:35-05:00</published>
    <updated>2009-08-30T15:27:35-05:00</updated>
    <link type="text/html" href="http://feedproxy.google.com/~r/railsprescriptions/~3/c2sDgB3M-fk/pragmatic-status-and-some-qanda" rel="alternate" />
    <title>Pragmatic Status and Some Q&amp;A</title>
    <content type="html">&lt;p&gt;I certainly hope some of you are wondering how the transition to the Pragmatic version of Rails Test Prescriptions is going. Here&amp;#8217;s some notes.&lt;/p&gt;


	&lt;p&gt;Right up top, I want to mention that I&amp;#8217;ll be presenting at &lt;a href="http://www.windycityrails.org"&gt;Windy City Rails&lt;/a&gt; on September 12th, with a talk called &amp;#8220;How To Test Everything&amp;#8221;. There are, I think, still some seats available for the conference, and I&amp;#8217;ll get the slides up online as soon as I can.&lt;/p&gt;


	&lt;p&gt;The self-published version is now off sale&amp;#8212;the text on this site will change shortly to reflect that. The update and registration pages are still up, so registered users can continue to download revision seven of the book.&lt;/p&gt;


	&lt;p&gt;A couple of people have asked me if Pragmatic is going to have some sort of special deal for people who have purchased the self-published version. My answer is in three parts. First off, I don&amp;#8217;t know and I&amp;#8217;m not the person who would make that decisions. Second, I&amp;#8217;d be surprised if they did something directly, the logistics from Pragmatics perspective seem like a pain. Third, without promising anything, I am hoping to do some kind of acknowledgement of the people who bought this book originally, but it&amp;#8217;s too soon to tell what form that might take.&lt;/p&gt;


	&lt;p&gt;Right now, moving the book forward is happening along two different avenues. First, translating my text, which is Markdown, to Pragmatic&amp;#8217;s &lt;span class="caps"&gt;XML&lt;/span&gt;/DocBook-like markup. It&amp;#8217;s not quite fully automatable, but with the power of TextMate behind me, it&amp;#8217;s going fairly quickly. The main slowdown is the sections with actual live code (as opposed to example snippets that aren&amp;#8217;t really in a live app). Loving that I can still write in TextMate and build &lt;span class="caps"&gt;PDF&lt;/span&gt;&amp;#8217;s from the command line&amp;#8212;a wonderfully geeky way to work.&lt;/p&gt;


	&lt;p&gt;It looks like 1 self-published page is about 2/3 of a Pragmatic page. We&amp;#8217;re tentatively hoping that the book as published will have at least 250 pages of text, so if you do the math, that means that at least 25% of the Pragmatic book will be completely new&amp;#8212;some new topics, extensions of existing topics, probably a bit more on the &lt;span class="caps"&gt;TDD&lt;/span&gt; process rants, of which there is less in the book than I thought (everthing existing will be updated and polished, of course.) I know what a lot of that new ground is going to be, but I&amp;#8217;m open to suggestions as well.&lt;/p&gt;


	&lt;p&gt;The other avenue I&amp;#8217;m discussing with my editor is the structure of the book. The self-published version was originally conceived as something like a recipe book, but it&amp;#8217;s not really much like a recipe book at the moment. We&amp;#8217;ve decided not to publish it as a recipe book, which means reordering the somewhat random chapter order into something more coherent, and probably consolidating some of the smaller chapters together. Ideally, this will make the entire book easier to follow and easier to browse.&lt;/p&gt;


	&lt;p&gt;One last thing: I&amp;#8217;ve had some questions on how I reconcile the &amp;#8220;this book will always be up-to-date&amp;#8221; things that I&amp;#8217;ve written with dead trees. Fair question. Here are some answers:&lt;/p&gt;


	&lt;ul&gt;
	&lt;li&gt;I am large and contain multitudes.&lt;/li&gt;
		&lt;li&gt;Pragmatic is unusually good about keeping their content up to date with e-book updates, and also with public, maintained errata pages on their site. I felt the book could still be kept relevant for a long time.&lt;/li&gt;
		&lt;li&gt;It dawned on me sometime over the summer that I has basically set myself up with an infinite task and I&amp;#8217;ve been trying to think of a way to make doing this book more manageable. I like that the book part of this now has something like an end point, then I can try to keep everything current in some other way.&lt;/li&gt;
	&lt;/ul&gt;&lt;div class="feedflare"&gt;
&lt;a href="http://feeds.feedburner.com/~ff/railsprescriptions?a=c2sDgB3M-fk:dtwDejuhexk:yIl2AUoC8zA"&gt;&lt;img src="http://feeds.feedburner.com/~ff/railsprescriptions?d=yIl2AUoC8zA" border="0"&gt;&lt;/img&gt;&lt;/a&gt; &lt;a href="http://feeds.feedburner.com/~ff/railsprescriptions?a=c2sDgB3M-fk:dtwDejuhexk:63t7Ie-LG7Y"&gt;&lt;img src="http://feeds.feedburner.com/~ff/railsprescriptions?d=63t7Ie-LG7Y" border="0"&gt;&lt;/img&gt;&lt;/a&gt; &lt;a href="http://feeds.feedburner.com/~ff/railsprescriptions?a=c2sDgB3M-fk:dtwDejuhexk:V_sGLiPBpWU"&gt;&lt;img src="http://feeds.feedburner.com/~ff/railsprescriptions?i=c2sDgB3M-fk:dtwDejuhexk:V_sGLiPBpWU" border="0"&gt;&lt;/img&gt;&lt;/a&gt; &lt;a href="http://feeds.feedburner.com/~ff/railsprescriptions?a=c2sDgB3M-fk:dtwDejuhexk:F7zBnMyn0Lo"&gt;&lt;img src="http://feeds.feedburner.com/~ff/railsprescriptions?i=c2sDgB3M-fk:dtwDejuhexk:F7zBnMyn0Lo" border="0"&gt;&lt;/img&gt;&lt;/a&gt;
&lt;/div&gt;&lt;img src="http://feeds.feedburner.com/~r/railsprescriptions/~4/c2sDgB3M-fk" height="1" width="1"/&gt;</content>
  <feedburner:origLink>http://blog.railsprescriptions.com/2009/08/30/pragmatic-status-and-some-qanda</feedburner:origLink></entry>
  <entry>
    <id>tag:blog.railsprescriptions.com,2008:Post/55</id>
    <published>2009-08-26T08:57:36-05:00</published>
    <updated>2009-08-26T08:57:36-05:00</updated>
    <link type="text/html" href="http://feedproxy.google.com/~r/railsprescriptions/~3/Rw6-VZ3vs5k/rails-test-prescriptions-update-version-7" rel="alternate" />
    <title>Rails Test Prescriptions update version 7</title>
    <content type="html">&lt;p&gt;Rails Test Prescriptions update 7 is now available.&lt;/p&gt;


	&lt;p&gt;The biggest changes are:&lt;/p&gt;


	&lt;ol&gt;
	&lt;li&gt;New chapter on Webrat&lt;/li&gt;
		&lt;li&gt;Expansion of my Pathfinder blog post on what to do when tests fail.&lt;/li&gt;
	&lt;/ol&gt;


	&lt;p&gt;Also, a bunch of typo fixes and what not.&lt;/p&gt;


	&lt;p&gt;This is most likely the last revision of the self-published version of this book. Although the book itself will go off sale Aug 28, the revision will continue to be available for registered users going forward.&lt;/p&gt;


	&lt;p&gt;This blog will, of course, continue, watch for news on the Pragmatic version as well as the occasional cranky rant.&lt;/p&gt;


	&lt;p&gt;Future changes will be handled via an errata page on this site, and probably also blog posts here.&lt;/p&gt;


	&lt;p&gt;Thanks for your support.&lt;/p&gt;&lt;div class="feedflare"&gt;
&lt;a href="http://feeds.feedburner.com/~ff/railsprescriptions?a=Rw6-VZ3vs5k:8oTpBGu6j0k:yIl2AUoC8zA"&gt;&lt;img src="http://feeds.feedburner.com/~ff/railsprescriptions?d=yIl2AUoC8zA" border="0"&gt;&lt;/img&gt;&lt;/a&gt; &lt;a href="http://feeds.feedburner.com/~ff/railsprescriptions?a=Rw6-VZ3vs5k:8oTpBGu6j0k:63t7Ie-LG7Y"&gt;&lt;img src="http://feeds.feedburner.com/~ff/railsprescriptions?d=63t7Ie-LG7Y" border="0"&gt;&lt;/img&gt;&lt;/a&gt; &lt;a href="http://feeds.feedburner.com/~ff/railsprescriptions?a=Rw6-VZ3vs5k:8oTpBGu6j0k:V_sGLiPBpWU"&gt;&lt;img src="http://feeds.feedburner.com/~ff/railsprescriptions?i=Rw6-VZ3vs5k:8oTpBGu6j0k:V_sGLiPBpWU" border="0"&gt;&lt;/img&gt;&lt;/a&gt; &lt;a href="http://feeds.feedburner.com/~ff/railsprescriptions?a=Rw6-VZ3vs5k:8oTpBGu6j0k:F7zBnMyn0Lo"&gt;&lt;img src="http://feeds.feedburner.com/~ff/railsprescriptions?i=Rw6-VZ3vs5k:8oTpBGu6j0k:F7zBnMyn0Lo" border="0"&gt;&lt;/img&gt;&lt;/a&gt;
&lt;/div&gt;&lt;img src="http://feeds.feedburner.com/~r/railsprescriptions/~4/Rw6-VZ3vs5k" height="1" width="1"/&gt;</content>
  <feedburner:origLink>http://blog.railsprescriptions.com/2009/08/26/rails-test-prescriptions-update-version-7</feedburner:origLink></entry>
  <entry>
    <id>tag:blog.railsprescriptions.com,2008:Post/54</id>
    <published>2009-08-18T09:17:28-05:00</published>
    <updated>2009-08-18T09:17:28-05:00</updated>
    <link type="text/html" href="http://feedproxy.google.com/~r/railsprescriptions/~3/-m4W1pVjaAM/rails-test-prescriptions-to-be-published-by-pragmatic" rel="alternate" />
    <title>Rails Test Prescriptions to be published by Pragmatic</title>
    <content type="html">&lt;p&gt;Let&amp;#8217;s lead with the headline:&lt;/p&gt;


	&lt;p&gt;&lt;em&gt;Rails Test Prescriptions&lt;/em&gt; is going to be published by Pragmatic.&lt;/p&gt;


	&lt;p&gt;I&amp;#8217;m very excited by this. I&amp;#8217;ve wanted to work with Pragmatic for as long as they&amp;#8217;ve been publishing books, and I&amp;#8217;m thrilled that this particular project will be able to get wider distribution and access to Pragmatic&amp;#8217;s editorial expertise and skill.&lt;/p&gt;


	&lt;p&gt;Thanks to everybody who has supported this book. I can&amp;#8217;t express how much I appreciate your attention and enthusiasm. You have made working on this book a pleasure.&lt;/p&gt;


	&lt;p&gt;Here&amp;#8217;s what this means for you:&lt;/p&gt;


	&lt;ul&gt;
	&lt;li&gt;The current free &amp;#8220;Getting Started with Rails Testing&amp;#8221; ebook will continue to be available. If, at some time in the future, there&amp;#8217;s a better Getting Started tutorial in the Pragmatic book, it may be offered as a replacement.&lt;/li&gt;
	&lt;/ul&gt;


	&lt;ul&gt;
	&lt;li&gt;The update site for current &lt;em&gt;Rails Test Prescription&lt;/em&gt; owners will continue to be available for the foreseeable future.&lt;/li&gt;
	&lt;/ul&gt;


	&lt;ul&gt;
	&lt;li&gt;There will be one more official update to the current &lt;em&gt;Rails Test Prescriptions&lt;/em&gt;, probably around the end of August. This will wrap up the chapter or two I&amp;#8217;m working on, and tie up some other loose ends.&lt;/li&gt;
	&lt;/ul&gt;


	&lt;ul&gt;
	&lt;li&gt;After that, errata and information about changes to test tools will most likely be handled via this blog and an errata page on this site.&lt;/li&gt;
	&lt;/ul&gt;


	&lt;ul&gt;
	&lt;li&gt;It&amp;#8217;s relevant to mention that this update would likely have been the last new content in the book even without Pragmatic&amp;#8217;s interest.&lt;/li&gt;
	&lt;/ul&gt;


	&lt;ul&gt;
	&lt;li&gt;The current version of &amp;#8220;Rails Test Prescriptions&amp;#8221; will go off-sale, and will be removed from Lulu.com as of August 28, 2009.&lt;/li&gt;
	&lt;/ul&gt;


	&lt;p&gt;This all happened quickly. As much as I&amp;#8217;ve loved self-publishing, I&amp;#8217;m looking forward to working with Pragmatic. A few weeks ago, after Gregg Pollack&amp;#8217;s mention on the Rails weblog spiked sales for several days, I figured that there was never going to be a better time, and I submitted the book to Pragmatic. The theory being that if they said no, I still was enjoying doing the book myself, but if they said yes, it&amp;#8217;d really be an opportunity to take this project to the next level.&lt;/p&gt;


	&lt;p&gt;Pragmatic surprised me not just by agreeing to publish the book, but by turning the whole thing around so quickly&amp;#8212;just about a month from initial contact to signed contract. And even though I would definitely self publish again, I&amp;#8217;m looking forward to some help on the parts of the book process I&amp;#8217;m not that strong on (cover design, marketing, etc&amp;#8230;).&lt;/p&gt;


	&lt;p&gt;I will know more about what happens next later this week after I start talking with my editor at Pragmatic. I suspect some reorganization will take place, as the book changes from merely individual chapters to a more coherent whole. Timeline, exact content, and other issues have yet to be determined, but I&amp;#8217;ll keep you all posted here as I know things.&lt;/p&gt;


	&lt;p&gt;Thanks again to all those who have written me with praise and criticism, and especially to those of you who have pointed out errors of fact, grammar, or clarity. This process has been much more fun because of you, and the book is better for your attention.&lt;/p&gt;&lt;div class="feedflare"&gt;
&lt;a href="http://feeds.feedburner.com/~ff/railsprescriptions?a=-m4W1pVjaAM:K8u7cPHDDYk:yIl2AUoC8zA"&gt;&lt;img src="http://feeds.feedburner.com/~ff/railsprescriptions?d=yIl2AUoC8zA" border="0"&gt;&lt;/img&gt;&lt;/a&gt; &lt;a href="http://feeds.feedburner.com/~ff/railsprescriptions?a=-m4W1pVjaAM:K8u7cPHDDYk:63t7Ie-LG7Y"&gt;&lt;img src="http://feeds.feedburner.com/~ff/railsprescriptions?d=63t7Ie-LG7Y" border="0"&gt;&lt;/img&gt;&lt;/a&gt; &lt;a href="http://feeds.feedburner.com/~ff/railsprescriptions?a=-m4W1pVjaAM:K8u7cPHDDYk:V_sGLiPBpWU"&gt;&lt;img src="http://feeds.feedburner.com/~ff/railsprescriptions?i=-m4W1pVjaAM:K8u7cPHDDYk:V_sGLiPBpWU" border="0"&gt;&lt;/img&gt;&lt;/a&gt; &lt;a href="http://feeds.feedburner.com/~ff/railsprescriptions?a=-m4W1pVjaAM:K8u7cPHDDYk:F7zBnMyn0Lo"&gt;&lt;img src="http://feeds.feedburner.com/~ff/railsprescriptions?i=-m4W1pVjaAM:K8u7cPHDDYk:F7zBnMyn0Lo" border="0"&gt;&lt;/img&gt;&lt;/a&gt;
&lt;/div&gt;&lt;img src="http://feeds.feedburner.com/~r/railsprescriptions/~4/-m4W1pVjaAM" height="1" width="1"/&gt;</content>
  <feedburner:origLink>http://blog.railsprescriptions.com/2009/08/18/rails-test-prescriptions-to-be-published-by-pragmatic</feedburner:origLink></entry>
  <entry>
    <id>tag:blog.railsprescriptions.com,2008:Post/53</id>
    <published>2009-07-06T22:30:19-05:00</published>
    <updated>2009-07-06T22:30:19-05:00</updated>
    <link type="text/html" href="http://feedproxy.google.com/~r/railsprescriptions/~3/Ir_jO_cG5cM/version-006-now-available" rel="alternate" />
    <title>Version 006 Now Available</title>
    <content type="html">&lt;p&gt;Well, it&amp;#8217;s been way too long, but revision 006 is now up at Lulu and on the download page of this site.&lt;/p&gt;


	&lt;p&gt;The two biggest changes are a new chapter on Rcov, and a general read-through and edit of the entire manuscript. Here&amp;#8217;s the entire changelog:&lt;/p&gt;


	&lt;ul&gt;
	&lt;li&gt;New chapter on Rcov &lt;/li&gt;
		&lt;li&gt;Typos fixed from Dana Jones, Keith Gautreaux, and Greg Lockwood &lt;/li&gt;
		&lt;li&gt;General fixes to things like external links &lt;/li&gt;
		&lt;li&gt;Some more clarity in the mocks chapter &lt;/li&gt;
		&lt;li&gt;Better discussion of setup blocks in setup chapter, also a much more 
detailed discussion of contexts and nested contexts &lt;/li&gt;
		&lt;li&gt;Error in RSpec matchers section corrected &lt;/li&gt;
		&lt;li&gt;Cucumber section benefits from more experience &lt;/li&gt;
		&lt;li&gt;Couple of layout experiments. Per a suggestion from Jim Zajkowski, I&amp;#8217;ve 
moved the sidebars to the right to enhance readability. I also changed the 
code font to Anonymous Pro.&lt;/li&gt;
	&lt;/ul&gt;


	&lt;p&gt;Also, welcome to all the new readers, and a big thanks to Gregg Pollack for recognizing this book on the Ruby on Rails weblog. Hope you all like it.&lt;/p&gt;&lt;div class="feedflare"&gt;
&lt;a href="http://feeds.feedburner.com/~ff/railsprescriptions?a=Ir_jO_cG5cM:7J2vzmy_h4w:yIl2AUoC8zA"&gt;&lt;img src="http://feeds.feedburner.com/~ff/railsprescriptions?d=yIl2AUoC8zA" border="0"&gt;&lt;/img&gt;&lt;/a&gt; &lt;a href="http://feeds.feedburner.com/~ff/railsprescriptions?a=Ir_jO_cG5cM:7J2vzmy_h4w:63t7Ie-LG7Y"&gt;&lt;img src="http://feeds.feedburner.com/~ff/railsprescriptions?d=63t7Ie-LG7Y" border="0"&gt;&lt;/img&gt;&lt;/a&gt; &lt;a href="http://feeds.feedburner.com/~ff/railsprescriptions?a=Ir_jO_cG5cM:7J2vzmy_h4w:V_sGLiPBpWU"&gt;&lt;img src="http://feeds.feedburner.com/~ff/railsprescriptions?i=Ir_jO_cG5cM:7J2vzmy_h4w:V_sGLiPBpWU" border="0"&gt;&lt;/img&gt;&lt;/a&gt; &lt;a href="http://feeds.feedburner.com/~ff/railsprescriptions?a=Ir_jO_cG5cM:7J2vzmy_h4w:F7zBnMyn0Lo"&gt;&lt;img src="http://feeds.feedburner.com/~ff/railsprescriptions?i=Ir_jO_cG5cM:7J2vzmy_h4w:F7zBnMyn0Lo" border="0"&gt;&lt;/img&gt;&lt;/a&gt;
&lt;/div&gt;&lt;img src="http://feeds.feedburner.com/~r/railsprescriptions/~4/Ir_jO_cG5cM" height="1" width="1"/&gt;</content>
  <feedburner:origLink>http://blog.railsprescriptions.com/2009/07/06/version-006-now-available</feedburner:origLink></entry>
  <entry>
    <id>tag:blog.railsprescriptions.com,2008:Post/52</id>
    <published>2009-07-01T21:50:39-05:00</published>
    <updated>2009-07-01T21:50:39-05:00</updated>
    <link type="text/html" href="http://feedproxy.google.com/~r/railsprescriptions/~3/huTEU1Tga3c/testing-practices-interview-7-mike-gunderloy" rel="alternate" />
    <title>Testing Practices Interview 7: Mike Gunderloy</title>
    <content type="html">&lt;p&gt;The Testing Practices Interview series is back. Our interviewee is Mike Gunderloy, publisher of &lt;a href="http://afreshcup.com/"&gt;A Fresh Cup&lt;/a&gt; and member of the &lt;a href="http://guides.rubyonrails.org/credits.html"&gt;Rails Documentation Team&lt;/a&gt;.&lt;/p&gt;


	&lt;p&gt;Mike has recently released &lt;a href="http://www.railsrescuebook.com/"&gt;Rails Rescue Handbook&lt;/a&gt;, a guide to taking over Rails projects that have been abandoned or are otherwise new to you. It&amp;#8217;s a &lt;span class="caps"&gt;DRM&lt;/span&gt;-free &lt;span class="caps"&gt;PDF&lt;/span&gt; file, available for $9.95, and it&amp;#8217;s full of useful tips and advice, highly recommended.&lt;/p&gt;


	&lt;p&gt;So, here&amp;#8217;s Mike.&lt;/p&gt;


	&lt;h3&gt; How did you get into writing tests regularly? Did you have a specific moment when you realized automated testing was valuable?&lt;/h3&gt;


	&lt;p&gt;To some extent I&amp;#8217;ve been testing for 30 years, ever since I got started programming. I don&amp;#8217;t see a strong distinction in purpose between manual testing, debugging, and automated testing: they&amp;#8217;re all ways to make sure your code does what you think it does.&lt;/p&gt;


	&lt;p&gt;As far as automated testing, though, my first exposure was during some Microsoft contracts 10 years ago or thereabouts. But on those big projects, automated tests were maintained by the testers, not by the developers; completely different group of people and tools. I did dabble a bit with tools like TestDriven.NET, but ultimately, it was moving over to Ruby/Rails that got me into a truly test-infected environment.&lt;/p&gt;


	&lt;p&gt;So I&amp;#8217;ve pretty much &amp;#8220;always&amp;#8221; known that testing was valuable, and even seen the benefits of automated testing for quite a long while. It&amp;#8217;s been an evolutionary step from there to developer-written automated tests and &lt;span class="caps"&gt;TDD&lt;/span&gt; &amp;#8211; which I am not religious about. I use &lt;span class="caps"&gt;TDD&lt;/span&gt; when it suits me, and skip it when it doesn&amp;#8217;t.&lt;/p&gt;


	&lt;h3&gt;What is your Rails testing process? What kinds of tests do you write, and what tools do you use to write them?&lt;/h3&gt;


	&lt;p&gt;Probably 90% of the tests I write these days are functional and unit tests, and the other 10% integration tests. As a subcontractor to many different teams, I&amp;#8217;ve had the chance to experiment with a great many tools. The exposure has left me unconvinced that there&amp;#8217;s a good &lt;span class="caps"&gt;ROI&lt;/span&gt; on either view testing or Cucumber-style &lt;span class="caps"&gt;BDD&lt;/span&gt;, though I recognize that reasonable people differ on this (and that different teams or different projects might have left me with a different impression).&lt;/p&gt;


	&lt;p&gt;When I have the luxury of picking my own tools these days, I find myself using Test::Unit, Shoulda, Mocha, and Object Daddy most often, with a side of parallel_test when the test suite grows. I&amp;#8217;ve played with a couple of different CI servers as well, and at the moment I&amp;#8217;m leaning towards Cerberus.&lt;/p&gt;


	&lt;p&gt;As far as process goes it&amp;#8217;s a mix of &lt;span class="caps"&gt;TDD&lt;/span&gt; and more traditional top-down decomposition development with tests as I go; some of this just reflects my age in the industry, I&amp;#8217;m sure. I do lots of little code spikes via git branching, and those usually don&amp;#8217;t have tests involved; then I&amp;#8217;ll come back to the branch I&amp;#8217;m working on when I know where I&amp;#8217;m going and write the tests and code together.&lt;/p&gt;


	&lt;h3&gt;What&amp;#8217;s the most interesting thing you&amp;#8217;ve discovered about testing recently?&lt;/h3&gt;


	&lt;p&gt;I&amp;#8217;ve been spending a fair amount of time doing code reviews lately. It astonishes me how many teams &amp;#8211; even good teams writing good code &amp;#8211; have little to no test coverage. The fact that the code is good indicates that testing is not 100% essential &amp;#8211; the fact that it has holes shows how it would help. And it&amp;#8217;s also evident that the wider Rails community isn&amp;#8217;t as test-infected as we like to think it is.&lt;/p&gt;


	&lt;h3&gt;Is there a tool you wish you had for testing that you don&amp;#8217;t think
currently exists?&lt;/h3&gt;


	&lt;p&gt;I wouldn&amp;#8217;t mind finding a good open source record-and-playback tool to use for browser-based integration and maybe even view testing. That used to be pretty useful, back in the day. For all I know one exists and I haven&amp;#8217;t gone looking for it. I&amp;#8217;d also like something that could do an automatic &amp;#8220;lint&amp;#8221; looking for cross-browser issues.&lt;/p&gt;


	&lt;h3&gt;What advice would you give somebody looking to write more effective tests?&lt;/h3&gt;


	&lt;p&gt;0) Buy Noel&amp;#8217;s book. 1) Write tests. Like anything else, you improve if you do more of it. 2) Find a project you like and look at their tests to see how they did it. If you find patterns you can steal, go for it.&lt;/p&gt;&lt;div class="feedflare"&gt;
&lt;a href="http://feeds.feedburner.com/~ff/railsprescriptions?a=huTEU1Tga3c:Rp9fiQ1rLhI:yIl2AUoC8zA"&gt;&lt;img src="http://feeds.feedburner.com/~ff/railsprescriptions?d=yIl2AUoC8zA" border="0"&gt;&lt;/img&gt;&lt;/a&gt; &lt;a href="http://feeds.feedburner.com/~ff/railsprescriptions?a=huTEU1Tga3c:Rp9fiQ1rLhI:63t7Ie-LG7Y"&gt;&lt;img src="http://feeds.feedburner.com/~ff/railsprescriptions?d=63t7Ie-LG7Y" border="0"&gt;&lt;/img&gt;&lt;/a&gt; &lt;a href="http://feeds.feedburner.com/~ff/railsprescriptions?a=huTEU1Tga3c:Rp9fiQ1rLhI:V_sGLiPBpWU"&gt;&lt;img src="http://feeds.feedburner.com/~ff/railsprescriptions?i=huTEU1Tga3c:Rp9fiQ1rLhI:V_sGLiPBpWU" border="0"&gt;&lt;/img&gt;&lt;/a&gt; &lt;a href="http://feeds.feedburner.com/~ff/railsprescriptions?a=huTEU1Tga3c:Rp9fiQ1rLhI:F7zBnMyn0Lo"&gt;&lt;img src="http://feeds.feedburner.com/~ff/railsprescriptions?i=huTEU1Tga3c:Rp9fiQ1rLhI:F7zBnMyn0Lo" border="0"&gt;&lt;/img&gt;&lt;/a&gt;
&lt;/div&gt;&lt;img src="http://feeds.feedburner.com/~r/railsprescriptions/~4/huTEU1Tga3c" height="1" width="1"/&gt;</content>
  <feedburner:origLink>http://blog.railsprescriptions.com/2009/07/01/testing-practices-interview-7-mike-gunderloy</feedburner:origLink></entry>
  <entry>
    <id>tag:blog.railsprescriptions.com,2008:Post/51</id>
    <published>2009-06-18T14:54:00-05:00</published>
    <updated>2009-06-18T14:54:50-05:00</updated>
    <link type="text/html" href="http://feedproxy.google.com/~r/railsprescriptions/~3/7XnP4r_4K9c/its-been-a-while" rel="alternate" />
    <title>It's been a while</title>
    <content type="html">&lt;p&gt;Okay, it&amp;#8217;s been a while since I&amp;#8217;ve posted here and some things have built up. Here&amp;#8217;s what&amp;#8217;s going on.&lt;/p&gt;


	&lt;h4&gt;Chicago Ruby Talk&lt;/h4&gt;


	&lt;p&gt;First off, for those of you in and around Chicago, I&amp;#8217;ll be presenting at a ChicagoRuby.org meeting downtown on Tuesday, June 23rd at 6:00 PM. &lt;a href="http://www.chicagoruby.org/articles/2009/05/26/rails-test-prescriptions-downtown/"&gt;Click here for details&lt;/a&gt;. The talk will be on the general topic of good testing practices, especially for getting started with testing.&lt;/p&gt;


	&lt;h4&gt;Book Status&lt;/h4&gt;


	&lt;p&gt;I&amp;#8217;ve been working through reading the book, making edits, incorporating comments that I got from &lt;a href="http://www.sterlingrosedesign.com/"&gt;Dana Jones&lt;/a&gt;, making sure everything is up-to-date and that I still agree with everything. It&amp;#8217;s been going slowly. I currently expect the next update to be the 29th, rather than the 22nd, but I also hope that will include new sections on Rcov and Webrat.&lt;/p&gt;


	&lt;h4&gt;Twitter&lt;/h4&gt;


	&lt;p&gt;I&amp;#8217;ve started posting a testing tip every day (well, not sure about weekends) on the twitter @railsrx account&amp;#8212;take a look.&lt;/p&gt;


	&lt;h4&gt;Registration Email&lt;/h4&gt;


	&lt;p&gt;If you&amp;#8217;ve registered your book at the railsrx site, and haven&amp;#8217;t gotten an return email, try and log in anyway, I&amp;#8217;ve probably approved you. We&amp;#8217;re having some issues apparently with the response emails getting marked as spam and bouncing, which we&amp;#8217;re working on mitigating.&lt;/p&gt;


	&lt;h4&gt;Pathfinder Blog&lt;/h4&gt;


	&lt;p&gt;Over on the Pathfinder blog, I&amp;#8217;ve had some testing related posts in the last few weeks:&lt;/p&gt;


	&lt;ul&gt;
	&lt;li&gt;&lt;a href="http://www.pathf.com/blogs/2009/05/rails-testing-frequently-asked-questions-the-non-code-version/"&gt;Rails Testing Frequently Asked Questions — The Non-Code Version&lt;/a&gt;&lt;/li&gt;
	&lt;/ul&gt;


	&lt;ul&gt;
	&lt;li&gt;&lt;a href="http://www.pathf.com/blogs/2009/05/factory-tools-for-fixture-replacement-a-comparison/"&gt;Factory tools for fixture replacement: a comparison&lt;/a&gt;&lt;/li&gt;
	&lt;/ul&gt;


	&lt;ul&gt;
	&lt;li&gt;&lt;a href="http://www.pathf.com/blogs/2009/05/comparing-ruby-mock-object-libraries/"&gt;Comparing Ruby Mock Object Libraries&lt;/a&gt;&lt;/li&gt;
	&lt;/ul&gt;


	&lt;ul&gt;
	&lt;li&gt;&lt;a href="http://www.pathf.com/blogs/2009/06/the-return-of-the-cucumber/"&gt;The Return of the Cucumber&lt;/a&gt;&lt;/li&gt;
	&lt;/ul&gt;&lt;div class="feedflare"&gt;
&lt;a href="http://feeds.feedburner.com/~ff/railsprescriptions?a=7XnP4r_4K9c:LwB8z4jN1Zc:yIl2AUoC8zA"&gt;&lt;img src="http://feeds.feedburner.com/~ff/railsprescriptions?d=yIl2AUoC8zA" border="0"&gt;&lt;/img&gt;&lt;/a&gt; &lt;a href="http://feeds.feedburner.com/~ff/railsprescriptions?a=7XnP4r_4K9c:LwB8z4jN1Zc:63t7Ie-LG7Y"&gt;&lt;img src="http://feeds.feedburner.com/~ff/railsprescriptions?d=63t7Ie-LG7Y" border="0"&gt;&lt;/img&gt;&lt;/a&gt; &lt;a href="http://feeds.feedburner.com/~ff/railsprescriptions?a=7XnP4r_4K9c:LwB8z4jN1Zc:V_sGLiPBpWU"&gt;&lt;img src="http://feeds.feedburner.com/~ff/railsprescriptions?i=7XnP4r_4K9c:LwB8z4jN1Zc:V_sGLiPBpWU" border="0"&gt;&lt;/img&gt;&lt;/a&gt; &lt;a href="http://feeds.feedburner.com/~ff/railsprescriptions?a=7XnP4r_4K9c:LwB8z4jN1Zc:F7zBnMyn0Lo"&gt;&lt;img src="http://feeds.feedburner.com/~ff/railsprescriptions?i=7XnP4r_4K9c:LwB8z4jN1Zc:F7zBnMyn0Lo" border="0"&gt;&lt;/img&gt;&lt;/a&gt;
&lt;/div&gt;&lt;img src="http://feeds.feedburner.com/~r/railsprescriptions/~4/7XnP4r_4K9c" height="1" width="1"/&gt;</content>
  <feedburner:origLink>http://blog.railsprescriptions.com/2009/06/18/its-been-a-while</feedburner:origLink></entry>
  <entry>
    <id>tag:blog.railsprescriptions.com,2008:Post/50</id>
    <published>2009-05-25T23:08:54-05:00</published>
    <updated>2009-05-25T23:08:54-05:00</updated>
    <link type="text/html" href="http://feedproxy.google.com/~r/railsprescriptions/~3/pAbP-7x_Lz8/version-005-now-available" rel="alternate" />
    <title>Version 005 Now Available</title>
    <content type="html">&lt;p&gt;This time around we have the following:&lt;/p&gt;


	&lt;ul&gt;
	&lt;li&gt;Long chapter on RSpec&lt;/li&gt;
		&lt;li&gt;Messed with the cover some more&lt;/li&gt;
		&lt;li&gt;Many typos fixed, courtesy of &lt;a href="http://www.sterlingrosedesign.com/"&gt;Dana Jones&lt;/a&gt;&lt;/li&gt;
	&lt;/ul&gt;


	&lt;p&gt;The RSpec section turned out to be the longest in the book by far, and kind of crowded out anything else I was hoping to get in this iteration.&lt;/p&gt;


	&lt;p&gt;Big thanks to Dana for catching a lot of typos and places where the text was unclear.&lt;/p&gt;


	&lt;p&gt;Next time around, it&amp;#8217;s looking good for Webrat, among other things.&lt;/p&gt;


	&lt;p&gt;Update via &lt;a href="http://www.railsprescriptions.com/products"&gt;http://www.railsprescriptions.com/products&lt;/a&gt;.&lt;/p&gt;


	&lt;p&gt;Thanks.&lt;/p&gt;&lt;div class="feedflare"&gt;
&lt;a href="http://feeds.feedburner.com/~ff/railsprescriptions?a=pAbP-7x_Lz8:cxEXAIQ6kN0:yIl2AUoC8zA"&gt;&lt;img src="http://feeds.feedburner.com/~ff/railsprescriptions?d=yIl2AUoC8zA" border="0"&gt;&lt;/img&gt;&lt;/a&gt; &lt;a href="http://feeds.feedburner.com/~ff/railsprescriptions?a=pAbP-7x_Lz8:cxEXAIQ6kN0:63t7Ie-LG7Y"&gt;&lt;img src="http://feeds.feedburner.com/~ff/railsprescriptions?d=63t7Ie-LG7Y" border="0"&gt;&lt;/img&gt;&lt;/a&gt; &lt;a href="http://feeds.feedburner.com/~ff/railsprescriptions?a=pAbP-7x_Lz8:cxEXAIQ6kN0:V_sGLiPBpWU"&gt;&lt;img src="http://feeds.feedburner.com/~ff/railsprescriptions?i=pAbP-7x_Lz8:cxEXAIQ6kN0:V_sGLiPBpWU" border="0"&gt;&lt;/img&gt;&lt;/a&gt; &lt;a href="http://feeds.feedburner.com/~ff/railsprescriptions?a=pAbP-7x_Lz8:cxEXAIQ6kN0:F7zBnMyn0Lo"&gt;&lt;img src="http://feeds.feedburner.com/~ff/railsprescriptions?i=pAbP-7x_Lz8:cxEXAIQ6kN0:F7zBnMyn0Lo" border="0"&gt;&lt;/img&gt;&lt;/a&gt;
&lt;/div&gt;&lt;img src="http://feeds.feedburner.com/~r/railsprescriptions/~4/pAbP-7x_Lz8" height="1" width="1"/&gt;</content>
  <feedburner:origLink>http://blog.railsprescriptions.com/2009/05/25/version-005-now-available</feedburner:origLink></entry>
  <entry>
    <id>tag:blog.railsprescriptions.com,2008:Post/49</id>
    <published>2009-05-19T13:18:05-05:00</published>
    <updated>2009-05-19T13:18:05-05:00</updated>
    <link type="text/html" href="http://feedproxy.google.com/~r/railsprescriptions/~3/TFkZinUtyj8/coming-attractions" rel="alternate" />
    <title>Coming Attractions</title>
    <content type="html">&lt;p&gt;Here&amp;#8217;s what&amp;#8217;s up.&lt;/p&gt;


	&lt;p&gt;The next book update will be next week, either Sunday or Monday, depending on how the holiday weekend goes. The lineup:&lt;/p&gt;


	&lt;ul&gt;
	&lt;li&gt;New chapter on RSpec. This looks like it&amp;#8217;s going to be&amp;#8230; thorough. As with pretty much every big-ticket section of this book, I always wind up writing more detail than I originally think I&amp;#8217;m going to.&lt;/li&gt;
	&lt;/ul&gt;


	&lt;ul&gt;
	&lt;li&gt;General edit of the book, incorporating some great proofreading notes from &lt;a href="http://www.sterlingrosedesign.com/"&gt;Dana Jones&lt;/a&gt; and adding references to RSpec in other chapters as needed.&lt;/li&gt;
	&lt;/ul&gt;


	&lt;ul&gt;
	&lt;li&gt;If time permits, I&amp;#8217;ll either do a relatively short tool article (rcov is a possibility), or add on to one of the style and rationale pieces.&lt;/li&gt;
	&lt;/ul&gt;


	&lt;p&gt;Those of you who have reported the issue with text search in the book using Apple&amp;#8217;s Preview or Skim, which I think both use the same core Mac OS library&amp;#8212;I&amp;#8217;m trying to track it down. The makers of the PrinceXML software that generates the &lt;span class="caps"&gt;PDF&lt;/span&gt; point to the fact that everything works fine in Adobe Reader and say it&amp;#8217;s a Skim problem. The Skim team has been a little harder to track down, but they aren&amp;#8217;t convinced. More news when, or if, events warrant. (It does seem like, whoever is at fault, there&amp;#8217;s a setting I&amp;#8217;m using that&amp;#8217;s exposing the bug. Sure wish I knew what it was.)&lt;/p&gt;&lt;div class="feedflare"&gt;
&lt;a href="http://feeds.feedburner.com/~ff/railsprescriptions?a=TFkZinUtyj8:YMAH1eWTotM:yIl2AUoC8zA"&gt;&lt;img src="http://feeds.feedburner.com/~ff/railsprescriptions?d=yIl2AUoC8zA" border="0"&gt;&lt;/img&gt;&lt;/a&gt; &lt;a href="http://feeds.feedburner.com/~ff/railsprescriptions?a=TFkZinUtyj8:YMAH1eWTotM:63t7Ie-LG7Y"&gt;&lt;img src="http://feeds.feedburner.com/~ff/railsprescriptions?d=63t7Ie-LG7Y" border="0"&gt;&lt;/img&gt;&lt;/a&gt; &lt;a href="http://feeds.feedburner.com/~ff/railsprescriptions?a=TFkZinUtyj8:YMAH1eWTotM:V_sGLiPBpWU"&gt;&lt;img src="http://feeds.feedburner.com/~ff/railsprescriptions?i=TFkZinUtyj8:YMAH1eWTotM:V_sGLiPBpWU" border="0"&gt;&lt;/img&gt;&lt;/a&gt; &lt;a href="http://feeds.feedburner.com/~ff/railsprescriptions?a=TFkZinUtyj8:YMAH1eWTotM:F7zBnMyn0Lo"&gt;&lt;img src="http://feeds.feedburner.com/~ff/railsprescriptions?i=TFkZinUtyj8:YMAH1eWTotM:F7zBnMyn0Lo" border="0"&gt;&lt;/img&gt;&lt;/a&gt;
&lt;/div&gt;&lt;img src="http://feeds.feedburner.com/~r/railsprescriptions/~4/TFkZinUtyj8" height="1" width="1"/&gt;</content>
  <feedburner:origLink>http://blog.railsprescriptions.com/2009/05/19/coming-attractions</feedburner:origLink></entry>
  <entry>
    <id>tag:blog.railsprescriptions.com,2008:Post/48</id>
    <published>2009-05-12T23:33:49-05:00</published>
    <updated>2009-05-12T23:33:49-05:00</updated>
    <link type="text/html" href="http://feedproxy.google.com/~r/railsprescriptions/~3/2Ss5irJ44Sc/a-few-good-updates" rel="alternate" />
    <title>A Few Good Updates</title>
    <content type="html">&lt;ul&gt;
	&lt;li&gt;For the rest of this week, I&amp;#8217;m answering questions in the forums at &lt;a href="http://rubylearning.org/class/mod/forum/view.php?id=1237"&gt;Ruby Learning.org&lt;/a&gt;&amp;#8212;stop by and ask a question if you&amp;#8217;ve got one. Posters are eligible to win free copies of the book.&lt;/li&gt;
	&lt;/ul&gt;


	&lt;ul&gt;
	&lt;li&gt;Unsurprisingly, RailsConf was something of a lost week in terms of writing on the book, so I&amp;#8217;ve decided to skip a week in the update schedule. The next update will by May 25th, and it will include a new section on RSpec, a new section converting my RailsConf presentation back into text, and something else as time permits. I&amp;#8217;m actually hoping to get another edit read on the entire text.&lt;/li&gt;
	&lt;/ul&gt;


	&lt;ul&gt;
	&lt;li&gt;I forgot to mention one of my favorite sessions of RailsConf, the Teaching Rails BoF that was moderated by &lt;a href="http://www.viget.com/about/team/bscofield"&gt;Ben Scofield&lt;/a&gt;. There was a lot of great energy in the room and a number of people working on related efforts. Checkout &lt;a href="http://www.railsbridge.com"&gt;RailsBridge&lt;/a&gt; as well as the &lt;a href="http://railstutor.org/"&gt;Rails Tutor&lt;/a&gt; project. Also keep an eye out for a Rails Mentoring program coming online soon.&lt;/li&gt;
	&lt;/ul&gt;&lt;div class="feedflare"&gt;
&lt;a href="http://feeds.feedburner.com/~ff/railsprescriptions?a=2Ss5irJ44Sc:9wJcAeBQa-4:yIl2AUoC8zA"&gt;&lt;img src="http://feeds.feedburner.com/~ff/railsprescriptions?d=yIl2AUoC8zA" border="0"&gt;&lt;/img&gt;&lt;/a&gt; &lt;a href="http://feeds.feedburner.com/~ff/railsprescriptions?a=2Ss5irJ44Sc:9wJcAeBQa-4:63t7Ie-LG7Y"&gt;&lt;img src="http://feeds.feedburner.com/~ff/railsprescriptions?d=63t7Ie-LG7Y" border="0"&gt;&lt;/img&gt;&lt;/a&gt; &lt;a href="http://feeds.feedburner.com/~ff/railsprescriptions?a=2Ss5irJ44Sc:9wJcAeBQa-4:V_sGLiPBpWU"&gt;&lt;img src="http://feeds.feedburner.com/~ff/railsprescriptions?i=2Ss5irJ44Sc:9wJcAeBQa-4:V_sGLiPBpWU" border="0"&gt;&lt;/img&gt;&lt;/a&gt; &lt;a href="http://feeds.feedburner.com/~ff/railsprescriptions?a=2Ss5irJ44Sc:9wJcAeBQa-4:F7zBnMyn0Lo"&gt;&lt;img src="http://feeds.feedburner.com/~ff/railsprescriptions?i=2Ss5irJ44Sc:9wJcAeBQa-4:F7zBnMyn0Lo" border="0"&gt;&lt;/img&gt;&lt;/a&gt;
&lt;/div&gt;&lt;img src="http://feeds.feedburner.com/~r/railsprescriptions/~4/2Ss5irJ44Sc" height="1" width="1"/&gt;</content>
  <feedburner:origLink>http://blog.railsprescriptions.com/2009/05/12/a-few-good-updates</feedburner:origLink></entry>
  <entry>
    <id>tag:blog.railsprescriptions.com,2008:Post/47</id>
    <published>2009-05-10T22:20:45-05:00</published>
    <updated>2009-05-10T22:20:45-05:00</updated>
    <link type="text/html" href="http://feedproxy.google.com/~r/railsprescriptions/~3/Jyd9ZG5_7Vw/a-testers-guide-to-railsconf-2009" rel="alternate" />
    <title>A Testers Guide To RailsConf 2009</title>
    <content type="html">&lt;p&gt;Testing was a popular topic at RailsConf this year, with a lot of sessions on various testing tools and a lot of prominent interest in testing process.&lt;/p&gt;


	&lt;p&gt;Here&amp;#8217;s a quick look at the sessions that were interesting from a testing perspective. And also my session, which was from a testing perspective as well. Where applicable, links go to the presentation slides.&lt;/p&gt;


	&lt;h4&gt;Testing, Design, and Refactoring, Jim Weirich and Joe O&amp;#8217;Brien.&lt;/h4&gt;


	&lt;p&gt;This was a tutorial session that I caught a tiny piece of. Weirich has a well-deserved reputation for running great training sessions, and this one seemed effective.&lt;/p&gt;


	&lt;h4&gt;&lt;a href="http://assets.en.oreilly.com/1/event/24/Don't%20Mock%20Yourself%20Out%20Presentation.pdf"&gt;Don&amp;#8217;t Mock Yourself Out, David Chelimsky&lt;/a&gt;&lt;/h4&gt;


	&lt;p&gt;Saw this one. Chelimsky, who is the lead developer of RSpec, gave a nice overview of how to use mock objects, and even better, how to use them well.&lt;/p&gt;


	&lt;p&gt;He also introduced a couple of new tools. One was &lt;code&gt;stub_chain&lt;/code&gt;, a new feature of the RSpec mock framework. The use case here is when you had to create a series of mock objects to cover a long chain of objects. In the old way, you needed to create a bunch of intermediate objects that you didn&amp;#8217;t much care about:&lt;/p&gt;


&lt;pre&gt;
  member = stub_model(User)
  friends = stub()
  friend = stub_model(User)
  User.stub(:find).and_return(member)
  member.stub(:friends).and_return(friends)
  friends.stub(:favorite).and_return(friend)
&lt;/pre&gt;

	&lt;p&gt;The new way, with &lt;code&gt;stub_chain&lt;/code&gt;, is much more direct.&lt;/p&gt;


&lt;pre&gt;
  friend = stub_model(User)
  User.stub_chain(:find, :friends, :favorite).and_return(friend)
&lt;/pre&gt;

	&lt;p&gt;In both cases &lt;code&gt;User.find(1).friends.favorite&lt;/code&gt; will return &lt;code&gt;friend&lt;/code&gt;.&lt;/p&gt;


	&lt;p&gt;Another new tool is Stubble, an &lt;span class="caps"&gt;API&lt;/span&gt; for easily mocking ActiveRecord objects. Right now it works with RSpec, but Chelimsky hopes that it will work with other frameworks soon. Within a &lt;code&gt;stubbing&lt;/code&gt; block, the ActiveRecord class specified has &lt;code&gt;find&lt;/code&gt;, &lt;code&gt;save&lt;/code&gt;, and the like stubbed out so that it will not need to contact the database.&lt;/p&gt;


&lt;pre&gt;
  stubbing(Registration) do
    post 'create'
    response.should redirect_to(registrations_path)
  end
&lt;/pre&gt;

	&lt;p&gt;These tools, along with some other comments at the conference, lead me to think I need to give RSpec another serious try.&lt;/p&gt;


	&lt;h4&gt;In Praise of Non-Fixtured Data, Kevin Barnes&lt;/h4&gt;


	&lt;p&gt;Missed this one.&lt;/p&gt;


	&lt;h4&gt;JavaScript Testing In Rails: Fast, Headless, In-Browser. Pick Any Three.
Larry Karnowski, Jason Rudolph&lt;/h4&gt;


	&lt;p&gt;Only caught the tail end of this one. The tool being discussed here is &lt;a href="http://github.com/relevance/blue-ridge/tree/master"&gt;Blue Ridge&lt;/a&gt;, which seems to be a composite tool making it easy to use some JavaScript test frameworks together.&lt;/p&gt;


	&lt;h4&gt;&lt;a href="http://assets.en.oreilly.com/1/event/24/Below%20and%20Beneath%20TDD_%20Test%20Last%20Development%20and%20Other%20Real-World%20Test%20Patterns%20Presentation.pdf"&gt;Below and Beneath &lt;span class="caps"&gt;TDD&lt;/span&gt;: Test Last Development and Other Real-World Test Patterns Presentation&lt;/a&gt;, by Me&lt;/h4&gt;


	&lt;p&gt;This was my talk. It was pretty process heavy and code-light. I&amp;#8217;m going to try to work the substance of it into the book sometime over the next few weeks. Anyway, people came, they said nice things, and overall I was pleased with how it went.&lt;/p&gt;


	&lt;h4&gt;&lt;a href="http://assets.en.oreilly.com/1/event/24/Quality%20Code%20with%20Cucumber%20Presentation.pdf"&gt;Quality Code With Cucumber&lt;/a&gt;, Aslak Hellesøy&lt;/h4&gt;


	&lt;p&gt;I didn&amp;#8217;t make it to this session, although I heard very good things about it from other attendees (though I did get to briefly meet Aslak during the conference). Cucumber was all over RailsConf, mentioned in several different sessions, it clearly has a lot of momentum as a useful tool.&lt;/p&gt;


	&lt;h4&gt;&lt;a href="http://assets.en.oreilly.com/1/event/24/Using%20metric_fu%20to%20Make%20Your%20Rails%20Code%20Better%20Presentation%201.pdf"&gt;Using metric_fu to make your Rails Code Better&lt;/a&gt;, Jake Scruggs&lt;/h4&gt;


	&lt;p&gt;I only realized when looking at the slides that this was a descendent of the talk that Scruggs gave at last years WindyCityRails conference. It&amp;#8217;s a good talk, and metric_fu is a useful tool.&lt;/p&gt;


	&lt;h4&gt;Working Effectively With Legacy Rails Code, Pat Maddox, BJ Clark&lt;/h4&gt;


	&lt;p&gt;Very well done session that had some suggestions that went beyond what I currently have in the book, although they started with similar advice. A couple of their suggestions include:&lt;/p&gt;


	&lt;ul&gt;
	&lt;li&gt;Silo code by making it a webservice.&lt;/li&gt;
		&lt;li&gt;Refactor back to what Rails already does. &lt;/li&gt;
		&lt;li&gt;Make everything a framework. Write micro frameworks. &lt;/li&gt;
		&lt;li&gt;Use &amp;#8220;nice&amp;#8221; metaprogramming&lt;/li&gt;
		&lt;li&gt;Use existing frameworks, then maintenance is somebody else&amp;#8217;s problem.&lt;/li&gt;
		&lt;li&gt;Look for ways to modify code behavior without changing &lt;span class="caps"&gt;API&lt;/span&gt;, like new parameters with default values&lt;/li&gt;
		&lt;li&gt;Use selenium recordings as a last-ditch way of testing.&lt;/li&gt;
	&lt;/ul&gt;


	&lt;h4&gt;&lt;a href="http://railsconf.blip.tv/file/2089545/"&gt;Robert Martin&lt;/a&gt;&lt;/h4&gt;


	&lt;p&gt;This link is to the video of the talk. This talk is included in the testing roundup because of Martin&amp;#8217;s full-throated support of test-driven development as a professional duty. I very much enjoyed this talk, though I&amp;#8217;ll freely admit that it was very much a preaching to the choir kind of a thing. (Not only did Martin strongly endorse &lt;span class="caps"&gt;TDD&lt;/span&gt;, but his diagnosis of what killed Smalltalk was very similar to rants I&amp;#8217;ve been doing for years. You&amp;#8217;ll just have to take my word for that.)&lt;/p&gt;


	&lt;h4&gt;Testing BoF session&lt;/h4&gt;


	&lt;p&gt;After some dancing back and forth over room assignments, I settled in with a couple of dozen other people for a discussion of testing that largely centered around the best way to get started and the best way to get unstuck. I had fun, but then I got to shoot my mouth off for an hour, so that may largely be redundant.&lt;/p&gt;


	&lt;h4&gt;&lt;a href="http://assets.en.oreilly.com/1/event/24/Webrat_%20Rails%20Acceptance%20Testing%20Evolved%20Presentation.pdf"&gt;Webrat: Rails Acceptance Testing Evolved&lt;/a&gt;, Bryan Helmkamp&lt;/h4&gt;


	&lt;p&gt;Solid session on Webrat that went far enough beyond beginner material that I felt that I learned some useful stuff about using Webrat in either Cucumber or Rails integration tests.&lt;/p&gt;


	&lt;p&gt;Overall, a very strong and helpful conference, even with just testing sessions counted. I&amp;#8217;ll try and get another post up with more personal comments later this week.&lt;/p&gt;&lt;div class="feedflare"&gt;
&lt;a href="http://feeds.feedburner.com/~ff/railsprescriptions?a=Jyd9ZG5_7Vw:pj6KuMHf73g:yIl2AUoC8zA"&gt;&lt;img src="http://feeds.feedburner.com/~ff/railsprescriptions?d=yIl2AUoC8zA" border="0"&gt;&lt;/img&gt;&lt;/a&gt; &lt;a href="http://feeds.feedburner.com/~ff/railsprescriptions?a=Jyd9ZG5_7Vw:pj6KuMHf73g:63t7Ie-LG7Y"&gt;&lt;img src="http://feeds.feedburner.com/~ff/railsprescriptions?d=63t7Ie-LG7Y" border="0"&gt;&lt;/img&gt;&lt;/a&gt; &lt;a href="http://feeds.feedburner.com/~ff/railsprescriptions?a=Jyd9ZG5_7Vw:pj6KuMHf73g:V_sGLiPBpWU"&gt;&lt;img src="http://feeds.feedburner.com/~ff/railsprescriptions?i=Jyd9ZG5_7Vw:pj6KuMHf73g:V_sGLiPBpWU" border="0"&gt;&lt;/img&gt;&lt;/a&gt; &lt;a href="http://feeds.feedburner.com/~ff/railsprescriptions?a=Jyd9ZG5_7Vw:pj6KuMHf73g:F7zBnMyn0Lo"&gt;&lt;img src="http://feeds.feedburner.com/~ff/railsprescriptions?i=Jyd9ZG5_7Vw:pj6KuMHf73g:F7zBnMyn0Lo" border="0"&gt;&lt;/img&gt;&lt;/a&gt;
&lt;/div&gt;&lt;img src="http://feeds.feedburner.com/~r/railsprescriptions/~4/Jyd9ZG5_7Vw" height="1" width="1"/&gt;</content>
  <feedburner:origLink>http://blog.railsprescriptions.com/2009/05/10/a-testers-guide-to-railsconf-2009</feedburner:origLink></entry>
  <entry>
    <id>tag:blog.railsprescriptions.com,2008:Post/46</id>
    <published>2009-05-03T22:55:00-05:00</published>
    <updated>2009-05-03T22:55:07-05:00</updated>
    <link type="text/html" href="http://feedproxy.google.com/~r/railsprescriptions/~3/eenvP5plySc/rails-test-prescriptions-update-version-4" rel="alternate" />
    <title>Rails Test Prescriptions update version 4</title>
    <content type="html">&lt;p&gt;Quick notes before I finish getting ready to go to RailsConf:&lt;/p&gt;


	&lt;p&gt;Rails Test Prescriptions version 4 is now available both at Lulu and at the http://www.railsprescriptions.com/products product download page. If you have purchased the book and are not a registered user, please register at http://www.railsprescriptions.com/users/new.&lt;/p&gt;


	&lt;p&gt;&lt;span class="caps"&gt;NOTE&lt;/span&gt;: The login button on this page isn&amp;#8217;t working, and I won&amp;#8217;t be able to fix it for a few hours. Go to the main home page at http://www.railsprescriptions.com and login from there.&lt;/p&gt;


	&lt;p&gt;New in this version&lt;/p&gt;


	&lt;ul&gt;
	&lt;li&gt;Complete chapter on Shoulda&lt;/li&gt;
		&lt;li&gt;Section on working with a legacy project&lt;/li&gt;
		&lt;li&gt;New cover&lt;/li&gt;
	&lt;/ul&gt;


	&lt;p&gt;Couple of notes&lt;/p&gt;


	&lt;ul&gt;
	&lt;li&gt;You may notice the file size has dropped quite a bit from the past version, don&amp;#8217;t worry, that&amp;#8217;s just the new and smaller cover image.&lt;/li&gt;
		&lt;li&gt;The Lulu front page hasn&amp;#8217;t changed (yet), but the cover of the actual &lt;span class="caps"&gt;PDF&lt;/span&gt; has.&lt;/li&gt;
	&lt;/ul&gt;


	&lt;p&gt;Meantime, see you all at RailsConf, I hope that some of you will come to my talk on Tuesday and the Testing BoF on Wednesday, or at least say hi.&lt;/p&gt;&lt;div class="feedflare"&gt;
&lt;a href="http://feeds.feedburner.com/~ff/railsprescriptions?a=eenvP5plySc:Kpmrvmf2YZs:yIl2AUoC8zA"&gt;&lt;img src="http://feeds.feedburner.com/~ff/railsprescriptions?d=yIl2AUoC8zA" border="0"&gt;&lt;/img&gt;&lt;/a&gt; &lt;a href="http://feeds.feedburner.com/~ff/railsprescriptions?a=eenvP5plySc:Kpmrvmf2YZs:63t7Ie-LG7Y"&gt;&lt;img src="http://feeds.feedburner.com/~ff/railsprescriptions?d=63t7Ie-LG7Y" border="0"&gt;&lt;/img&gt;&lt;/a&gt; &lt;a href="http://feeds.feedburner.com/~ff/railsprescriptions?a=eenvP5plySc:Kpmrvmf2YZs:V_sGLiPBpWU"&gt;&lt;img src="http://feeds.feedburner.com/~ff/railsprescriptions?i=eenvP5plySc:Kpmrvmf2YZs:V_sGLiPBpWU" border="0"&gt;&lt;/img&gt;&lt;/a&gt; &lt;a href="http://feeds.feedburner.com/~ff/railsprescriptions?a=eenvP5plySc:Kpmrvmf2YZs:F7zBnMyn0Lo"&gt;&lt;img src="http://feeds.feedburner.com/~ff/railsprescriptions?i=eenvP5plySc:Kpmrvmf2YZs:F7zBnMyn0Lo" border="0"&gt;&lt;/img&gt;&lt;/a&gt;
&lt;/div&gt;&lt;img src="http://feeds.feedburner.com/~r/railsprescriptions/~4/eenvP5plySc" height="1" width="1"/&gt;</content>
  <feedburner:origLink>http://blog.railsprescriptions.com/2009/05/03/rails-test-prescriptions-update-version-4</feedburner:origLink></entry>
  <entry>
    <id>tag:blog.railsprescriptions.com,2008:Post/45</id>
    <published>2009-05-02T16:06:23-05:00</published>
    <updated>2009-05-02T16:06:23-05:00</updated>
    <link type="text/html" href="http://feedproxy.google.com/~r/railsprescriptions/~3/Ax_vgFJNk3s/questions-where-to-test-sessions-and-roles" rel="alternate" />
    <title>Questions: Where To Test Sessions And Roles</title>
    <content type="html">&lt;p&gt;Questions, I get questions. Well, sometimes I do. Here&amp;#8217;s one. And sorry, this should have been posted here a couple of weeks ago.&lt;/p&gt;


&lt;blockquote&gt;
[In my project] Only admin users are allowed to add users or inactivate them which means among other things that the user must be an admin and logged in.  

	&lt;p&gt;I struggled for a while with trying to make a unit test work with this and had issues with the fact that there&amp;#8217;s no active session while running unit tests.  That further revealed that having this logic in the model is problematic too.  People posted ways to make this work, but it appears to be frowned upon.  Eventually, I just removed this from the model and placed it in the controller and correspondingly moved the test to the users_controller_test.rb.&lt;/p&gt;


So, the correct place for this test is the functional test for users from a testing/functionality philosophical standpoint?
&lt;/blockquote&gt;

	&lt;p&gt;Short answer:&lt;/p&gt;


	&lt;p&gt;I agree with your conclusion. Logic having to do with authentication and access should be tested in the controller test.&lt;/p&gt;


	&lt;p&gt;Longer answer:&lt;/p&gt;


	&lt;p&gt;As you correctly note, sessions are not available in the model test environment, which in my experience is a hint and a half from the Rails core team that they really don&amp;#8217;t want you doing that. Rails core is never particularly shy about denying or limiting access to things they don&amp;#8217;t want you to be able to do easily. That said, it&amp;#8217;s not that hard to fake, see the section in the book for testing helpers for an example of how to get session features in a unit test environment.&lt;/p&gt;


	&lt;p&gt;From a philosophical standpoint, you want to split the access from what is actually the logic in the model. In other words, whether you need to be a logged in admin to get to the add users page is properly a controller test, so is the idea that if you check this box, the the user&amp;#8217;s active status changes. However, if changing the users active status triggers other logic in the model, like some kind of activity history or some such, then there should be a model method with a name like &amp;#8220;inactivate&amp;#8221; and that method should be tested in the model tests.&lt;/p&gt;&lt;div class="feedflare"&gt;
&lt;a href="http://feeds.feedburner.com/~ff/railsprescriptions?a=Ax_vgFJNk3s:EMwORDrFiMw:yIl2AUoC8zA"&gt;&lt;img src="http://feeds.feedburner.com/~ff/railsprescriptions?d=yIl2AUoC8zA" border="0"&gt;&lt;/img&gt;&lt;/a&gt; &lt;a href="http://feeds.feedburner.com/~ff/railsprescriptions?a=Ax_vgFJNk3s:EMwORDrFiMw:63t7Ie-LG7Y"&gt;&lt;img src="http://feeds.feedburner.com/~ff/railsprescriptions?d=63t7Ie-LG7Y" border="0"&gt;&lt;/img&gt;&lt;/a&gt; &lt;a href="http://feeds.feedburner.com/~ff/railsprescriptions?a=Ax_vgFJNk3s:EMwORDrFiMw:V_sGLiPBpWU"&gt;&lt;img src="http://feeds.feedburner.com/~ff/railsprescriptions?i=Ax_vgFJNk3s:EMwORDrFiMw:V_sGLiPBpWU" border="0"&gt;&lt;/img&gt;&lt;/a&gt; &lt;a href="http://feeds.feedburner.com/~ff/railsprescriptions?a=Ax_vgFJNk3s:EMwORDrFiMw:F7zBnMyn0Lo"&gt;&lt;img src="http://feeds.feedburner.com/~ff/railsprescriptions?i=Ax_vgFJNk3s:EMwORDrFiMw:F7zBnMyn0Lo" border="0"&gt;&lt;/img&gt;&lt;/a&gt;
&lt;/div&gt;&lt;img src="http://feeds.feedburner.com/~r/railsprescriptions/~4/Ax_vgFJNk3s" height="1" width="1"/&gt;</content>
  <feedburner:origLink>http://blog.railsprescriptions.com/2009/05/02/questions-where-to-test-sessions-and-roles</feedburner:origLink></entry>
  <entry>
    <id>tag:blog.railsprescriptions.com,2008:Post/44</id>
    <published>2009-04-29T09:35:35-05:00</published>
    <updated>2009-04-29T09:35:35-05:00</updated>
    <link type="text/html" href="http://feedproxy.google.com/~r/railsprescriptions/~3/eHYtskQIKyM/next-update-and-railsconf" rel="alternate" />
    <title>Next Update and RailsConf</title>
    <content type="html">&lt;p&gt;News and notes&lt;/p&gt;


	&lt;ul&gt;
	&lt;li&gt;The next book update will probably be released on Sunday before I head off for RailsConf. Definitely in there will be a longish chapter on Shoulda and a bit on how to handle legacy code. Hopefully one other chapter as yet to be determined.&lt;/li&gt;
	&lt;/ul&gt;


	&lt;ul&gt;
	&lt;li&gt;Speaking of RailsConf, I&amp;#8217;ve also gotten a &lt;a href="http://en.oreilly.com/rails2009/public/schedule/detail/9201"&gt;Birds of a Feather session&lt;/a&gt; on the schedule. The title is &amp;#8220;Testing In Rails, What&amp;#8217;s New, What&amp;#8217;s Now, and What&amp;#8217;s Missing&amp;#8221;, and it&amp;#8217;ll be at 9 PM Wednesday night in Pavilion 9 &amp;#8211; 10. Come by for what I hope will be an interesting discussion of everything new in Rails Testing land.&lt;/li&gt;
	&lt;/ul&gt;


	&lt;ul&gt;
	&lt;li&gt;Also speaking of RailsConf, follow @railsrx or @noelrap on Twitter for news about giveaways. There will be at least two sets, one of which will be based on attendance at my talk, one of which will not. Free books, and some kind of merch for potential winners who already have a license for the book.&lt;/li&gt;
	&lt;/ul&gt;


	&lt;ul&gt;
	&lt;li&gt;Finally, speaking of RailsConf, I&amp;#8217;d love to meet anybody who is reading the book or this blog. I&amp;#8217;m probably the worst networker in the known universe, but please do come up and say hi if you see me around.&lt;/li&gt;
	&lt;/ul&gt;&lt;div class="feedflare"&gt;
&lt;a href="http://feeds.feedburner.com/~ff/railsprescriptions?a=eHYtskQIKyM:OYrM_0Cj-U0:yIl2AUoC8zA"&gt;&lt;img src="http://feeds.feedburner.com/~ff/railsprescriptions?d=yIl2AUoC8zA" border="0"&gt;&lt;/img&gt;&lt;/a&gt; &lt;a href="http://feeds.feedburner.com/~ff/railsprescriptions?a=eHYtskQIKyM:OYrM_0Cj-U0:63t7Ie-LG7Y"&gt;&lt;img src="http://feeds.feedburner.com/~ff/railsprescriptions?d=63t7Ie-LG7Y" border="0"&gt;&lt;/img&gt;&lt;/a&gt; &lt;a href="http://feeds.feedburner.com/~ff/railsprescriptions?a=eHYtskQIKyM:OYrM_0Cj-U0:V_sGLiPBpWU"&gt;&lt;img src="http://feeds.feedburner.com/~ff/railsprescriptions?i=eHYtskQIKyM:OYrM_0Cj-U0:V_sGLiPBpWU" border="0"&gt;&lt;/img&gt;&lt;/a&gt; &lt;a href="http://feeds.feedburner.com/~ff/railsprescriptions?a=eHYtskQIKyM:OYrM_0Cj-U0:F7zBnMyn0Lo"&gt;&lt;img src="http://feeds.feedburner.com/~ff/railsprescriptions?i=eHYtskQIKyM:OYrM_0Cj-U0:F7zBnMyn0Lo" border="0"&gt;&lt;/img&gt;&lt;/a&gt;
&lt;/div&gt;&lt;img src="http://feeds.feedburner.com/~r/railsprescriptions/~4/eHYtskQIKyM" height="1" width="1"/&gt;</content>
  <feedburner:origLink>http://blog.railsprescriptions.com/2009/04/29/next-update-and-railsconf</feedburner:origLink></entry>
</feed>
