Merge pull request #207 from 304/fix_namespace_extension

Fix namespace extension to support latest Sinatra version
This commit is contained in:
Zachary Scott 2016-07-16 10:26:43 +09:00 committed by GitHub
commit e9f72ca878
3 changed files with 5 additions and 12 deletions

View File

@ -1,5 +1,6 @@
require 'backports'
require 'sinatra/base'
require 'mustermann'
module Sinatra
@ -201,9 +202,10 @@ module Sinatra
end
def error(*codes, &block)
args = Sinatra::Base.send(:compile!, "ERROR", @pattern, block)
args = Sinatra::Base.send(:compile!, "ERROR", /.*/, block)
codes = codes.map { |c| Array(c) }.flatten
codes << Exception if codes.empty?
codes << Sinatra::NotFound if codes.include?(404)
codes.each do |c|
errors = @errors[c] ||= []
@ -264,7 +266,7 @@ module Sinatra
end
def prefixed_path(a, b)
return a || b || // unless a and b
return a || b || /.*/ unless a and b
Mustermann.new(a.to_s + b.to_s)
rescue

View File

@ -214,6 +214,7 @@ Gem::Specification.new do |s|
]
s.add_dependency "sinatra", "> 1", "< 3"
s.add_dependency "mustermann", "~> 0.4"
s.add_dependency "backports", ">= 2.0"
s.add_dependency "tilt", ">= 1.3", "< 3"
s.add_dependency "rack-test"

View File

@ -159,8 +159,6 @@ describe Sinatra::Namespace do
describe 'conditions' do
context 'when the namespace has no prefix' do
specify 'are accepted in the namespace' do
skip "Sinatra::Namespace accepts namespace without prefix in conditions"
mock_app do
namespace(:host_name => 'example.com') { send(verb) { 'yes' }}
send(verb, '/') { 'no' }
@ -488,8 +486,6 @@ describe Sinatra::Namespace do
describe 'error handling' do
it 'can be customized using the not_found block' do
skip "Sinatra::Namespace allows not_found blocks"
namespace('/de') do
not_found { 'nicht gefunden' }
end
@ -502,8 +498,6 @@ describe Sinatra::Namespace do
end
it 'can be customized for specific error codes' do
skip "Sinatra::Namespace allows custom error handling"
namespace('/de') do
error(404) { 'nicht gefunden' }
end
@ -516,8 +510,6 @@ describe Sinatra::Namespace do
end
it 'falls back to the handler defined in the base app' do
skip "Sinatra::Namespace allows custom error handling"
mock_app do
error(404) { 'not found...' }
namespace('/en') do
@ -535,8 +527,6 @@ describe Sinatra::Namespace do
end
it 'can be customized for specific Exception classes' do
skip "Sinatra::Namespace allows custom error handling"
mock_app do
class AError < StandardError; end
class BError < AError; end