Kerry Buckley

What’s the simplest thing that could possibly go wrong?

Archive for December, 2007

The Neglected Practice of Iteration

leave a comment

“It’s not iteration if you only do it once.”

I’ve already mentioned Jeff Patton’s XPDay keynote, where he talked about the importance of working in iterations (as opposed to increments). Jeff has now written a column, The Neglected Practice of Iteration, on StickyMinds, making the same point (but without the music!)

Excellent stuff, and well worth a read. I suspect most people who claim to follow an iterative development process are prone to lapsing into an incremental mentality – I know I am.

Technorati Tags: ,

Written by Kerry

December 19th, 2007 at 9:40 am

Posted in Agile

“You have to declare the controller name in controller specs”

one comment

For ages I’ve been getting an intermittent problem with RSpec, where occasionally I’d see the following error on a model spec:

You have to declare the controller name in controller specs. For example:
describe "The ExampleController" do
controller_name "example" #invokes the ExampleController
end

The problem seemed to depend on which order the specs were run in, and for rake it could be avoided by removing --loadby mtime --reverse from spec.opts. It was a real pain with autotest though, and today (my original plan of “wait for RSpec 1.1 and hope it goes away” having failed) I finally got round to looking into it properly.

It seemed that the error was being triggered by the rather unpleasant code I wrote a while ago to simplify testing of model validation. Digging into the RSpec source to see what was happening, I found that that error message only gets returned when (as you’d expect) you don’t declare the controller name in a controller spec (specifically in an instance of Spec::Rails::Example::ControllerExampleGroup). The code that decides what type of example group to create lives in Spec::DSL::BehaviourFactory, and according to its specs, there are two methods it uses to figure out what type of spec it’s looking at:

[ruby]
it “should return a ModelExampleGroup when given :type => :model” do

it “should return a ModelExampleGroup when given :spec_path => ‘/blah/spec/models/'” do

it “should return a ModelExampleGroup when given :spec_path => ‘\\blah\\spec\\models\\’ (windows format)” do

it “should favor the :type over the :spec_path” do

[/ruby]

I began to suspect that the problem was caused by the fact that my specify_attributes method wasn’t declared in a file in spec/models, so I thought I’d try specifying the type explicitly. So instead of this:

[ruby]
describe “#{label} with all attributes set” do
[/ruby]

I changed it to this:

[ruby]
describe “#{label} with all attributes set”, :type => ‘model’ do
[/ruby]

Sure enough, it worked! Not sure whether anyone else is likely to see the same problem (unless they’re foolish enough to use my validation spec code), but hopefully if you do, a Google search will bring up this post and it might point you in the right direction.

Written by Kerry

December 18th, 2007 at 9:35 pm

Posted in Rails,rspec,Ruby

Chocolate Type

2 comments

Mmm…

Written by Kerry

December 9th, 2007 at 10:04 pm

Posted in Uncategorized