I have a design pattern (Rails app, using RestfulAuthentication plugin
with modifications) that wants to have a method that will temporarily
elevate user privileges like so:

def sudo
  saved_current_user = current_user
  current_user = admin_user
  yield
  current_user = saved_current_user
end

And in a method, invoke it with

sudo do
  puts "Something done as admin user"
end

However I know this doesn't work because at the time the block is
passed, the binding is fixed to the defining context.

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.

Thanks for any help,

--Kip
-- 
Posted via http://www.ruby-forum.com/.