Kip Cole wrote: > So the question is: what is the right way to achieve the desired result. > Where the desired result is to pass a block to a method to be executed > in a different context, without the caller having to know any of the > implementation details. What about this? Context = Struct.new :user def sudo context = Context.new context.user = "admin_user" yield context end outer_context = Context.new outer_context.user = "normal_user" puts "I am #{outer_context.user}" sudo do |context| puts "I am #{context.user}" end -- vjoel : Joel VanderWerf : path berkeley edu : 510 665 3407