Merge branch 'master' into better_logging

Conflicts:
	lib/sinatra/base.rb
This commit is contained in:
Konstantin Haase 2011-03-13 09:21:49 +01:00
commit 02cd96797d
4 changed files with 53 additions and 5 deletions

View File

@ -1,3 +1,8 @@
= 1.2.1 / Not Yet Release
* Use a generated session secret when using `enable :sessions`. (Konstantin
Haase)
= 1.2.0 / 2011-03-03
* Added `slim` rendering method for rendering Slim templates. (Steve

View File

@ -7,7 +7,7 @@ require 'sinatra/showexceptions'
require 'tilt'
module Sinatra
VERSION = '1.2.0'
VERSION = '1.2.1'
# The request object. See Rack::Request for more info:
# http://rack.rubyforge.org/doc/classes/Rack/Request.html
@ -1237,10 +1237,10 @@ module Sinatra
# an instance of this class as end point.
def build(*args, &bk)
builder = Rack::Builder.new
setup_logging builder
builder.use Rack::Session::Cookie if sessions?
builder.use Rack::MethodOverride if method_override?
builder.use ShowExceptions if show_exceptions?
setup_logging builder
setup_sessions builder
builder.use Rack::MethodOverride if method_override?
builder.use ShowExceptions if show_exceptions?
middleware.each { |c,a,b| builder.use(c, *a, &b) }
builder.run new!(*args, &bk)
builder
@ -1264,6 +1264,11 @@ module Sinatra
end
end
def setup_sessions(builder)
return unless sessions?
builder.use Rack::Session::Cookie, :secret => session_secret
end
def detect_rack_handler
servers = Array(server)
servers.each do |server_name|
@ -1360,6 +1365,9 @@ module Sinatra
set :default_encoding, "utf-8"
set :add_charset, [/^text\//, 'application/javascript', 'application/xml', 'application/xhtml+xml']
# explicitly generating this eagerly to play nice with preforking
set :session_secret, '%x' % rand(2**255)
class << self
alias_method :methodoverride?, :method_override?
alias_method :methodoverride=, :method_override=

View File

@ -25,6 +25,12 @@ class Sinatra::Base
include Test::Unit::Assertions
end
class Rack::Builder
def include?(middleware)
@ins.any? { |m| p m ; middleware === m }
end
end
Sinatra::Base.set :environment, :test
class Test::Unit::TestCase

View File

@ -255,6 +255,35 @@ class HelpersTest < Test::Unit::TestCase
follow_redirect!
assert_equal 'hi bar', body
end
it 'inserts session middleware' do
mock_app do
enable :sessions
get '/' do
assert env['rack.session']
assert env['rack.session.options']
'ok'
end
end
get '/'
assert_body 'ok'
end
it 'sets a default session secret' do
mock_app do
enable :sessions
get '/' do
secret = env['rack.session.options'][:secret]
assert secret
assert_equal secret, settings.session_secret
'ok'
end
end
get '/'
assert_body 'ok'
end
end
describe 'mime_type' do