only extend main object for top level dsl
This commit is contained in:
parent
57b73e3bda
commit
46bdb7dcf8
|
@ -25,4 +25,6 @@ module Sinatra
|
||||||
at_exit { Application.run! if $!.nil? && Application.run? }
|
at_exit { Application.run! if $!.nil? && Application.run? }
|
||||||
end
|
end
|
||||||
|
|
||||||
include Sinatra::Delegator
|
# include would include the module in Object
|
||||||
|
# extend only extends the `main` object
|
||||||
|
extend Sinatra::Delegator
|
||||||
|
|
|
@ -1,6 +1,20 @@
|
||||||
require 'sinatra'
|
require 'sinatra'
|
||||||
|
|
||||||
|
configure do
|
||||||
|
set :foo, :bar
|
||||||
|
end
|
||||||
|
|
||||||
get '/app_file' do
|
get '/app_file' do
|
||||||
content_type :txt
|
content_type :txt
|
||||||
settings.app_file
|
settings.app_file
|
||||||
end
|
end
|
||||||
|
|
||||||
|
get '/mainonly' do
|
||||||
|
object = Object.new
|
||||||
|
begin
|
||||||
|
object.send(:get, '/foo') { }
|
||||||
|
'false'
|
||||||
|
rescue NameError
|
||||||
|
'true'
|
||||||
|
end
|
||||||
|
end
|
||||||
|
|
|
@ -44,9 +44,13 @@ class IntegrationTest < Test::Unit::TestCase
|
||||||
Process.kill("TERM", pipe.pid) if pipe
|
Process.kill("TERM", pipe.pid) if pipe
|
||||||
end
|
end
|
||||||
|
|
||||||
it 'starts a top level application' do
|
def assert_content(url, content)
|
||||||
with_server do
|
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
|
||||||
end
|
end
|
||||||
|
|
||||||
|
it('sets the app_file') { assert_content "/app_file", app_file }
|
||||||
|
it('only extends main') { assert_content "/mainonly", "true" }
|
||||||
end
|
end
|
||||||
|
|
Loading…
Reference in New Issue