Full threadpoorman·I've used contracts any time this type of thing was necessary. https://github.com/egonSchiele/contracts.rubyView on HN