evaluate in context
This commit is contained in:
parent
d454854253
commit
414c80a324
|
@ -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
|
||||
|
|
|
@ -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
|
||||
|
|
Loading…
Reference in New Issue