only extend main object for top level dsl

This commit is contained in:
Konstantin Haase 2011-11-05 11:46:14 -02:00
parent 57b73e3bda
commit 46bdb7dcf8
3 changed files with 24 additions and 4 deletions

View File

@ -25,4 +25,6 @@ module Sinatra
at_exit { Application.run! if $!.nil? && Application.run? }
end
include Sinatra::Delegator
# include would include the module in Object
# extend only extends the `main` object
extend Sinatra::Delegator

View File

@ -1,6 +1,20 @@
require 'sinatra'
configure do
set :foo, :bar
end
get '/app_file' do
content_type :txt
settings.app_file
end
end
get '/mainonly' do
object = Object.new
begin
object.send(:get, '/foo') { }
'false'
rescue NameError
'true'
end
end

View File

@ -44,9 +44,13 @@ class IntegrationTest < Test::Unit::TestCase
Process.kill("TERM", pipe.pid) if pipe
end
it 'starts a top level application' do
def assert_content(url, content)
with_server do
assert_equal open("http://127.0.0.1:#{port}/app_file").read, app_file
response = open("http://127.0.0.1:#{port}#{url}")
assert_equal response.read, content
end
end
it('sets the app_file') { assert_content "/app_file", app_file }
it('only extends main') { assert_content "/mainonly", "true" }
end