Functional Programming in Ruby with Contracts
viget.com