Object#callwith is like instance_eval, but can still delegate back to the original object if a method is not found. Also unlike instance_eval, all instance variables accessed within the block reference the original self object.
Paul Brannan
gem "callwith", "~> 0.0.2"