diff --git a/.travis.yml b/.travis.yml index d86d51f..86a4d33 100644 --- a/.travis.yml +++ b/.travis.yml @@ -5,3 +5,6 @@ rvm: - jruby - rbx - ree +gemfiles: + - Gemfile + - Gemfile.rack-1.3.x \ No newline at end of file diff --git a/Gemfile b/Gemfile index fa75df1..586864f 100644 --- a/Gemfile +++ b/Gemfile @@ -1,3 +1,4 @@ source 'https://rubygems.org' +gem 'rack', '~> 1.4' gemspec diff --git a/Gemfile.rack-1.3.x b/Gemfile.rack-1.3.x new file mode 100644 index 0000000..8ca314f --- /dev/null +++ b/Gemfile.rack-1.3.x @@ -0,0 +1,4 @@ +source 'https://rubygems.org' + +gem 'rack', '~> 1.3.0' +gemspec \ No newline at end of file diff --git a/lib/omniauth/builder.rb b/lib/omniauth/builder.rb index bcb16b7..363e4ad 100644 --- a/lib/omniauth/builder.rb +++ b/lib/omniauth/builder.rb @@ -2,6 +2,19 @@ require 'omniauth' module OmniAuth class Builder < ::Rack::Builder + def initialize(app, &block) + if rack14? + super + else + @app = app + super(&block) + end + end + + def rack14? + Rack.release.split('.')[1].to_i >= 4 + end + def on_failure(&block) OmniAuth.config.on_failure = block end @@ -25,6 +38,7 @@ module OmniAuth end def call(env) + @ins << @app unless rack14? || @ins.include?(@app) to_app.call(env) end end diff --git a/omniauth.gemspec b/omniauth.gemspec index a016f9d..a8f96b3 100644 --- a/omniauth.gemspec +++ b/omniauth.gemspec @@ -7,7 +7,7 @@ Gem::Specification.new do |gem| gem.authors = ['Michael Bleigh', 'Erik Michaels-Ober'] gem.email = ['michael@intridea.com', 'sferik@gmail.com'] - gem.add_runtime_dependency 'rack', '~> 1.4' + gem.add_runtime_dependency 'rack' gem.add_runtime_dependency 'hashie', '~> 1.2' gem.add_development_dependency 'growl' @@ -19,7 +19,7 @@ Gem::Specification.new do |gem| gem.add_development_dependency 'rake' gem.add_development_dependency 'rb-fsevent' gem.add_development_dependency 'rdiscount' - gem.add_development_dependency 'rspec' + gem.add_development_dependency 'rspec', '~> 2.8' gem.add_development_dependency 'yard' gem.version = OmniAuth::VERSION