[DRE-commits] [ruby-sinatra-contrib] 01/08: Imported Upstream version 1.4.6
Jérémy Bobbio
lunar at moszumanska.debian.org
Wed Sep 9 20:25:39 UTC 2015
This is an automated email from the git hooks/post-receive script.
lunar pushed a commit to branch master
in repository ruby-sinatra-contrib.
commit 1d72f35e89f108f7804e7550f9dc3399dba90dfe
Author: Lunar <lunar at kittens>
Date: Wed Sep 9 15:34:25 2015 +0200
Imported Upstream version 1.4.6
---
LICENSE | 2 +
README.md | 3 +
Rakefile | 6 +-
checksums.yaml.gz | Bin 266 -> 0 bytes
lib/sinatra/capture.rb | 2 +-
lib/sinatra/config_file.rb | 7 +-
lib/sinatra/contrib/version.rb | 2 +-
lib/sinatra/cookies.rb | 6 +-
lib/sinatra/custom_logger.rb | 60 +++++++++
lib/sinatra/decompile.rb | 8 +-
lib/sinatra/namespace.rb | 13 +-
lib/sinatra/reloader.rb | 10 +-
lib/sinatra/respond_with.rb | 43 +++++--
lib/sinatra/streaming.rb | 2 +-
metadata.yml | 274 ++++++++++++++++++++++++++++++++++++-----
sinatra-contrib.gemspec | 45 ++++++-
spec/capture_spec.rb | 11 +-
spec/config_file_spec.rb | 3 +-
spec/content_for_spec.rb | 3 +-
spec/cookies_spec.rb | 43 ++++---
spec/custom_logger_spec.rb | 43 +++++++
spec/decompile_spec.rb | 3 +-
spec/extension_spec.rb | 5 +-
spec/json_spec.rb | 5 +-
spec/link_header_spec.rb | 3 +-
spec/multi_route_spec.rb | 3 +-
spec/namespace_spec.rb | 185 +++++++++++++++++++---------
spec/reloader_spec.rb | 3 +-
spec/respond_with/bar.erb | 2 +-
spec/respond_with_spec.rb | 7 +-
spec/spec_helper.rb | 2 +-
spec/streaming_spec.rb | 6 +-
32 files changed, 636 insertions(+), 174 deletions(-)
diff --git a/LICENSE b/LICENSE
index ec9cc42..048cbbd 100644
--- a/LICENSE
+++ b/LICENSE
@@ -1,3 +1,5 @@
+The MIT License (MIT)
+
Copyright (c) 2008-2011 Nicolas Sanguinetti, entp.com, Konstantin Haase
Permission is hereby granted, free of charge, to any person obtaining
diff --git a/README.md b/README.md
index 2a1fd7a..99f43e1 100644
--- a/README.md
+++ b/README.md
@@ -45,6 +45,9 @@ Currently included:
depending on the incoming request. Adds helpers `respond_to` and
`respond_with`.
+* `sinatra/custom_logger`: This extension allows you to define your own
+ logger instance using +logger+ setting. That logger then will
+ be available as #logger helper method in your routes and views.
## Custom Extensions
diff --git a/Rakefile b/Rakefile
index b3d2a76..e71fe62 100644
--- a/Rakefile
+++ b/Rakefile
@@ -4,7 +4,7 @@ require 'yaml'
require 'sinatra/contrib/version'
desc "run specs"
-task(:spec) { ruby '-S rspec spec -c' }
+task(:spec) { ruby '-S rspec spec -cw' }
task(:test => :spec)
task(:default => :spec)
@@ -67,8 +67,8 @@ task :release => :gemspec do
git commit --allow-empty -a -m '#{Sinatra::Contrib::VERSION} release' &&
git tag -s v#{Sinatra::Contrib::VERSION} -m '#{Sinatra::Contrib::VERSION} release' &&
git tag -s #{Sinatra::Contrib::VERSION} -m '#{Sinatra::Contrib::VERSION} release' &&
- git push && (git push sinatra || true) &&
- git push --tags && (git push sinatra --tags || true)
+ git push && (git push origin master || true) &&
+ git push --tags && (git push origin --tags || true)
SH
end
diff --git a/checksums.yaml.gz b/checksums.yaml.gz
deleted file mode 100644
index 03617f0..0000000
Binary files a/checksums.yaml.gz and /dev/null differ
diff --git a/lib/sinatra/capture.rb b/lib/sinatra/capture.rb
index 1f742ef..e219a93 100644
--- a/lib/sinatra/capture.rb
+++ b/lib/sinatra/capture.rb
@@ -95,7 +95,7 @@ module Sinatra
@capture = nil
if current_engine == :ruby
result = block[*args]
- elsif current_engine == :erb
+ elsif current_engine == :erb || current_engine == :slim
@_out_buf, _buf_was = '', @_out_buf
block[*args]
result = eval('@_out_buf', block.binding)
diff --git a/lib/sinatra/config_file.rb b/lib/sinatra/config_file.rb
index 400f12a..ed9082d 100644
--- a/lib/sinatra/config_file.rb
+++ b/lib/sinatra/config_file.rb
@@ -69,8 +69,9 @@ module Sinatra
# b: 2
#
# But it also can provide specific environment configuration. There are two
- # ways to do that: at the file level and at the setting level. They are
- # illustrated, repsectively, as follows:
+ # ways to do that: at the file level and at the settings level.
+ #
+ # At the settings level (e.g. in 'path/to/config.yml'):
#
# development:
# foo: development
@@ -82,7 +83,7 @@ module Sinatra
# foo: production
# bar: bar
#
- # and
+ # Or at the file level:
#
# foo:
# development: development
diff --git a/lib/sinatra/contrib/version.rb b/lib/sinatra/contrib/version.rb
index 7606b4c..dbc6851 100644
--- a/lib/sinatra/contrib/version.rb
+++ b/lib/sinatra/contrib/version.rb
@@ -4,7 +4,7 @@ module Sinatra
VERSION
end
- SIGNATURE = [1, 4, 2]
+ SIGNATURE = [1, 4, 6]
VERSION = SIGNATURE.join('.')
VERSION.extend Comparable
diff --git a/lib/sinatra/cookies.rb b/lib/sinatra/cookies.rb
index a77de5d..bd06315 100644
--- a/lib/sinatra/cookies.rb
+++ b/lib/sinatra/cookies.rb
@@ -66,14 +66,12 @@ module Sinatra
@deleted = []
@options = {
- :path => @request.script_name,
- :domain => @request.host,
+ :path => @request.script_name.to_s.empty? ? '/' : @request.script_name,
+ :domain => @request.host == 'localhost' ? nil : @request.host,
:secure => @request.secure?,
:httponly => true
}
- @options[:path] = '/' if @options[:path].to_s.empty?
-
if app.settings.respond_to? :cookie_options
@options.merge! app.settings.cookie_options
end
diff --git a/lib/sinatra/custom_logger.rb b/lib/sinatra/custom_logger.rb
new file mode 100644
index 0000000..42c0d63
--- /dev/null
+++ b/lib/sinatra/custom_logger.rb
@@ -0,0 +1,60 @@
+module Sinatra
+
+ # = Sinatra::CustomLogger
+ #
+ # CustomLogger extension allows you to define your own logger instance
+ # using +logger+ setting. That logger then will be available
+ # as #logger helper method in your routes and views.
+ #
+ # == Usage
+ #
+ # === Classic Application
+ #
+ # To define your custom logger instance in a classic application:
+ #
+ # require 'sinatra'
+ # require 'sinatra/custom_logger'
+ # require 'logger'
+ #
+ # set :logger, Logger.new(STDOUT)
+ #
+ # get '/' do
+ # logger.info 'Some message' # STDOUT logger is used
+ # # Other code...
+ # end
+ #
+ # === Modular Application
+ #
+ # The same for modular application:
+ #
+ # require 'sinatra/base'
+ # require 'sinatra/custom_logger'
+ # require 'logger'
+ #
+ # class MyApp < Sinatra::Base
+ # helpers Sinatra::CustomLogger
+ #
+ # configure :development, :production do
+ # logger = Logger.new(File.open("#{root}/log/#{environment}.log", 'a'))
+ # logger.level = Logger::DEBUG if development?
+ # set :logger, logger
+ # end
+ #
+ # get '/' do
+ # logger.info 'Some message' # File-based logger is used
+ # # Other code...
+ # end
+ # end
+ #
+ module CustomLogger
+ def logger
+ if settings.respond_to?(:logger)
+ settings.logger
+ else
+ request.logger
+ end
+ end
+ end
+
+ helpers CustomLogger
+end
diff --git a/lib/sinatra/decompile.rb b/lib/sinatra/decompile.rb
index b3e9cc5..41bfe3d 100644
--- a/lib/sinatra/decompile.rb
+++ b/lib/sinatra/decompile.rb
@@ -110,11 +110,17 @@ module Sinatra
def encoded(char)
return super if defined? super
- enc = URI.escape(char)
+ enc = uri_parser.escape(char)
enc = "(?:#{escaped(char, enc).join('|')})" if enc == char
enc = "(?:#{enc}|#{encoded('+')})" if char == " "
enc
end
+
+ def uri_parser
+ #TODO: Remove check after dropping support for 1.8.7
+ @_uri_parser ||= defined?(URI::Parser) ? URI::Parser.new : URI
+ end
+
end
register Decompile
diff --git a/lib/sinatra/namespace.rb b/lib/sinatra/namespace.rb
index 2f7ae67..48203d6 100644
--- a/lib/sinatra/namespace.rb
+++ b/lib/sinatra/namespace.rb
@@ -116,6 +116,8 @@ module Sinatra
module Namespace
def self.new(base, pattern, conditions = {}, &block)
Module.new do
+ #quelch uninitialized variable warnings, since these get used by compile method.
+ @pattern, @conditions = nil, nil
extend NamespacedMethods
include InstanceMethods
@base, @extensions, @errors = base, [], {}
@@ -173,7 +175,7 @@ module Sinatra
end
def not_found(&block)
- error(404, &block)
+ error(Sinatra::NotFound, &block)
end
def errors
@@ -185,9 +187,10 @@ module Sinatra
end
def error(*codes, &block)
- args = Sinatra::Base.send(:compile!, "ERROR", /^#{@pattern}/, block)
+ args = Sinatra::Base.send(:compile!, "ERROR", regexpify(@pattern), block)
codes = codes.map { |c| Array(c) }.flatten
codes << Exception if codes.empty?
+
codes.each do |c|
errors = @errors[c] ||= []
errors << args
@@ -253,7 +256,7 @@ module Sinatra
def regexpify(pattern)
pattern = Sinatra::Base.send(:compile, pattern).first.inspect
- pattern.gsub! /^\/(\^|\\A)?|(\$|\\Z)?\/$/, ''
+ pattern.gsub! /^\/(\^|\\A)?|(\$|\\z)?\/$/, ''
Regexp.new pattern
end
@@ -268,6 +271,10 @@ module Sinatra
def method_missing(method, *args, &block)
base.send(method, *args, &block)
end
+
+ def respond_to?(method, include_private = false)
+ super || base.respond_to?(method, include_private)
+ end
end
module BaseMethods
diff --git a/lib/sinatra/reloader.rb b/lib/sinatra/reloader.rb
old mode 100644
new mode 100755
index fcfdfb8..a410671
--- a/lib/sinatra/reloader.rb
+++ b/lib/sinatra/reloader.rb
@@ -164,6 +164,7 @@ module Sinatra
# Creates a new +Watcher+ instance for the file located at +path+.
def initialize(path)
+ @ignore = nil
@path, @elements = path, []
update
end
@@ -202,7 +203,7 @@ module Sinatra
end
end
- # When the extension is registed it extends the Sinatra application
+ # When the extension is registered it extends the Sinatra application
# +klass+ with the modules +BaseMethods+ and +ExtensionMethods+ and
# defines a before filter to +perform+ the reload of the modified files.
def self.registered(klass)
@@ -244,7 +245,7 @@ module Sinatra
Thread and Thread.list.size > 1 and Thread.respond_to?(:exclusive)
end
- # Contains the methods defined in Sinatra::Base that are overriden.
+ # Contains the methods defined in Sinatra::Base that are overridden.
module BaseMethods
# Protects Sinatra::Base.run! from being called more than once.
def run!(*args)
@@ -369,7 +370,8 @@ module Sinatra
private
- attr_reader :register_path
+ # attr_reader :register_path warn on -w (private attribute)
+ def register_path; @register_path ||= nil; end
# Indicates an extesion is being registered.
def start_registering_extension
@@ -391,7 +393,7 @@ module Sinatra
# in the file located at +path+.
#
# If an extension is being registered, it also tells the list to
- # watch it in the file where the extesion has been registered.
+ # watch it in the file where the extension has been registered.
# This prevents the duplication of the elements added by the
# extension in its +registered+ method with every reload.
def watch_element(path, type, representation=nil)
diff --git a/lib/sinatra/respond_with.rb b/lib/sinatra/respond_with.rb
index 62b6b5c..1ff8989 100644
--- a/lib/sinatra/respond_with.rb
+++ b/lib/sinatra/respond_with.rb
@@ -1,6 +1,8 @@
require 'sinatra/json'
require 'sinatra/base'
+$KCODE = "UTF-8" unless RUBY_VERSION > "1.9.0"
+
module Sinatra
#
# = Sinatra::RespondWith
@@ -174,7 +176,11 @@ module Sinatra
end
possible.each do |engine, template|
# not exactly like Tilt[engine], but does not trigger a require
- klass = Tilt.mappings[Tilt.normalize(engine)].first
+ if Tilt.respond_to?(:mappings)
+ klass = Tilt.mappings[Tilt.normalize(engine)].first
+ else
+ klass = Tilt[engine]
+ end
find_template(settings.views, template, klass) do |file|
next unless File.exist? file
return settings.rendering_method(engine) << template.to_sym
@@ -221,22 +227,33 @@ module Sinatra
super
end
- ENGINES = {
- :css => [:less, :sass, :scss],
- :xml => [:builder, :nokogiri],
- :js => [:coffee],
- :json => [:yajl],
- :html => [:erb, :erubis, :haml, :slim, :liquid, :radius, :mab, :markdown,
- :textile, :rdoc],
- :all => Sinatra::Templates.instance_methods.map(&:to_sym) + [:mab] -
- [:find_template, :markaby]
- }
+ def self.jrubyify(engs)
+ not_supported = [:markdown]
+ engs.keys.each do |key|
+ engs[key].collect! { |eng| (eng == :yajl) ? :json_pure : eng }
+ engs[key].delete_if { |eng| not_supported.include?(eng) }
+ end
+ engs
+ end
- ENGINES.default = []
+ def self.engines
+ engines = {
+ :css => [:less, :sass, :scss],
+ :xml => [:builder, :nokogiri],
+ :js => [:coffee],
+ :html => [:erb, :erubis, :haml, :slim, :liquid, :radius, :mab,
+ :markdown, :textile, :rdoc],
+ :all => (Sinatra::Templates.instance_methods.map(&:to_sym) +
+ [:mab] - [:find_template, :markaby]),
+ :json => [:yajl],
+ }
+ engines.default = []
+ (defined? JRUBY_VERSION) ? jrubyify(engines) : engines
+ end
def self.registered(base)
base.set :ext_map, Hash.new { |h,k| h[k] = [] }
- base.set :template_engines, ENGINES.dup
+ base.set :template_engines, engines
base.remap_extensions
base.helpers Helpers
end
diff --git a/lib/sinatra/streaming.rb b/lib/sinatra/streaming.rb
index 2a832da..da2d5da 100644
--- a/lib/sinatra/streaming.rb
+++ b/lib/sinatra/streaming.rb
@@ -6,7 +6,7 @@ module Sinatra
# = Sinatra::Streaming
#
# Sinatra 1.3 introduced the +stream+ helper. This addon improves the
- # streaming API by making the stream object immitate an IO object, turning
+ # streaming API by making the stream object imitate an IO object, turning
# it into a real Deferrable and making the body play nicer with middleware
# unaware of streaming.
#
diff --git a/metadata.yml b/metadata.yml
index 4a165d7..2ac97f2 100644
--- a/metadata.yml
+++ b/metadata.yml
@@ -1,42 +1,53 @@
--- !ruby/object:Gem::Specification
name: sinatra-contrib
version: !ruby/object:Gem::Version
- version: 1.4.2
+ version: 1.4.6
platform: ruby
authors:
- Konstantin Haase
- Gabriel Andretta
-- Trevor Bramble
- Zachary Scott
+- Trevor Bramble
- Katrina Owen
+- Ashley Williams
- Nicolas Sanguinetti
- Hrvoje Šimić
- Masahiro Fujiwara
- Rafael Magana
+- Vipul A M
- Jack Chu
+- ashley williams
- Ilya Shindyapin
+- Jake Worth
- Kashyap
- Sumeet Singh
- lest
- Adrian Pacała
- Aish
+- Alexey Chernenkov
- Andrew Crump
+- Anton Davydov
+- Bo Jeanes
- David Asabina
- Eliot Shepard
- Eric Marden
- Gray Manley
- Guillaume Bouteille
- Jamie Hodge
+- Koichi Sasada
- Kyle Lacy
+- Lars Vonk
- Martin Frost
- Mathieu Allaire
- Matt Lyon
- Matthew Conway
- Meck
- Michi Huber
+- Nic Benders
- Patricio Mac Adden
- Reed Lipman
- Samy Dindane
+- Sergey Nartimov
- Thibaut Sacreste
- Uchio KONDO
- Will Bailey
@@ -44,160 +55,348 @@ authors:
autorequire:
bindir: bin
cert_chain: []
-date: 2013-12-01 00:00:00.000000000 Z
+date: 2015-07-02 00:00:00.000000000 Z
dependencies:
- !ruby/object:Gem::Dependency
name: sinatra
requirement: !ruby/object:Gem::Requirement
requirements:
- - - ~>
+ - - "~>"
- !ruby/object:Gem::Version
version: 1.4.0
type: :runtime
prerelease: false
version_requirements: !ruby/object:Gem::Requirement
requirements:
- - - ~>
+ - - "~>"
- !ruby/object:Gem::Version
version: 1.4.0
- !ruby/object:Gem::Dependency
name: backports
requirement: !ruby/object:Gem::Requirement
requirements:
- - - '>='
+ - - ">="
- !ruby/object:Gem::Version
version: '2.0'
type: :runtime
prerelease: false
version_requirements: !ruby/object:Gem::Requirement
requirements:
- - - '>='
+ - - ">="
- !ruby/object:Gem::Version
version: '2.0'
- !ruby/object:Gem::Dependency
name: tilt
requirement: !ruby/object:Gem::Requirement
requirements:
- - - ~>
+ - - ">="
- !ruby/object:Gem::Version
version: '1.3'
+ - - "<"
+ - !ruby/object:Gem::Version
+ version: '3'
type: :runtime
prerelease: false
version_requirements: !ruby/object:Gem::Requirement
requirements:
- - - ~>
+ - - ">="
- !ruby/object:Gem::Version
version: '1.3'
+ - - "<"
+ - !ruby/object:Gem::Version
+ version: '3'
- !ruby/object:Gem::Dependency
name: rack-test
requirement: !ruby/object:Gem::Requirement
requirements:
- - - '>='
+ - - ">="
- !ruby/object:Gem::Version
version: '0'
type: :runtime
prerelease: false
version_requirements: !ruby/object:Gem::Requirement
requirements:
- - - '>='
+ - - ">="
- !ruby/object:Gem::Version
version: '0'
- !ruby/object:Gem::Dependency
name: rack-protection
requirement: !ruby/object:Gem::Requirement
requirements:
- - - '>='
+ - - ">="
- !ruby/object:Gem::Version
version: '0'
type: :runtime
prerelease: false
version_requirements: !ruby/object:Gem::Requirement
requirements:
- - - '>='
+ - - ">="
- !ruby/object:Gem::Version
version: '0'
- !ruby/object:Gem::Dependency
name: multi_json
requirement: !ruby/object:Gem::Requirement
requirements:
- - - '>='
+ - - ">="
- !ruby/object:Gem::Version
version: '0'
type: :runtime
prerelease: false
version_requirements: !ruby/object:Gem::Requirement
requirements:
- - - '>='
+ - - ">="
- !ruby/object:Gem::Version
version: '0'
- !ruby/object:Gem::Dependency
name: rspec
requirement: !ruby/object:Gem::Requirement
requirements:
- - - ~>
+ - - "~>"
- !ruby/object:Gem::Version
version: '2.3'
type: :development
prerelease: false
version_requirements: !ruby/object:Gem::Requirement
requirements:
- - - ~>
+ - - "~>"
- !ruby/object:Gem::Version
version: '2.3'
- !ruby/object:Gem::Dependency
name: haml
requirement: !ruby/object:Gem::Requirement
requirements:
- - - '>='
+ - - ">="
- !ruby/object:Gem::Version
version: '0'
type: :development
prerelease: false
version_requirements: !ruby/object:Gem::Requirement
requirements:
- - - '>='
+ - - ">="
- !ruby/object:Gem::Version
version: '0'
- !ruby/object:Gem::Dependency
name: erubis
requirement: !ruby/object:Gem::Requirement
requirements:
- - - '>='
+ - - ">="
- !ruby/object:Gem::Version
version: '0'
type: :development
prerelease: false
version_requirements: !ruby/object:Gem::Requirement
requirements:
- - - '>='
+ - - ">="
- !ruby/object:Gem::Version
version: '0'
- !ruby/object:Gem::Dependency
name: slim
requirement: !ruby/object:Gem::Requirement
requirements:
- - - '>='
+ - - ">="
+ - !ruby/object:Gem::Version
+ version: '0'
+ type: :development
+ prerelease: false
+ version_requirements: !ruby/object:Gem::Requirement
+ requirements:
+ - - ">="
+ - !ruby/object:Gem::Version
+ version: '0'
+- !ruby/object:Gem::Dependency
+ name: less
+ requirement: !ruby/object:Gem::Requirement
+ requirements:
+ - - ">="
+ - !ruby/object:Gem::Version
+ version: '0'
+ type: :development
+ prerelease: false
+ version_requirements: !ruby/object:Gem::Requirement
+ requirements:
+ - - ">="
+ - !ruby/object:Gem::Version
+ version: '0'
+- !ruby/object:Gem::Dependency
+ name: sass
+ requirement: !ruby/object:Gem::Requirement
+ requirements:
+ - - ">="
+ - !ruby/object:Gem::Version
+ version: '0'
+ type: :development
+ prerelease: false
+ version_requirements: !ruby/object:Gem::Requirement
+ requirements:
+ - - ">="
+ - !ruby/object:Gem::Version
+ version: '0'
+- !ruby/object:Gem::Dependency
+ name: builder
+ requirement: !ruby/object:Gem::Requirement
+ requirements:
+ - - ">="
+ - !ruby/object:Gem::Version
+ version: '0'
+ type: :development
+ prerelease: false
+ version_requirements: !ruby/object:Gem::Requirement
+ requirements:
+ - - ">="
+ - !ruby/object:Gem::Version
+ version: '0'
+- !ruby/object:Gem::Dependency
+ name: liquid
+ requirement: !ruby/object:Gem::Requirement
+ requirements:
+ - - ">="
+ - !ruby/object:Gem::Version
+ version: '0'
+ type: :development
+ prerelease: false
+ version_requirements: !ruby/object:Gem::Requirement
+ requirements:
+ - - ">="
+ - !ruby/object:Gem::Version
+ version: '0'
+- !ruby/object:Gem::Dependency
+ name: redcarpet
+ requirement: !ruby/object:Gem::Requirement
+ requirements:
+ - - ">="
+ - !ruby/object:Gem::Version
+ version: '0'
+ type: :development
+ prerelease: false
+ version_requirements: !ruby/object:Gem::Requirement
+ requirements:
+ - - ">="
+ - !ruby/object:Gem::Version
+ version: '0'
+- !ruby/object:Gem::Dependency
+ name: RedCloth
+ requirement: !ruby/object:Gem::Requirement
+ requirements:
+ - - ">="
+ - !ruby/object:Gem::Version
+ version: '0'
+ type: :development
+ prerelease: false
+ version_requirements: !ruby/object:Gem::Requirement
+ requirements:
+ - - ">="
+ - !ruby/object:Gem::Version
+ version: '0'
+- !ruby/object:Gem::Dependency
+ name: asciidoctor
+ requirement: !ruby/object:Gem::Requirement
+ requirements:
+ - - ">="
+ - !ruby/object:Gem::Version
+ version: '0'
+ type: :development
+ prerelease: false
+ version_requirements: !ruby/object:Gem::Requirement
+ requirements:
+ - - ">="
+ - !ruby/object:Gem::Version
+ version: '0'
+- !ruby/object:Gem::Dependency
+ name: radius
+ requirement: !ruby/object:Gem::Requirement
+ requirements:
+ - - ">="
+ - !ruby/object:Gem::Version
+ version: '0'
+ type: :development
+ prerelease: false
+ version_requirements: !ruby/object:Gem::Requirement
+ requirements:
+ - - ">="
+ - !ruby/object:Gem::Version
+ version: '0'
+- !ruby/object:Gem::Dependency
+ name: coffee-script
+ requirement: !ruby/object:Gem::Requirement
+ requirements:
+ - - ">="
- !ruby/object:Gem::Version
version: '0'
type: :development
prerelease: false
version_requirements: !ruby/object:Gem::Requirement
requirements:
- - - '>='
+ - - ">="
+ - !ruby/object:Gem::Version
+ version: '0'
+- !ruby/object:Gem::Dependency
+ name: nokogiri
+ requirement: !ruby/object:Gem::Requirement
+ requirements:
+ - - ">="
+ - !ruby/object:Gem::Version
+ version: '0'
+ type: :development
+ prerelease: false
+ version_requirements: !ruby/object:Gem::Requirement
+ requirements:
+ - - ">="
+ - !ruby/object:Gem::Version
+ version: '0'
+- !ruby/object:Gem::Dependency
+ name: creole
+ requirement: !ruby/object:Gem::Requirement
+ requirements:
+ - - ">="
+ - !ruby/object:Gem::Version
+ version: '0'
+ type: :development
+ prerelease: false
+ version_requirements: !ruby/object:Gem::Requirement
+ requirements:
+ - - ">="
+ - !ruby/object:Gem::Version
+ version: '0'
+- !ruby/object:Gem::Dependency
+ name: wikicloth
+ requirement: !ruby/object:Gem::Requirement
+ requirements:
+ - - ">="
+ - !ruby/object:Gem::Version
+ version: '0'
+ type: :development
+ prerelease: false
+ version_requirements: !ruby/object:Gem::Requirement
+ requirements:
+ - - ">="
+ - !ruby/object:Gem::Version
+ version: '0'
+- !ruby/object:Gem::Dependency
+ name: markaby
+ requirement: !ruby/object:Gem::Requirement
+ requirements:
+ - - ">="
+ - !ruby/object:Gem::Version
+ version: '0'
+ type: :development
+ prerelease: false
+ version_requirements: !ruby/object:Gem::Requirement
+ requirements:
+ - - ">="
- !ruby/object:Gem::Version
version: '0'
- !ruby/object:Gem::Dependency
name: rake
requirement: !ruby/object:Gem::Requirement
requirements:
- - - '>='
+ - - ">="
- !ruby/object:Gem::Version
version: '0'
type: :development
prerelease: false
version_requirements: !ruby/object:Gem::Requirement
requirements:
- - - '>='
+ - - ">="
- !ruby/object:Gem::Version
version: '0'
description: Collection of useful Sinatra extensions
@@ -205,38 +404,50 @@ email:
- konstantin.mailinglists at googlemail.com
- ohhgabriel at gmail.com
- inbox at trevorbramble.com
+- e at zzak.io
- zachary at zacharyscott.net
- katrina.owen at gmail.com
+- ashley at bocoup.com
- contacto at nicolassanguinetti.info
- shime.ferovac at gmail.com
- m-fujiwara at axsh.net
- raf.magana at gmail.com
+- vipulnsward at gmail.com
- jack at jackchu.com
- konstantin.haase at gmail.com
+- ashley666ashley at gmail.com
- ilya at shindyapin.com
+- jworth at prevailhs.com
- kashyap.kmbc at gmail.com
- ortuna at gmail.com
-- e at zzak.io
+- tbramble at chef.io
- just.lest at gmail.com
- altpacala at gmail.com
- aisha.fenton at visfleet.com
+- laise at pisem.net
- andrew.crump at ieee.org
+- antondavydov.o at gmail.com
+- me at bjeanes.com
- david at supr.nu
- eshepard at slower.net
- eric.marden at gmail.com
- g.manley at tukaiz.com
- duffman at via.ecp.fr
- jamiehodge at me.com
+- ko1 at atdot.net
- kylewlacy at me.com
+- lars.vonk at gmail.com
- blame at kth.se
- mathieuallaire at gmail.com
- matt at flowerpowered.com
- himself at mattonrails.com
- yesmeck at gmail.com
- michi.huber at gmail.com
+- nic at newrelic.com
- patriciomacadden at gmail.com
- rmlipman at gmail.com
- samy at dindane.com
+- just.lest at gmail.com
- thibaut.sacreste at gmail.com
- udzura at udzura.jp
- will.bailey at gmail.com
@@ -257,6 +468,7 @@ files:
- lib/sinatra/contrib/setup.rb
- lib/sinatra/contrib/version.rb
- lib/sinatra/cookies.rb
+- lib/sinatra/custom_logger.rb
- lib/sinatra/decompile.rb
- lib/sinatra/engine_tracking.rb
- lib/sinatra/extension.rb
@@ -311,6 +523,7 @@ files:
- spec/content_for/takes_values.slim
- spec/content_for_spec.rb
- spec/cookies_spec.rb
+- spec/custom_logger_spec.rb
- spec/decompile_spec.rb
- spec/extension_spec.rb
- spec/json_spec.rb
@@ -331,7 +544,8 @@ files:
- spec/spec_helper.rb
- spec/streaming_spec.rb
homepage: http://github.com/sinatra/sinatra-contrib
-licenses: []
+licenses:
+- MIT
metadata: {}
post_install_message:
rdoc_options: []
@@ -339,17 +553,17 @@ require_paths:
- lib
required_ruby_version: !ruby/object:Gem::Requirement
requirements:
- - - '>='
+ - - ">="
- !ruby/object:Gem::Version
version: '0'
required_rubygems_version: !ruby/object:Gem::Requirement
requirements:
- - - '>='
+ - - ">="
- !ruby/object:Gem::Version
version: '0'
requirements: []
rubyforge_project:
-rubygems_version: 2.0.6
+rubygems_version: 2.4.6
signing_key:
specification_version: 4
summary: Collection of useful Sinatra extensions
diff --git a/sinatra-contrib.gemspec b/sinatra-contrib.gemspec
index e9760c7..e164970 100644
--- a/sinatra-contrib.gemspec
+++ b/sinatra-contrib.gemspec
@@ -7,43 +7,55 @@ Gem::Specification.new do |s|
s.version = Sinatra::Contrib::VERSION
s.description = "Collection of useful Sinatra extensions"
s.homepage = "http://github.com/sinatra/sinatra-contrib"
+ s.license = "MIT"
s.summary = s.description
# generated from git shortlog -sn
s.authors = [
"Konstantin Haase",
"Gabriel Andretta",
- "Trevor Bramble",
"Zachary Scott",
+ "Trevor Bramble",
"Katrina Owen",
+ "Ashley Williams",
"Nicolas Sanguinetti",
"Hrvoje Šimić",
"Masahiro Fujiwara",
"Rafael Magana",
+ "Vipul A M",
"Jack Chu",
+ "ashley williams",
"Ilya Shindyapin",
+ "Jake Worth",
"Kashyap",
"Sumeet Singh",
"lest",
"Adrian Pacała",
"Aish",
+ "Alexey Chernenkov",
"Andrew Crump",
+ "Anton Davydov",
+ "Bo Jeanes",
"David Asabina",
"Eliot Shepard",
"Eric Marden",
"Gray Manley",
"Guillaume Bouteille",
"Jamie Hodge",
+ "Koichi Sasada",
"Kyle Lacy",
+ "Lars Vonk",
"Martin Frost",
"Mathieu Allaire",
"Matt Lyon",
"Matthew Conway",
"Meck",
"Michi Huber",
+ "Nic Benders",
"Patricio Mac Adden",
"Reed Lipman",
"Samy Dindane",
+ "Sergey Nartimov",
"Thibaut Sacreste",
"Uchio KONDO",
"Will Bailey",
@@ -55,38 +67,50 @@ Gem::Specification.new do |s|
"konstantin.mailinglists at googlemail.com",
"ohhgabriel at gmail.com",
"inbox at trevorbramble.com",
+ "e at zzak.io",
"zachary at zacharyscott.net",
"katrina.owen at gmail.com",
+ "ashley at bocoup.com",
"contacto at nicolassanguinetti.info",
"shime.ferovac at gmail.com",
"m-fujiwara at axsh.net",
"raf.magana at gmail.com",
+ "vipulnsward at gmail.com",
"jack at jackchu.com",
"konstantin.haase at gmail.com",
+ "ashley666ashley at gmail.com",
"ilya at shindyapin.com",
+ "jworth at prevailhs.com",
"kashyap.kmbc at gmail.com",
"ortuna at gmail.com",
- "e at zzak.io",
+ "tbramble at chef.io",
"just.lest at gmail.com",
"altpacala at gmail.com",
"aisha.fenton at visfleet.com",
+ "laise at pisem.net",
"andrew.crump at ieee.org",
+ "antondavydov.o at gmail.com",
+ "me at bjeanes.com",
"david at supr.nu",
"eshepard at slower.net",
"eric.marden at gmail.com",
"g.manley at tukaiz.com",
"duffman at via.ecp.fr",
"jamiehodge at me.com",
+ "ko1 at atdot.net",
"kylewlacy at me.com",
+ "lars.vonk at gmail.com",
"blame at kth.se",
"mathieuallaire at gmail.com",
"matt at flowerpowered.com",
"himself at mattonrails.com",
"yesmeck at gmail.com",
"michi.huber at gmail.com",
+ "nic at newrelic.com",
"patriciomacadden at gmail.com",
"rmlipman at gmail.com",
"samy at dindane.com",
+ "just.lest at gmail.com",
"thibaut.sacreste at gmail.com",
"udzura at udzura.jp",
"will.bailey at gmail.com",
@@ -107,6 +131,7 @@ Gem::Specification.new do |s|
"lib/sinatra/contrib/setup.rb",
"lib/sinatra/contrib/version.rb",
"lib/sinatra/cookies.rb",
+ "lib/sinatra/custom_logger.rb",
"lib/sinatra/decompile.rb",
"lib/sinatra/engine_tracking.rb",
"lib/sinatra/extension.rb",
@@ -161,6 +186,7 @@ Gem::Specification.new do |s|
"spec/content_for/takes_values.slim",
"spec/content_for_spec.rb",
"spec/cookies_spec.rb",
+ "spec/custom_logger_spec.rb",
"spec/decompile_spec.rb",
"spec/extension_spec.rb",
"spec/json_spec.rb",
@@ -184,7 +210,7 @@ Gem::Specification.new do |s|
s.add_dependency "sinatra", "~> 1.4.0"
s.add_dependency "backports", ">= 2.0"
- s.add_dependency "tilt", "~> 1.3"
+ s.add_dependency "tilt", ">= 1.3", "< 3"
s.add_dependency "rack-test"
s.add_dependency "rack-protection"
s.add_dependency "multi_json"
@@ -193,5 +219,18 @@ Gem::Specification.new do |s|
s.add_development_dependency "haml"
s.add_development_dependency "erubis"
s.add_development_dependency "slim"
+ s.add_development_dependency "less"
+ s.add_development_dependency "sass"
+ s.add_development_dependency "builder"
+ s.add_development_dependency "liquid"
+ s.add_development_dependency "redcarpet"
+ s.add_development_dependency "RedCloth"
+ s.add_development_dependency "asciidoctor"
+ s.add_development_dependency "radius"
+ s.add_development_dependency "coffee-script"
+ s.add_development_dependency "nokogiri"
+ s.add_development_dependency "creole"
+ s.add_development_dependency "wikicloth"
+ s.add_development_dependency "markaby"
s.add_development_dependency "rake"
end
diff --git a/spec/capture_spec.rb b/spec/capture_spec.rb
index d621d3e..f21b6f0 100644
--- a/spec/capture_spec.rb
+++ b/spec/capture_spec.rb
@@ -1,7 +1,6 @@
# -*- coding: utf-8 -*-
-require 'backports'
require 'slim'
-require_relative 'spec_helper'
+require 'spec_helper'
describe Sinatra::Capture do
subject do
@@ -42,6 +41,10 @@ describe Sinatra::Capture do
it "handles utf-8 encoding" do
render(:erb, "utf_8").should == "UTF-8 –"
end
+
+ it "handles ISO-8859-1 encoding" do
+ render(:erb, "iso_8859_1").should == "ISO-8859-1 -"
+ end if RUBY_VERSION >= '1.9'
end
end
@@ -91,3 +94,7 @@ Hello #{a.strip}
@@ utf_8
<% a = capture do %>–<% end %>
UTF-8 <%= a %>
+
+@@ iso_8859_1
+<% a = capture do %>-<% end %>
+ISO-8859-1 <%= a.force_encoding("iso-8859-1") %>
diff --git a/spec/config_file_spec.rb b/spec/config_file_spec.rb
index 0508ae5..59404ca 100644
--- a/spec/config_file_spec.rb
+++ b/spec/config_file_spec.rb
@@ -1,5 +1,4 @@
-require 'backports'
-require_relative 'spec_helper'
+require 'spec_helper'
describe Sinatra::ConfigFile do
def config_file(*args, &block)
diff --git a/spec/content_for_spec.rb b/spec/content_for_spec.rb
index ce29b90..d70e625 100644
--- a/spec/content_for_spec.rb
+++ b/spec/content_for_spec.rb
@@ -1,5 +1,4 @@
-require 'backports'
-require_relative 'spec_helper'
+require 'spec_helper'
describe Sinatra::ContentFor do
subject do
diff --git a/spec/cookies_spec.rb b/spec/cookies_spec.rb
index 441cdd4..59e6512 100644
--- a/spec/cookies_spec.rb
+++ b/spec/cookies_spec.rb
@@ -1,5 +1,4 @@
-require 'backports'
-require_relative 'spec_helper'
+require 'spec_helper'
describe Sinatra::Cookies do
def cookie_route(*cookies, &block)
@@ -9,7 +8,7 @@ describe Sinatra::Cookies do
result = instance_eval(&block)
"ok"
end
- get '/'
+ get '/', {}, @headers || {}
last_response.should be_ok
body.should be == "ok"
result
@@ -33,7 +32,7 @@ describe Sinatra::Cookies do
it 'runs the block' do
ran = false
cookie_route { ran = true }
- ran.should be_true
+ ran.should be true
end
it 'returns the block result' do
@@ -97,6 +96,14 @@ describe Sinatra::Cookies do
end.should include('HttpOnly')
end
+ it 'sets domain to nil if localhost' do
+ @headers = {'HTTP_HOST' => 'localhost'}
+ cookie_route do
+ cookies['foo'] = 'bar'
+ response['Set-Cookie']
+ end.should_not include("domain")
+ end
+
it 'sets the domain' do
cookie_route do
cookies['foo'] = 'bar'
@@ -275,7 +282,7 @@ describe Sinatra::Cookies do
cookies.each do |key, value|
key.should == 'foo'
value.should == 'baz'
- seen.should == false
+ seen.should == false
seen = true
end
end
@@ -435,7 +442,7 @@ describe Sinatra::Cookies do
cookie_route do
cookies['foo'] = 'bar'
cookies.empty?
- end.should be_false
+ end.should be false
end
it 'becomes true if response cookies are removed' do
@@ -443,14 +450,14 @@ describe Sinatra::Cookies do
cookies['foo'] = 'bar'
cookies.delete :foo
cookies.empty?
- end.should be_true
+ end.should be true
end
it 'becomes true if request cookies are removed' do
cookie_route('foo=bar') do
cookies.delete :foo
cookies.empty?
- end.should be_true
+ end.should be_truthy
end
it 'becomes true after clear' do
@@ -458,7 +465,7 @@ describe Sinatra::Cookies do
cookies['foo'] = 'bar'
cookies.clear
cookies.empty?
- end.should be_true
+ end.should be_truthy
end
end
@@ -595,19 +602,19 @@ describe Sinatra::Cookies do
describe :key? do
it 'checks request cookies' do
- cookies('foo=bar').key?('foo').should be_true
+ cookies('foo=bar').key?('foo').should be true
end
it 'checks response cookies' do
jar = cookies
jar['foo'] = 'bar'
- jar.key?(:foo).should be_true
+ jar.key?(:foo).should be true
end
it 'does not use deleted cookies' do
jar = cookies('foo=bar')
jar.delete :foo
- jar.key?('foo').should be_false
+ jar.key?('foo').should be false
end
end
@@ -622,19 +629,19 @@ describe Sinatra::Cookies do
describe :member? do
it 'checks request cookies' do
- cookies('foo=bar').member?('foo').should be_true
+ cookies('foo=bar').member?('foo').should be true
end
it 'checks response cookies' do
jar = cookies
jar['foo'] = 'bar'
- jar.member?(:foo).should be_true
+ jar.member?(:foo).should be true
end
it 'does not use deleted cookies' do
jar = cookies('foo=bar')
jar.delete :foo
- jar.member?('foo').should be_false
+ jar.member?('foo').should be false
end
end
@@ -776,19 +783,19 @@ describe Sinatra::Cookies do
describe :value? do
it 'checks request cookies' do
- cookies('foo=bar').value?('bar').should be_true
+ cookies('foo=bar').value?('bar').should be true
end
it 'checks response cookies' do
jar = cookies
jar[:foo] = 'bar'
- jar.value?('bar').should be_true
+ jar.value?('bar').should be true
end
it 'does not use deleted cookies' do
jar = cookies('foo=bar')
jar.delete :foo
- jar.value?('bar').should_not be_true
+ jar.value?('bar').should be false
end
end
diff --git a/spec/custom_logger_spec.rb b/spec/custom_logger_spec.rb
new file mode 100644
index 0000000..cef1f26
--- /dev/null
+++ b/spec/custom_logger_spec.rb
@@ -0,0 +1,43 @@
+require 'spec_helper'
+require 'sinatra/custom_logger'
+
+describe Sinatra::CustomLogger do
+ before do
+ rack_logger = @rack_logger = double
+ mock_app do
+ helpers Sinatra::CustomLogger
+
+ before do
+ env['rack.logger'] = rack_logger
+ end
+
+ get '/' do
+ logger.info 'Logged message'
+ 'Response'
+ end
+ end
+ end
+
+ describe '#logger' do
+ it 'falls back to request.logger' do
+ expect(@rack_logger).to receive(:info).with('Logged message')
+ get '/'
+ end
+
+ context 'logger setting is set' do
+ before do
+ custom_logger = @custom_logger = double
+ @app.class_eval do
+ configure do
+ set :logger, custom_logger
+ end
+ end
+ end
+
+ it 'calls custom logger' do
+ expect(@custom_logger).to receive(:info).with('Logged message')
+ get '/'
+ end
+ end
+ end
+end
diff --git a/spec/decompile_spec.rb b/spec/decompile_spec.rb
index ffb2bdb..d3686a1 100644
--- a/spec/decompile_spec.rb
+++ b/spec/decompile_spec.rb
@@ -1,5 +1,4 @@
-require 'backports'
-require_relative 'spec_helper'
+require 'spec_helper'
RSpec::Matchers.define :decompile do |path|
match do |app|
diff --git a/spec/extension_spec.rb b/spec/extension_spec.rb
index 0188305..97db575 100644
--- a/spec/extension_spec.rb
+++ b/spec/extension_spec.rb
@@ -1,5 +1,4 @@
-require 'backports'
-require_relative 'spec_helper'
+require 'spec_helper'
describe Sinatra::Extension do
module ExampleExtension
@@ -24,7 +23,7 @@ describe Sinatra::Extension do
before { mock_app { register ExampleExtension }}
it('allows using set') { settings.foo.should == :bar }
- it('implements configure') { settings.reload_stuff.should be_false }
+ it('implements configure') { settings.reload_stuff.should be false }
it 'allows defing routes' do
get('/').should be_ok
diff --git a/spec/json_spec.rb b/spec/json_spec.rb
index 4120aef..d436a12 100644
--- a/spec/json_spec.rb
+++ b/spec/json_spec.rb
@@ -1,8 +1,7 @@
-require 'backports'
require 'multi_json'
-require_relative 'spec_helper'
-require_relative 'okjson'
+require 'spec_helper'
+require 'okjson'
shared_examples_for "a json encoder" do |lib, const|
before do
diff --git a/spec/link_header_spec.rb b/spec/link_header_spec.rb
index cf8d30b..31f6b34 100644
--- a/spec/link_header_spec.rb
+++ b/spec/link_header_spec.rb
@@ -1,5 +1,4 @@
-require 'backports'
-require_relative 'spec_helper'
+require 'spec_helper'
describe Sinatra::LinkHeader do
before do
diff --git a/spec/multi_route_spec.rb b/spec/multi_route_spec.rb
index 03536b6..e4d747e 100644
--- a/spec/multi_route_spec.rb
+++ b/spec/multi_route_spec.rb
@@ -1,5 +1,4 @@
-require 'backports'
-require_relative 'spec_helper'
+require 'spec_helper'
describe Sinatra::MultiRoute do
diff --git a/spec/namespace_spec.rb b/spec/namespace_spec.rb
index 95379ac..f10d91b 100644
--- a/spec/namespace_spec.rb
+++ b/spec/namespace_spec.rb
@@ -1,5 +1,4 @@
-require 'backports'
-require_relative 'spec_helper'
+require 'spec_helper'
describe Sinatra::Namespace do
verbs = [:get, :head, :post, :put, :delete, :options]
@@ -44,7 +43,7 @@ describe Sinatra::Namespace do
it 'accepts the path as a regular expression' do
namespace('/foo') { send(verb, /\/\d\d/) { 'bar' }}
send(verb, '/foo/12').should be_ok
- body.should == 'bar' unless verb == :head
+ body.should eq 'bar' unless verb == :head
send(verb, '/foo/123').should_not be_ok
end
end
@@ -119,14 +118,14 @@ describe Sinatra::Namespace do
ran = false
namespace('/foo') { before { ran = true }}
send(verb, '/foo')
- ran.should be_true
+ ran.should be true
end
specify 'are not triggered for a different namespace' do
ran = false
namespace('/foo') { before { ran = true }}
send(verb, '/fox')
- ran.should be_false
+ ran.should be false
end
end
@@ -135,14 +134,14 @@ describe Sinatra::Namespace do
ran = false
namespace('/foo') { after { ran = true }}
send(verb, '/foo')
- ran.should be_true
+ ran.should be true
end
specify 'are not triggered for a different namespace' do
ran = false
namespace('/foo') { after { ran = true }}
send(verb, '/fox')
- ran.should be_false
+ ran.should be false
end
end
@@ -177,13 +176,13 @@ describe Sinatra::Namespace do
send(verb, '/*') { 'ok' }
end
send(verb, '/foo', {}, 'HTTP_HOST' => 'example.org', 'HTTP_ACCEPT' => 'text/plain')
- ran.should be_false
+ ran.should be false
send(verb, '/foo', {}, 'HTTP_HOST' => 'example.com', 'HTTP_ACCEPT' => 'text/html')
- ran.should be_false
+ ran.should be false
send(verb, '/bar', {}, 'HTTP_HOST' => 'example.com', 'HTTP_ACCEPT' => 'text/plain')
- ran.should be_false
+ ran.should be false
send(verb, '/foo', {}, 'HTTP_HOST' => 'example.com', 'HTTP_ACCEPT' => 'text/plain')
- ran.should be_true
+ ran.should be true
end
specify 'are accepted in the after-filter' do
@@ -193,13 +192,13 @@ describe Sinatra::Namespace do
send(verb, '/*') { 'ok' }
end
send(verb, '/foo', {}, 'HTTP_HOST' => 'example.org', 'HTTP_ACCEPT' => 'text/plain')
- ran.should be_false
+ ran.should be false
send(verb, '/foo', {}, 'HTTP_HOST' => 'example.com', 'HTTP_ACCEPT' => 'text/html')
- ran.should be_false
+ ran.should be false
send(verb, '/bar', {}, 'HTTP_HOST' => 'example.com', 'HTTP_ACCEPT' => 'text/plain')
- ran.should be_false
+ ran.should be false
send(verb, '/foo', {}, 'HTTP_HOST' => 'example.com', 'HTTP_ACCEPT' => 'text/plain')
- ran.should be_true
+ ran.should be true
end
end
@@ -232,9 +231,9 @@ describe Sinatra::Namespace do
send(verb) { 'ok' }
end
send(verb, '/foo', {}, 'HTTP_HOST' => 'example.org')
- ran.should be_false
+ ran.should be false
send(verb, '/foo', {}, 'HTTP_HOST' => 'example.com')
- ran.should be_true
+ ran.should be true
end
specify 'are accepted in the route definition' do
@@ -253,11 +252,11 @@ describe Sinatra::Namespace do
send(verb) { 'ok' }
end
send(verb, '/', {}, 'HTTP_HOST' => 'example.org', 'HTTP_ACCEPT' => 'text/plain')
- ran.should be_false
+ ran.should be false
send(verb, '/', {}, 'HTTP_HOST' => 'example.com', 'HTTP_ACCEPT' => 'text/html')
- ran.should be_false
+ ran.should be false
send(verb, '/', {}, 'HTTP_HOST' => 'example.com', 'HTTP_ACCEPT' => 'text/plain')
- ran.should be_true
+ ran.should be true
end
specify 'are accepted in the filters' do
@@ -267,13 +266,13 @@ describe Sinatra::Namespace do
send(verb, '/*') { 'ok' }
end
send(verb, '/foo', {}, 'HTTP_HOST' => 'example.org', 'HTTP_ACCEPT' => 'text/plain')
- ran.should be_false
+ ran.should be false
send(verb, '/foo', {}, 'HTTP_HOST' => 'example.com', 'HTTP_ACCEPT' => 'text/html')
- ran.should be_false
+ ran.should be false
send(verb, '/far', {}, 'HTTP_HOST' => 'example.com', 'HTTP_ACCEPT' => 'text/plain')
- ran.should be_false
+ ran.should be false
send(verb, '/foo', {}, 'HTTP_HOST' => 'example.com', 'HTTP_ACCEPT' => 'text/plain')
- ran.should be_true
+ ran.should be true
end
end
end
@@ -479,24 +478,24 @@ describe Sinatra::Namespace do
namespace('/de') do
not_found { 'nicht gefunden' }
end
- send(verb, '/foo').status.should == 404
- last_response.body.should_not == 'nicht gefunden' unless verb == :head
- get('/en/foo').status.should == 404
- last_response.body.should_not == 'nicht gefunden' unless verb == :head
- get('/de/foo').status.should == 404
- last_response.body.should == 'nicht gefunden' unless verb == :head
+ send(verb, '/foo').status.should eq 404
+ last_response.body.should_not eq 'nicht gefunden' unless verb == :head
+ get('/en/foo').status.should eq 404
+ last_response.body.should_not eq 'nicht gefunden' unless verb == :head
+ get('/de/foo').status.should eq 404
+ last_response.body.should eq 'nicht gefunden' unless verb == :head
end
it 'can be customized for specific error codes' do
namespace('/de') do
error(404) { 'nicht gefunden' }
end
- send(verb, '/foo').status.should == 404
- last_response.body.should_not == 'nicht gefunden' unless verb == :head
- get('/en/foo').status.should == 404
- last_response.body.should_not == 'nicht gefunden' unless verb == :head
- get('/de/foo').status.should == 404
- last_response.body.should == 'nicht gefunden' unless verb == :head
+ send(verb, '/foo').status.should eq 404
+ last_response.body.should_not eq 'nicht gefunden' unless verb == :head
+ get('/en/foo').status.should eq 404
+ last_response.body.should_not eq 'nicht gefunden' unless verb == :head
+ get('/de/foo').status.should eq 404
+ last_response.body.should eq 'nicht gefunden' unless verb == :head
end
it 'falls back to the handler defined in the base app' do
@@ -508,12 +507,12 @@ describe Sinatra::Namespace do
error(404) { 'nicht gefunden' }
end
end
- send(verb, '/foo').status.should == 404
- last_response.body.should == 'not found...' unless verb == :head
- get('/en/foo').status.should == 404
- last_response.body.should == 'not found...' unless verb == :head
- get('/de/foo').status.should == 404
- last_response.body.should == 'nicht gefunden' unless verb == :head
+ send(verb, '/foo').status.should eq 404
+ last_response.body.should eq 'not found...' unless verb == :head
+ get('/en/foo').status.should eq 404
+ last_response.body.should eq 'not found...' unless verb == :head
+ get('/de/foo').status.should eq 404
+ last_response.body.should eq 'nicht gefunden' unless verb == :head
end
it 'can be customized for specific Exception classes' do
@@ -543,10 +542,28 @@ describe Sinatra::Namespace do
end
end
end
- get('/en/foo').status.should == 401
- last_response.body.should == 'auth failed' unless verb == :head
- get('/de/foo').status.should == 406
- last_response.body.should == 'methode nicht erlaubt' unless verb == :head
+ get('/en/foo').status.should eq 401
+ last_response.body.should eq 'auth failed' unless verb == :head
+ get('/de/foo').status.should eq 406
+ last_response.body.should eq 'methode nicht erlaubt' unless verb == :head
+ end
+
+ it "allows custom error handlers when namespace is declared as /en/:id. Issue #119" do
+ mock_app {
+ class CError < StandardError;
+ end
+
+ error { raise "should not come here" }
+
+ namespace('/en/:id') do
+ error(CError) { 201 }
+ get '/?' do
+ raise CError
+ end
+ end
+ }
+
+ get('/en/1').status.should == 201
end
end
@@ -561,8 +578,8 @@ describe Sinatra::Namespace do
end
end
- send(verb, '/').body.should == 'hi'
- send(verb, '/foo').body.should == 'hi'
+ send(verb, '/').body.should eq 'hi'
+ send(verb, '/foo').body.should eq 'hi'
end
specify 'can be nested' do
@@ -575,8 +592,8 @@ describe Sinatra::Namespace do
end
end
- send(verb, '/').body.should == 'hi'
- send(verb, '/foo').body.should == 'ho'
+ send(verb, '/').body.should eq 'hi'
+ send(verb, '/foo').body.should eq 'ho'
end
specify 'can use a custom views directory' do
@@ -589,8 +606,8 @@ describe Sinatra::Namespace do
end
end
- send(verb, '/').body.should == "hi\n"
- send(verb, '/foo').body.should == "ho\n"
+ send(verb, '/').body.should eq "hi\n"
+ send(verb, '/foo').body.should eq "ho\n"
end
specify 'default to the base app\'s layout' do
@@ -604,8 +621,8 @@ describe Sinatra::Namespace do
end
end
- send(verb, '/').body.should == 'he said: hi'
- send(verb, '/foo').body.should == 'he said: ho'
+ send(verb, '/').body.should eq 'he said: hi'
+ send(verb, '/foo').body.should eq 'he said: ho'
end
specify 'can define nested layouts' do
@@ -619,8 +636,8 @@ describe Sinatra::Namespace do
end
end
- send(verb, '/').body.should == 'Hello World!'
- send(verb, '/foo').body.should == 'Hi World!'
+ send(verb, '/').body.should eq 'Hello World!'
+ send(verb, '/foo').body.should eq 'Hi World!'
end
end
end
@@ -634,7 +651,7 @@ describe Sinatra::Namespace do
value = foo
end
end
- value.should == 42
+ value.should eq 42
end
specify 'can be registered within a namespace' do
@@ -647,8 +664,8 @@ describe Sinatra::Namespace do
end
b = views
end
- a.should == 'CUSTOM!!!'
- b.should_not == 'CUSTOM!!!'
+ a.should eq 'CUSTOM!!!'
+ b.should_not eq 'CUSTOM!!!'
end
specify 'trigger the route_added hook' do
@@ -664,7 +681,7 @@ describe Sinatra::Namespace do
end
get('/bar') { }
end
- route[1].should == '/foo'
+ route[1].should eq '/foo'
end
specify 'prevent app-global settings from being changed' do
@@ -673,4 +690,52 @@ describe Sinatra::Namespace do
end
end
end
+
+ describe 'settings' do
+ it 'provides access to top-level settings' do
+ mock_app do
+ set :foo, 'ok'
+
+ namespace '/foo' do
+ get '/bar' do
+ settings.foo
+ end
+ end
+ end
+
+ get('/foo/bar').status.should == 200
+ last_response.body.should == 'ok'
+ end
+
+ it 'uses some repro' do
+ mock_app do
+ set :foo, 42
+
+ namespace '/foo' do
+ get '/bar' do
+ #settings.respond_to?(:foo).to_s
+ settings.foo.to_s
+ end
+ end
+ end
+
+ get('/foo/bar').status.should == 200
+ last_response.body.should == '42'
+ end
+
+ it 'allows checking setting existence with respond_to?' do
+ mock_app do
+ set :foo, 42
+
+ namespace '/foo' do
+ get '/bar' do
+ settings.respond_to?(:foo).to_s
+ end
+ end
+ end
+
+ get('/foo/bar').status.should == 200
+ last_response.body.should == 'true'
+ end
+ end
end
diff --git a/spec/reloader_spec.rb b/spec/reloader_spec.rb
index 2ec6679..0824608 100644
--- a/spec/reloader_spec.rb
+++ b/spec/reloader_spec.rb
@@ -1,5 +1,4 @@
-require 'backports'
-require_relative 'spec_helper'
+require 'spec_helper'
require 'fileutils'
describe Sinatra::Reloader do
diff --git a/spec/respond_with/bar.erb b/spec/respond_with/bar.erb
index b497879..fc97158 100644
--- a/spec/respond_with/bar.erb
+++ b/spec/respond_with/bar.erb
@@ -1 +1 @@
-Girl! I wanna take you to a ... bar!
\ No newline at end of file
+guten Tag!
\ No newline at end of file
diff --git a/spec/respond_with_spec.rb b/spec/respond_with_spec.rb
index 4706b3a..18344fc 100644
--- a/spec/respond_with_spec.rb
+++ b/spec/respond_with_spec.rb
@@ -1,8 +1,7 @@
-require 'backports'
require 'multi_json'
-require_relative 'spec_helper'
-require_relative 'okjson'
+require 'spec_helper'
+require 'okjson'
describe Sinatra::RespondWith do
def provides(*args)
@@ -199,7 +198,7 @@ describe Sinatra::RespondWith do
it 'looks for templates with name.engine for specific engines' do
respond_with :bar
req(:html).should be_ok
- body.should == "Girl! I wanna take you to a ... bar!"
+ body.should == "guten Tag!"
end
it 'does not use name.engine for engines producing other formats' do
diff --git a/spec/spec_helper.rb b/spec/spec_helper.rb
index 6efe09d..7f1191e 100644
--- a/spec/spec_helper.rb
+++ b/spec/spec_helper.rb
@@ -2,6 +2,6 @@ ENV['RACK_ENV'] = 'test'
require 'sinatra/contrib'
RSpec.configure do |config|
- config.expect_with :rspec#, :stdlib
+ config.expect_with :rspec
config.include Sinatra::TestHelpers
end
diff --git a/spec/streaming_spec.rb b/spec/streaming_spec.rb
index 80745b8..a881682 100644
--- a/spec/streaming_spec.rb
+++ b/spec/streaming_spec.rb
@@ -1,5 +1,5 @@
require 'backports'
-require_relative 'spec_helper'
+require 'spec_helper'
describe Sinatra::Streaming do
def stream(&block)
@@ -26,7 +26,7 @@ describe Sinatra::Streaming do
it 'runs the given block' do
ran = false
stream { ran = true }
- ran.should be_true
+ ran.should be true
end
it 'returns the stream object' do
@@ -334,7 +334,7 @@ describe Sinatra::Streaming do
fired = false
out.callback { fired = true }
out.close
- fired.should be_true
+ fired.should be true
end
end
--
Alioth's /usr/local/bin/git-commit-notice on /srv/git.debian.org/git/pkg-ruby-extras/ruby-sinatra-contrib.git
More information about the Pkg-ruby-extras-commits
mailing list