Merge branch 'master' into better_logging
Conflicts: lib/sinatra/base.rb
This commit is contained in:
commit
02cd96797d
5
CHANGES
5
CHANGES
|
@ -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
|
||||
|
|
|
@ -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=
|
||||
|
|
|
@ -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
|
||||
|
|
|
@ -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
|
||||
|
|
Loading…
Reference in New Issue