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.
Gemfile gem 'lazyeval', '~> 0.0.4'
install gem install lazyeval