evaluate in context

This commit is contained in:
Blake Mizerany 2007-11-27 23:24:13 -08:00
parent d454854253
commit 414c80a324
2 changed files with 22 additions and 1 deletions

View File

@ -31,6 +31,9 @@ module Sinatra
end
class EventContext
end
class Application
attr_reader :events
@ -50,7 +53,8 @@ module Sinatra
def call(env)
return [404, {}, 'Not Found'] unless event = lookup(env)
[200, {}, event.block.call]
result = EventContext.new.instance_eval(&event.block)
[200, {}, result]
end
end

View File

@ -62,4 +62,21 @@ context "Calling an app" do
result.body.should.equal 'Hello World'
end
specify "evaluates events in a clean context" do
Sinatra::EventContext.class_eval do
def foo
'foo'
end
end
@app.define_event(:get, '/foo') do
foo
end
request = Rack::MockRequest.new(@app)
result = request.get('/foo')
result.should.be.ok
result.body.should.equal 'foo'
end
end