This GEM allows to call methods lazily. The actual
work will not be performed until the result is used. There's no
promise/force semantics, just a single call (or block) is stored and
executed the first time the (lazy) result is accessed.
gem "lazyeval", "~> 0.0.4"