Why repeat “should” over and over again in your specs? I prefer not to do this:
it "should throw an exception" it "should not run if already running" it "should prevent duplicate access"
But instead, this:
it "throws an exception" it "doesn't run if already running" it "prevents duplicate access"
More concise and more forceful - seems like a win all around. (Note that David Chelimsky disagrees.)