Ok, this one had me stumped for a little while. When I was running rake, I'd get these warnings:
config.gem: Unpacked gem difftmp in vendor/gems has no specification file. Run 'rake gems:refresh_specs' to fix this. config.gem: Unpacked gem difftmp in vendor/gems not in a versioned directory. Giving up.
I'd seen this one before - when I'd thoughtlessly unpacked a gem into vendor/gems, then patched it. But for some reason rails doesn't like it when you unpack gems without using rake gems:unpack. I've never been in the habit of using that, because I didn't want to unpack everything. Later, of course I discovered that you can pass "GEM=blah" and it'll only unpack a single gem... but I thought I had done I this time around...
So I blindly followed the instructions to run rake gems:refresh_specs
However, that then spewed on me with an equally-familiar exception message:
rake aborted! undefined method `installed_source_index' for #<Gem::SourceIndex:0xb76aa218> ... much stacktrace garbage follows...
I sighed deeply and googled the exception... to get the usual suspects, which suggest that I need to refresh the specification file. So I went back to the original error message to see which actual gem was causing the problem.
... then stopped.
You see it became pretty clear that I'd never actually *read* the original error message. "difftmp" is obviously a temporary diff-file showing me the patch I'd made on one of the gems. Now, you could argue that rake shouldn't be stupid and assume that a flat text file is a gem (requiring a specification)... but it was then also quite clear what to do to fix the "bug".