DHH mentioned in his talk at railsconf that he was toying with the idea of using instance_eval in the routing API to make it less verbose or more concise or whatever. I just wanted to point out a related alternative to using a plain instance_eval. Which gets you a little more but also makes things a little more complicated. Rather than just instance_eval()ing on some proxy object we could dup the self object of the current binding, mix in some module which would handle the routing methods, and then call instance_eval on the dup()ed self. This way ''self'' will be almost identical to the way it is in todays routing API. The only difference being modifications to self would not persist outside of the block. example: def Routes.draw(*args, &blk) dup_self = eval(''self'', blk).dup dup_self.extend RoutingDSL dup_self.instance_eval(&blk) end just some thoughts...