Ricky Clarkson has a nice post on the pros and cons of both static and dynamic typing, with examples from Java and Haskell contrasted with Scheme. The Scheme examples can, of course, be extrapolated to Ruby too. From experience, I don't believe his argument for dynamic languages applies to codebases with more than ten people working on them (not without extensive unit testing to catch type errors).
Well worth a read though. Here's the link: Stop Sitting On The Type Fence