rack-rewrite 1.2.1 → 1.3.0
This diff represents the content of publicly available package versions that have been released to one of the supported registries. The information contained in this diff is provided for informational purposes only and reflects changes between package versions as they appear in their respective public registries.
- data/Gemfile.lock +3 -3
- data/README.rdoc +42 -10
- data/Rakefile +2 -2
- data/VERSION +1 -1
- data/lib/rack/rewrite/rule.rb +38 -0
- data/rack-rewrite.gemspec +3 -4
- data/test/rack-rewrite_test.rb +20 -16
- data/test/rule_test.rb +14 -10
- data/test/test_helper.rb +4 -0
- metadata +35 -17
    
        data/Gemfile.lock
    CHANGED
    
    | @@ -1,20 +1,20 @@ | |
| 1 1 | 
             
            PATH
         | 
| 2 2 | 
             
              remote: .
         | 
| 3 3 | 
             
              specs:
         | 
| 4 | 
            -
                rack-rewrite (1. | 
| 4 | 
            +
                rack-rewrite (1.3.0)
         | 
| 5 5 |  | 
| 6 6 | 
             
            GEM
         | 
| 7 7 | 
             
              remote: http://rubygems.org/
         | 
| 8 8 | 
             
              specs:
         | 
| 9 9 | 
             
                mocha (0.9.12)
         | 
| 10 | 
            -
                rack (1. | 
| 10 | 
            +
                rack (1.4.1)
         | 
| 11 11 | 
             
                shoulda (2.10.3)
         | 
| 12 12 |  | 
| 13 13 | 
             
            PLATFORMS
         | 
| 14 14 | 
             
              ruby
         | 
| 15 15 |  | 
| 16 16 | 
             
            DEPENDENCIES
         | 
| 17 | 
            -
              bundler | 
| 17 | 
            +
              bundler
         | 
| 18 18 | 
             
              mocha (~> 0.9.7)
         | 
| 19 19 | 
             
              rack
         | 
| 20 20 | 
             
              rack-rewrite!
         | 
    
        data/README.rdoc
    CHANGED
    
    | @@ -16,21 +16,53 @@ can get away with rack-rewrite instead of writing Apache mod_rewrite rules. | |
| 16 16 | 
             
              gem 'rack-rewrite', '~> 1.2.1'
         | 
| 17 17 | 
             
              require 'rack/rewrite'
         | 
| 18 18 | 
             
              use Rack::Rewrite do
         | 
| 19 | 
            -
                rewrite | 
| 20 | 
            -
                r301 | 
| 21 | 
            -
                r302 | 
| 22 | 
            -
                r301 | 
| 19 | 
            +
                rewrite   '/wiki/John_Trupiano',  '/john'
         | 
| 20 | 
            +
                r301      '/wiki/Yair_Flicker',   '/yair'
         | 
| 21 | 
            +
                r302      '/wiki/Greg_Jastrab',   '/greg'
         | 
| 22 | 
            +
                r301      %r{/wiki/(\w+)_\w+},    '/$1'
         | 
| 23 23 | 
             
              end
         | 
| 24 24 |  | 
| 25 25 | 
             
            === Sample usage in a rails app
         | 
| 26 26 |  | 
| 27 27 | 
             
              config.middleware.insert_before(Rack::Lock, Rack::Rewrite) do
         | 
| 28 | 
            -
                rewrite | 
| 29 | 
            -
                r301 | 
| 30 | 
            -
                r302 | 
| 31 | 
            -
                r301 | 
| 28 | 
            +
                rewrite   '/wiki/John_Trupiano',  '/john'
         | 
| 29 | 
            +
                r301      '/wiki/Yair_Flicker',   '/yair'
         | 
| 30 | 
            +
                r302      '/wiki/Greg_Jastrab',   '/greg'
         | 
| 31 | 
            +
                r301      %r{/wiki/(\w+)_\w+},    '/$1'
         | 
| 32 32 | 
             
              end
         | 
| 33 33 |  | 
| 34 | 
            +
            == Redirection codes
         | 
| 35 | 
            +
             | 
| 36 | 
            +
            All +redirect+ status codes from the HTTP spec[http://www.w3.org/Protocols/rfc2616/rfc2616-sec10.html] are supported:
         | 
| 37 | 
            +
             | 
| 38 | 
            +
            * 301 moved permanently
         | 
| 39 | 
            +
            * 302 found
         | 
| 40 | 
            +
            * 303 see other
         | 
| 41 | 
            +
            * 307 temporary redirect
         | 
| 42 | 
            +
             | 
| 43 | 
            +
            These translate to the following methods inside the Rack::Rewrite block:
         | 
| 44 | 
            +
             | 
| 45 | 
            +
              r301                '/wiki/John_Trupiano', '/john'
         | 
| 46 | 
            +
              moved_permanently   '/wiki/John_Trupiano', '/john'
         | 
| 47 | 
            +
              p                   '/wiki/John_Trupiano', '/john'    # shortcut alias
         | 
| 48 | 
            +
              
         | 
| 49 | 
            +
              r302                '/wiki/John_Trupiano', '/john'
         | 
| 50 | 
            +
              found               '/wiki/John_Trupiano', '/john'
         | 
| 51 | 
            +
              
         | 
| 52 | 
            +
              r303                '/wiki/John_Trupiano', '/john'
         | 
| 53 | 
            +
              see_other           '/wiki/John_Trupiano', '/john'
         | 
| 54 | 
            +
              
         | 
| 55 | 
            +
              r307                '/wiki/John_Trupiano', '/john'
         | 
| 56 | 
            +
              temporary_redirect  '/wiki/John_Trupiano', '/john'
         | 
| 57 | 
            +
              t                   '/wiki/John_Trupiano', '/john'    # shortcut alias
         | 
| 58 | 
            +
             | 
| 59 | 
            +
            The 303 and 307 codes were added to the HTTP spec to make unambiguously clear
         | 
| 60 | 
            +
            what clients should do with the request method. 303 means that the new request
         | 
| 61 | 
            +
            should always be made via GET. 307 means that the new request should use the
         | 
| 62 | 
            +
            same method as the original request. Status code 302 was left as it is, since
         | 
| 63 | 
            +
            it was already in use by the time these issues came to light. In practice it
         | 
| 64 | 
            +
            behaves the same as 303.
         | 
| 65 | 
            +
             | 
| 34 66 | 
             
            == Use Cases
         | 
| 35 67 |  | 
| 36 68 | 
             
            === Rebuild of existing site in a new technology
         | 
| @@ -128,11 +160,11 @@ and rewrite them as the first name only.  This is an actual catch-all rule we | |
| 128 160 | 
             
            applied when we rebuilt our website in September 2009 
         | 
| 129 161 | 
             
            ( http://www.smartlogicsolutions.com ).
         | 
| 130 162 |  | 
| 131 | 
            -
            === :r301, : | 
| 163 | 
            +
            === :r301, :r302, :r303, :r307
         | 
| 132 164 |  | 
| 133 165 | 
             
            Calls to #r301 and #r302 have the same signature as #rewrite.  The difference,
         | 
| 134 166 | 
             
            however, is that these actually short-circuit the rack stack and send back
         | 
| 135 | 
            -
             | 
| 167 | 
            +
            their respective status codes.  See these examples:
         | 
| 136 168 |  | 
| 137 169 | 
             
              r301 '/wiki/John_Trupiano', '/john'                # [1]
         | 
| 138 170 | 
             
              r301 '/wiki/(.*)', 'http://www.google.com/?q=$1'   # [2]
         | 
    
        data/Rakefile
    CHANGED
    
    | @@ -1,7 +1,8 @@ | |
| 1 1 | 
             
            require 'rubygems'
         | 
| 2 2 | 
             
            require 'rake'
         | 
| 3 | 
            -
             | 
| 4 3 | 
             
            require 'rake/testtask'
         | 
| 4 | 
            +
            require 'rdoc/task'
         | 
| 5 | 
            +
             | 
| 5 6 | 
             
            Rake::TestTask.new(:test) do |test|
         | 
| 6 7 | 
             
              test.libs << 'lib' << 'test' << '.'
         | 
| 7 8 | 
             
              test.pattern = 'test/**/*_test.rb'
         | 
| @@ -23,7 +24,6 @@ end | |
| 23 24 |  | 
| 24 25 | 
             
            task :default => :test
         | 
| 25 26 |  | 
| 26 | 
            -
            require 'rake/rdoctask'
         | 
| 27 27 | 
             
            Rake::RDocTask.new do |rdoc|
         | 
| 28 28 | 
             
              if File.exist?('VERSION')
         | 
| 29 29 | 
             
                version = File.read('VERSION')
         | 
    
        data/VERSION
    CHANGED
    
    | @@ -1 +1 @@ | |
| 1 | 
            -
            1. | 
| 1 | 
            +
            1.3.0
         | 
    
        data/lib/rack/rewrite/rule.rb
    CHANGED
    
    | @@ -27,18 +27,52 @@ module Rack | |
| 27 27 | 
             
                    #
         | 
| 28 28 | 
             
                    #  r301 '/wiki/John_Trupiano', '/john'
         | 
| 29 29 | 
             
                    #  r301 '/contact-us.php', '/contact-us'
         | 
| 30 | 
            +
                    #
         | 
| 31 | 
            +
                    # You can use +moved_permanently+ or just +p+ instead of +r301+.
         | 
| 30 32 | 
             
                    def r301(*args)
         | 
| 31 33 | 
             
                      add_rule :r301, *args
         | 
| 32 34 | 
             
                    end
         | 
| 33 35 |  | 
| 36 | 
            +
                    alias :moved_permanently :r301
         | 
| 37 | 
            +
                    alias :p :r301
         | 
| 38 | 
            +
                    
         | 
| 34 39 | 
             
                    # Creates a redirect rule that will send a 302 when matching.
         | 
| 35 40 | 
             
                    #
         | 
| 36 41 | 
             
                    #  r302 '/wiki/John_Trupiano', '/john'
         | 
| 37 42 | 
             
                    #  r302 '/wiki/(.*)', 'http://www.google.com/?q=$1'
         | 
| 43 | 
            +
                    #
         | 
| 44 | 
            +
                    # You can use +found+ instead of +r302+.
         | 
| 38 45 | 
             
                    def r302(*args)
         | 
| 39 46 | 
             
                      add_rule :r302, *args
         | 
| 40 47 | 
             
                    end
         | 
| 41 48 |  | 
| 49 | 
            +
                    alias :found :r302
         | 
| 50 | 
            +
                    
         | 
| 51 | 
            +
                    # Creates a redirect rule that will send a 303 when matching.
         | 
| 52 | 
            +
                    #
         | 
| 53 | 
            +
                    #  r303 '/wiki/John_Trupiano', '/john'
         | 
| 54 | 
            +
                    #  r303 '/wiki/(.*)', 'http://www.google.com/?q=$1'
         | 
| 55 | 
            +
                    #
         | 
| 56 | 
            +
                    # You can use +see_other+ instead of +r303+.
         | 
| 57 | 
            +
                    def r303(*args)
         | 
| 58 | 
            +
                      add_rule :r303, *args
         | 
| 59 | 
            +
                    end
         | 
| 60 | 
            +
                    
         | 
| 61 | 
            +
                    alias :see_other :r303
         | 
| 62 | 
            +
                    
         | 
| 63 | 
            +
                    # Creates a redirect rule that will send a 307 when matching.
         | 
| 64 | 
            +
                    #
         | 
| 65 | 
            +
                    #  r307 '/wiki/John_Trupiano', '/john'
         | 
| 66 | 
            +
                    #  r307 '/wiki/(.*)', 'http://www.google.com/?q=$1'
         | 
| 67 | 
            +
                    #
         | 
| 68 | 
            +
                    # You can use +temporary_redirect+ or +t+ instead of +r307+.
         | 
| 69 | 
            +
                    def r307(*args)
         | 
| 70 | 
            +
                      add_rule :r307, *args
         | 
| 71 | 
            +
                    end
         | 
| 72 | 
            +
                    
         | 
| 73 | 
            +
                    alias :temporary_redirect :r307
         | 
| 74 | 
            +
                    alias :t :r307
         | 
| 75 | 
            +
                    
         | 
| 42 76 | 
             
                    # Creates a rule that will render a file if matched.
         | 
| 43 77 | 
             
                    #
         | 
| 44 78 | 
             
                    #  send_file /*/, 'public/system/maintenance.html', 
         | 
| @@ -87,6 +121,10 @@ module Rack | |
| 87 121 | 
             
                      [301, {'Location' => interpreted_to, 'Content-Type' => Rack::Mime.mime_type(::File.extname(interpreted_to))}.merge!(additional_headers), [redirect_message(interpreted_to)]]
         | 
| 88 122 | 
             
                    when :r302
         | 
| 89 123 | 
             
                      [302, {'Location' => interpreted_to, 'Content-Type' => Rack::Mime.mime_type(::File.extname(interpreted_to))}.merge!(additional_headers), [redirect_message(interpreted_to)]]
         | 
| 124 | 
            +
                    when :r303
         | 
| 125 | 
            +
                      [303, {'Location' => interpreted_to, 'Content-Type' => Rack::Mime.mime_type(::File.extname(interpreted_to))}.merge!(additional_headers), [redirect_message(interpreted_to)]]
         | 
| 126 | 
            +
                    when :r307
         | 
| 127 | 
            +
                      [307, {'Location' => interpreted_to, 'Content-Type' => Rack::Mime.mime_type(::File.extname(interpreted_to))}.merge!(additional_headers), [redirect_message(interpreted_to)]]
         | 
| 90 128 | 
             
                    when :rewrite
         | 
| 91 129 | 
             
                      # return [200, {}, {:content => env.inspect}]
         | 
| 92 130 | 
             
                      env['REQUEST_URI'] = interpreted_to
         | 
    
        data/rack-rewrite.gemspec
    CHANGED
    
    | @@ -3,10 +3,10 @@ Gem::Specification.new do |s| | |
| 3 3 | 
             
              s.version = File.read('VERSION')
         | 
| 4 4 |  | 
| 5 5 | 
             
              s.required_rubygems_version = Gem::Requirement.new(">= 0") if s.respond_to? :required_rubygems_version=
         | 
| 6 | 
            -
              s.authors = ["John Trupiano"]
         | 
| 6 | 
            +
              s.authors = ["Travis Jeffery", "John Trupiano"]
         | 
| 7 7 | 
             
              s.date = Date.today.to_s
         | 
| 8 8 | 
             
              s.description = %q{A rack middleware for enforcing rewrite rules. In many cases you can get away with rack-rewrite instead of writing Apache mod_rewrite rules.}
         | 
| 9 | 
            -
              s.email = %q{ | 
| 9 | 
            +
              s.email = %q{travisjeffery@gmail.com}
         | 
| 10 10 | 
             
              s.extra_rdoc_files = [
         | 
| 11 11 | 
             
                "LICENSE",
         | 
| 12 12 | 
             
                "History.rdoc",
         | 
| @@ -43,9 +43,8 @@ Gem::Specification.new do |s| | |
| 43 43 | 
             
                "test/rule_test.rb",
         | 
| 44 44 | 
             
                "test/test_helper.rb"
         | 
| 45 45 | 
             
              ]
         | 
| 46 | 
            -
              #s.add_dependency 'rack'
         | 
| 47 46 |  | 
| 48 | 
            -
              s.add_development_dependency 'bundler' | 
| 47 | 
            +
              s.add_development_dependency 'bundler'
         | 
| 49 48 | 
             
              s.add_development_dependency 'shoulda', '~> 2.10.2'
         | 
| 50 49 | 
             
              s.add_development_dependency 'mocha', '~> 0.9.7'
         | 
| 51 50 | 
             
              s.add_development_dependency 'rack'
         | 
    
        data/test/rack-rewrite_test.rb
    CHANGED
    
    | @@ -56,24 +56,28 @@ class RackRewriteTest < Test::Unit::TestCase | |
| 56 56 | 
             
                  should_not_halt
         | 
| 57 57 | 
             
                end
         | 
| 58 58 |  | 
| 59 | 
            -
                 | 
| 60 | 
            -
                   | 
| 61 | 
            -
                     | 
| 62 | 
            -
                       | 
| 63 | 
            -
             | 
| 64 | 
            -
             | 
| 65 | 
            -
             | 
| 66 | 
            -
             | 
| 59 | 
            +
                [301, 302, 303, 307].each do |status|
         | 
| 60 | 
            +
                  context "when a #{status} rule matches" do
         | 
| 61 | 
            +
                    setup {
         | 
| 62 | 
            +
                      @rack = Rack::Rewrite.new(@app) do
         | 
| 63 | 
            +
                        send("r#{status}", '/wiki/Yair_Flicker', '/yair')
         | 
| 64 | 
            +
                      end
         | 
| 65 | 
            +
                    }
         | 
| 66 | 
            +
                    should_halt
         | 
| 67 | 
            +
                    should_location_redirect_to('/yair', status)
         | 
| 68 | 
            +
                  end
         | 
| 67 69 | 
             
                end
         | 
| 68 70 |  | 
| 69 | 
            -
                 | 
| 70 | 
            -
                   | 
| 71 | 
            -
                     | 
| 72 | 
            -
                       | 
| 73 | 
            -
             | 
| 74 | 
            -
             | 
| 75 | 
            -
             | 
| 76 | 
            -
             | 
| 71 | 
            +
                [[:p, 301], [:moved_permanently, 301], [:found, 302], [:see_other, 303], [:t, 307], [:temporary_redirect, 307]].each do |rule|
         | 
| 72 | 
            +
                  context "when a #{rule.first} rule matches" do
         | 
| 73 | 
            +
                    setup {
         | 
| 74 | 
            +
                      @rack = Rack::Rewrite.new(@app) do
         | 
| 75 | 
            +
                        send(rule.first, '/wiki/Yair_Flicker', '/yair')
         | 
| 76 | 
            +
                      end
         | 
| 77 | 
            +
                    }
         | 
| 78 | 
            +
                    should_halt
         | 
| 79 | 
            +
                    should_location_redirect_to('/yair', rule.last)
         | 
| 80 | 
            +
                  end
         | 
| 77 81 | 
             
                end
         | 
| 78 82 |  | 
| 79 83 | 
             
                context 'when a rewrite rule matches' do
         | 
    
        data/test/rule_test.rb
    CHANGED
    
    | @@ -34,16 +34,20 @@ class RuleTest < Test::Unit::TestCase | |
| 34 34 | 
             
              end
         | 
| 35 35 |  | 
| 36 36 | 
             
              context '#Rule#apply' do
         | 
| 37 | 
            -
                 | 
| 38 | 
            -
                   | 
| 39 | 
            -
             | 
| 40 | 
            -
             | 
| 37 | 
            +
                supported_status_codes.each do |rule_type|
         | 
| 38 | 
            +
                  should "set Location header to result of #interpret_to for a #{rule_type}" do
         | 
| 39 | 
            +
                    rule = Rack::Rewrite::Rule.new(rule_type, %r{/abc}, '/def')
         | 
| 40 | 
            +
                    env = {'PATH_INFO' => '/abc'}
         | 
| 41 | 
            +
                    assert_equal rule.send(:interpret_to, '/abc'), rule.apply!(env)[1]['Location']
         | 
| 42 | 
            +
                  end
         | 
| 41 43 | 
             
                end
         | 
| 42 44 |  | 
| 43 | 
            -
                 | 
| 44 | 
            -
                   | 
| 45 | 
            -
             | 
| 46 | 
            -
             | 
| 45 | 
            +
                supported_status_codes.each do |rule_type|
         | 
| 46 | 
            +
                  should "include a link to the result of #interpret_to for a #{rule_type}" do
         | 
| 47 | 
            +
                    rule = Rack::Rewrite::Rule.new(rule_type, %r{/abc}, '/def')
         | 
| 48 | 
            +
                    env = {'PATH_INFO' => '/abc'}
         | 
| 49 | 
            +
                    assert_match /\/def/, rule.apply!(env)[2][0]
         | 
| 50 | 
            +
                  end
         | 
| 47 51 | 
             
                end
         | 
| 48 52 |  | 
| 49 53 | 
             
                should 'keep the QUERY_STRING when a 301 rule matches a URL with a querystring' do
         | 
| @@ -71,7 +75,7 @@ class RuleTest < Test::Unit::TestCase | |
| 71 75 | 
             
                end
         | 
| 72 76 |  | 
| 73 77 | 
             
                should 'set Content-Type header to text/html for a 301 and 302 request for a .html page' do
         | 
| 74 | 
            -
                   | 
| 78 | 
            +
                  supported_status_codes.each do |rule_type|
         | 
| 75 79 | 
             
                    rule = Rack::Rewrite::Rule.new(rule_type, %r{/abc}, '/def.html')
         | 
| 76 80 | 
             
                    env = {'PATH_INFO' => '/abc'}
         | 
| 77 81 | 
             
                    assert_equal 'text/html', rule.apply!(env)[1]['Content-Type']
         | 
| @@ -79,7 +83,7 @@ class RuleTest < Test::Unit::TestCase | |
| 79 83 | 
             
                end
         | 
| 80 84 |  | 
| 81 85 | 
             
                should 'set Content-Type header to text/css for a 301 and 302 request for a .css page' do
         | 
| 82 | 
            -
                   | 
| 86 | 
            +
                  supported_status_codes.each do |rule_type|
         | 
| 83 87 | 
             
                    rule = Rack::Rewrite::Rule.new(rule_type, %r{/abc}, '/def.css')
         | 
| 84 88 | 
             
                    env = {'PATH_INFO' => '/abc'}
         | 
| 85 89 | 
             
                    assert_equal 'text/css', rule.apply!(env)[1]['Content-Type']
         | 
    
        data/test/test_helper.rb
    CHANGED
    
    
    
        metadata
    CHANGED
    
    | @@ -1,31 +1,36 @@ | |
| 1 1 | 
             
            --- !ruby/object:Gem::Specification
         | 
| 2 2 | 
             
            name: rack-rewrite
         | 
| 3 3 | 
             
            version: !ruby/object:Gem::Version
         | 
| 4 | 
            -
              version: 1. | 
| 4 | 
            +
              version: 1.3.0
         | 
| 5 5 | 
             
              prerelease: 
         | 
| 6 6 | 
             
            platform: ruby
         | 
| 7 7 | 
             
            authors:
         | 
| 8 | 
            +
            - Travis Jeffery
         | 
| 8 9 | 
             
            - John Trupiano
         | 
| 9 10 | 
             
            autorequire: 
         | 
| 10 11 | 
             
            bindir: bin
         | 
| 11 12 | 
             
            cert_chain: []
         | 
| 12 | 
            -
            date:  | 
| 13 | 
            -
            default_executable: 
         | 
| 13 | 
            +
            date: 2012-10-13 00:00:00.000000000 Z
         | 
| 14 14 | 
             
            dependencies:
         | 
| 15 15 | 
             
            - !ruby/object:Gem::Dependency
         | 
| 16 16 | 
             
              name: bundler
         | 
| 17 | 
            -
              requirement:  | 
| 17 | 
            +
              requirement: !ruby/object:Gem::Requirement
         | 
| 18 18 | 
             
                none: false
         | 
| 19 19 | 
             
                requirements:
         | 
| 20 | 
            -
                - -  | 
| 20 | 
            +
                - - ! '>='
         | 
| 21 21 | 
             
                  - !ruby/object:Gem::Version
         | 
| 22 | 
            -
                    version:  | 
| 22 | 
            +
                    version: '0'
         | 
| 23 23 | 
             
              type: :development
         | 
| 24 24 | 
             
              prerelease: false
         | 
| 25 | 
            -
              version_requirements:  | 
| 25 | 
            +
              version_requirements: !ruby/object:Gem::Requirement
         | 
| 26 | 
            +
                none: false
         | 
| 27 | 
            +
                requirements:
         | 
| 28 | 
            +
                - - ! '>='
         | 
| 29 | 
            +
                  - !ruby/object:Gem::Version
         | 
| 30 | 
            +
                    version: '0'
         | 
| 26 31 | 
             
            - !ruby/object:Gem::Dependency
         | 
| 27 32 | 
             
              name: shoulda
         | 
| 28 | 
            -
              requirement:  | 
| 33 | 
            +
              requirement: !ruby/object:Gem::Requirement
         | 
| 29 34 | 
             
                none: false
         | 
| 30 35 | 
             
                requirements:
         | 
| 31 36 | 
             
                - - ~>
         | 
| @@ -33,10 +38,15 @@ dependencies: | |
| 33 38 | 
             
                    version: 2.10.2
         | 
| 34 39 | 
             
              type: :development
         | 
| 35 40 | 
             
              prerelease: false
         | 
| 36 | 
            -
              version_requirements:  | 
| 41 | 
            +
              version_requirements: !ruby/object:Gem::Requirement
         | 
| 42 | 
            +
                none: false
         | 
| 43 | 
            +
                requirements:
         | 
| 44 | 
            +
                - - ~>
         | 
| 45 | 
            +
                  - !ruby/object:Gem::Version
         | 
| 46 | 
            +
                    version: 2.10.2
         | 
| 37 47 | 
             
            - !ruby/object:Gem::Dependency
         | 
| 38 48 | 
             
              name: mocha
         | 
| 39 | 
            -
              requirement:  | 
| 49 | 
            +
              requirement: !ruby/object:Gem::Requirement
         | 
| 40 50 | 
             
                none: false
         | 
| 41 51 | 
             
                requirements:
         | 
| 42 52 | 
             
                - - ~>
         | 
| @@ -44,10 +54,15 @@ dependencies: | |
| 44 54 | 
             
                    version: 0.9.7
         | 
| 45 55 | 
             
              type: :development
         | 
| 46 56 | 
             
              prerelease: false
         | 
| 47 | 
            -
              version_requirements:  | 
| 57 | 
            +
              version_requirements: !ruby/object:Gem::Requirement
         | 
| 58 | 
            +
                none: false
         | 
| 59 | 
            +
                requirements:
         | 
| 60 | 
            +
                - - ~>
         | 
| 61 | 
            +
                  - !ruby/object:Gem::Version
         | 
| 62 | 
            +
                    version: 0.9.7
         | 
| 48 63 | 
             
            - !ruby/object:Gem::Dependency
         | 
| 49 64 | 
             
              name: rack
         | 
| 50 | 
            -
              requirement:  | 
| 65 | 
            +
              requirement: !ruby/object:Gem::Requirement
         | 
| 51 66 | 
             
                none: false
         | 
| 52 67 | 
             
                requirements:
         | 
| 53 68 | 
             
                - - ! '>='
         | 
| @@ -55,10 +70,15 @@ dependencies: | |
| 55 70 | 
             
                    version: '0'
         | 
| 56 71 | 
             
              type: :development
         | 
| 57 72 | 
             
              prerelease: false
         | 
| 58 | 
            -
              version_requirements:  | 
| 73 | 
            +
              version_requirements: !ruby/object:Gem::Requirement
         | 
| 74 | 
            +
                none: false
         | 
| 75 | 
            +
                requirements:
         | 
| 76 | 
            +
                - - ! '>='
         | 
| 77 | 
            +
                  - !ruby/object:Gem::Version
         | 
| 78 | 
            +
                    version: '0'
         | 
| 59 79 | 
             
            description: A rack middleware for enforcing rewrite rules. In many cases you can
         | 
| 60 80 | 
             
              get away with rack-rewrite instead of writing Apache mod_rewrite rules.
         | 
| 61 | 
            -
            email:  | 
| 81 | 
            +
            email: travisjeffery@gmail.com
         | 
| 62 82 | 
             
            executables: []
         | 
| 63 83 | 
             
            extensions: []
         | 
| 64 84 | 
             
            extra_rdoc_files:
         | 
| @@ -82,7 +102,6 @@ files: | |
| 82 102 | 
             
            - test/rack-rewrite_test.rb
         | 
| 83 103 | 
             
            - test/rule_test.rb
         | 
| 84 104 | 
             
            - test/test_helper.rb
         | 
| 85 | 
            -
            has_rdoc: true
         | 
| 86 105 | 
             
            homepage: http://github.com/jtrupiano/rack-rewrite
         | 
| 87 106 | 
             
            licenses: []
         | 
| 88 107 | 
             
            post_install_message: 
         | 
| @@ -104,13 +123,12 @@ required_rubygems_version: !ruby/object:Gem::Requirement | |
| 104 123 | 
             
                  version: '0'
         | 
| 105 124 | 
             
            requirements: []
         | 
| 106 125 | 
             
            rubyforge_project: johntrupiano
         | 
| 107 | 
            -
            rubygems_version: 1. | 
| 126 | 
            +
            rubygems_version: 1.8.23
         | 
| 108 127 | 
             
            signing_key: 
         | 
| 109 128 | 
             
            specification_version: 3
         | 
| 110 129 | 
             
            summary: A rack middleware for enforcing rewrite rules
         | 
| 111 130 | 
             
            test_files:
         | 
| 112 131 | 
             
            - test/rack-rewrite_test.rb
         | 
| 113 132 | 
             
            - test/geminstaller.yml
         | 
| 114 | 
            -
            - test/rack-rewrite_test.rb
         | 
| 115 133 | 
             
            - test/rule_test.rb
         | 
| 116 134 | 
             
            - test/test_helper.rb
         |