[rspec-users] spec_helper getting reloaded after specs run under Textmate/Spork

Elliot Winkler elliot.winkler at gmail.com
Sat Nov 21 01:28:44 EST 2009

I'm having the hardest time trying to figure out something weird I've 
suddenly run into. So I'm using Spork to run my specs. Naturally I've 
got TM_RSPEC_OPTS in Textmate set to --drb and I'm running `spork` from 
the command line to fire up the Spork server. However, if I have a spec 
file open in Textmate and I press Command-R, then the specs in the file 
get executed twice. I did a quick test by having spec_helper print out 
something at the bottom of the file and then wrote up a quick 
one-example spec file. When I ran it, I saw the spinner spin, the debug 
line got printed to the window, the output from the specs appeared, and 
then the spinner spun some more and the debug line appeared again (but a 
duplicate set of specs didn't appear because I think RSpec's smart about 
not re-running tests). So it definitely looks like spec_helper is 
getting loaded again, after all the specs are run. (I know spec_helper 
should be run twice, once during preloading, once during execution. But 
not again, AFTER execution.)

At first I thought it might be only specific to my project, but I tried 
creating a fresh Rails project, installing RSpec into it, and creating 
and running a quick spec file, but the same thing happened -- 
spec_helper seems to get loaded again. I also tried wiping and 
reinstalling the rspec, rspec-rails, and spork gems, but that didn't 
work either.

Just to emphasize, this is only when Spork is running. If I leave 
TM_RSPEC_OPTS at --drb but fail to leave the Spork server open, the 
specs only get run once as they should.

Also, this is only for Textmate -- I've got --drb in my spec.opts and 
`rake spec` works just fine when Spork is running.

So I really don't know who the culprit is: Spork, RSpec bundle, or maybe 
it's just me. I noticed in Lighthouse a few people have had this same 
problem, but those were a while back and anyway this seems to be different.

David, can you think of a reason why something like this would be 
happening? Exit status maybe? Or maybe this is more of a Spork question.

-- Elliot

More information about the rspec-users mailing list