diff --git a/sinatra-contrib/lib/sinatra/capture.rb b/sinatra-contrib/lib/sinatra/capture.rb index ec352aae7b..e219a9315b 100644 --- a/sinatra-contrib/lib/sinatra/capture.rb +++ b/sinatra-contrib/lib/sinatra/capture.rb @@ -1,5 +1,6 @@ require 'sinatra/base' require 'sinatra/engine_tracking' +require 'backports' module Sinatra # @@ -105,12 +106,12 @@ def capture(*args, &block) dummy = DUMMIES.fetch(current_engine) options = { :layout => false, :locals => {:args => args, :block => block }} - buffer.clear if buffer.respond_to?(:clear) + buffer.try :clear result = render(current_engine, dummy, options, &block) end result.strip.empty? && @capture ? @capture : result ensure - buffer.replace(old_buffer) if buffer.respond_to?(:replace) + buffer.try :replace, old_buffer end def capture_later(&block) diff --git a/sinatra-contrib/lib/sinatra/contrib.rb b/sinatra-contrib/lib/sinatra/contrib.rb index e27888b368..2f61b297a3 100644 --- a/sinatra-contrib/lib/sinatra/contrib.rb +++ b/sinatra-contrib/lib/sinatra/contrib.rb @@ -7,32 +7,32 @@ module Contrib # or breaks if external dependencies are missing. Will extend # Sinatra::Application by default. module Common - register :ConfigFile, 'sinatra/config_file' - register :MultiRoute, 'sinatra/multi_route' - register :Namespace, 'sinatra/namespace' - register :RespondWith, 'sinatra/respond_with' + register :ConfigFile + register :MultiRoute + register :Namespace + register :RespondWith - helpers :Capture, 'sinatra/capture' - helpers :ContentFor, 'sinatra/content_for' - helpers :Cookies, 'sinatra/cookies' - helpers :EngineTracking, 'sinatra/engine_tracking' - helpers :JSON, 'sinatra/json' - helpers :LinkHeader, 'sinatra/link_header' - helpers :Streaming, 'sinatra/streaming' - helpers :RequiredParams, 'sinatra/required_params' + helpers :Capture + helpers :ContentFor + helpers :Cookies + helpers :EngineTracking + helpers :JSON + helpers :LinkHeader + helpers :Streaming + helpers :RequiredParams end ## # Other extensions you don't want to be loaded unless needed. module Custom - # register :Compass, 'sinatra/compass' - register :Reloader, 'sinatra/reloader' + # register :Compass + register :Reloader end ## # Stuff that aren't Sinatra extensions, technically. - autoload :Extension, 'sinatra/extension' - autoload :TestHelpers, 'sinatra/test_helpers' + autoload :Extension + autoload :TestHelpers end register Sinatra::Contrib::Common diff --git a/sinatra-contrib/lib/sinatra/contrib/setup.rb b/sinatra-contrib/lib/sinatra/contrib/setup.rb index 61e4f87279..cc427270db 100644 --- a/sinatra-contrib/lib/sinatra/contrib/setup.rb +++ b/sinatra-contrib/lib/sinatra/contrib/setup.rb @@ -1,5 +1,6 @@ require 'sinatra/base' require 'sinatra/contrib/version' +require 'backports' module Sinatra module Contrib @@ -8,15 +9,16 @@ def extensions @extensions ||= {:helpers => [], :register => []} end - def register(name, path) + def register(name, path = nil) autoload name, path, :register end - def helpers(name, path) + def helpers(name, path = nil) autoload name, path, :helpers end - def autoload(name, path, method = nil) + def autoload(name, path = nil, method = nil) + path ||= "sinatra/#{name.to_s.underscore}" extensions[method] << name if method Sinatra.autoload(name, path) end diff --git a/sinatra-contrib/lib/sinatra/cookies.rb b/sinatra-contrib/lib/sinatra/cookies.rb index e30b03f5d8..0bfbfa4d66 100644 --- a/sinatra-contrib/lib/sinatra/cookies.rb +++ b/sinatra-contrib/lib/sinatra/cookies.rb @@ -1,4 +1,5 @@ require 'sinatra/base' +require 'backports' module Sinatra # = Sinatra::Cookies diff --git a/sinatra-contrib/lib/sinatra/extension.rb b/sinatra-contrib/lib/sinatra/extension.rb index 2a5cda78d4..4318a1225e 100644 --- a/sinatra-contrib/lib/sinatra/extension.rb +++ b/sinatra-contrib/lib/sinatra/extension.rb @@ -1,4 +1,5 @@ require 'sinatra/base' +require 'backports/basic_object' unless defined? BasicObject module Sinatra diff --git a/sinatra-contrib/lib/sinatra/namespace.rb b/sinatra-contrib/lib/sinatra/namespace.rb index b3645b918e..cfe6bb97ff 100644 --- a/sinatra-contrib/lib/sinatra/namespace.rb +++ b/sinatra-contrib/lib/sinatra/namespace.rb @@ -1,3 +1,4 @@ +require 'backports' require 'sinatra/base' require 'mustermann' diff --git a/sinatra-contrib/lib/sinatra/streaming.rb b/sinatra-contrib/lib/sinatra/streaming.rb index aa9e717f82..ddd88bdcc8 100644 --- a/sinatra-contrib/lib/sinatra/streaming.rb +++ b/sinatra-contrib/lib/sinatra/streaming.rb @@ -1,4 +1,5 @@ require 'sinatra/base' +require 'backports' module Sinatra diff --git a/sinatra-contrib/sinatra-contrib.gemspec b/sinatra-contrib/sinatra-contrib.gemspec index e5fdb246a8..90f797e975 100644 --- a/sinatra-contrib/sinatra-contrib.gemspec +++ b/sinatra-contrib/sinatra-contrib.gemspec @@ -23,7 +23,8 @@ Gem::Specification.new do |s| s.add_dependency "sinatra", version s.add_dependency "mustermann", "~> 1.0" - s.add_dependency "tilt", ">= 1.3", "< 3" + s.add_dependency "backports", ">= 2.0" + s.add_dependency "tilt", ">= 1.3", "< 3" s.add_dependency "rack-protection", version s.add_dependency "multi_json" diff --git a/sinatra-contrib/spec/streaming_spec.rb b/sinatra-contrib/spec/streaming_spec.rb index 94638c555b..31b81bb04b 100644 --- a/sinatra-contrib/spec/streaming_spec.rb +++ b/sinatra-contrib/spec/streaming_spec.rb @@ -1,3 +1,4 @@ +require 'backports' require 'spec_helper' describe Sinatra::Streaming do