Method 1: Two classes. The first implements the functionality. The second gets the protection, i.e. it is the Singleton.
# all the functionality
class SingleFoo < WorkingFoo
In production use the second class, SigleFoo. For testing use the first class, WorkingFoo.
Literature: Russ Olso, Design Paterns in Ruby, 2007
If you don't own the code or if you fear missuse of the baseclass you can use metaprogramming.
Ian White poposes a #reset_instance method
More Info: http://blog.ardes.com/2006/12/11/testing-singletons-with-ruby