rewritten 0.16.3 → 0.16.4
Sign up to get free protection for your applications and to get access to all the features.
- checksums.yaml +4 -4
- data/HISTORY.rdoc +4 -0
- data/lib/rack/url.rb +14 -0
- data/lib/rewritten/version.rb +1 -1
- data/test/rack/rewritten_url_test.rb +14 -1
- metadata +1 -1
checksums.yaml
CHANGED
@@ -1,7 +1,7 @@
|
|
1
1
|
---
|
2
2
|
SHA1:
|
3
|
-
metadata.gz:
|
4
|
-
data.tar.gz:
|
3
|
+
metadata.gz: a254642e07ed0bb8b46f4c9ebe95a152ac94481e
|
4
|
+
data.tar.gz: 52fe0a75b830039b7d2a0b78a05e13c4e902df53
|
5
5
|
SHA512:
|
6
|
-
metadata.gz:
|
7
|
-
data.tar.gz:
|
6
|
+
metadata.gz: b7835a4629b4980b5276a0a55a3da1d8017ca7cb117b5619b0c52167413ad14a485e10bab38f737fdc4a6e6b2b5b042959f7ca3a21cfdf8d93b2ce59e0e90e53
|
7
|
+
data.tar.gz: a40d86b684035a29ea2be929d94d071a522ac352a4d0a9dc148c6434d6b55dd75f9df87ebf2f3dfb13b190c52747e3ac5840d60349a3eff670a5eb0bd5542f28
|
data/HISTORY.rdoc
CHANGED
data/lib/rack/url.rb
CHANGED
@@ -47,6 +47,20 @@ module Rack
|
|
47
47
|
current_path_with_query = current_path
|
48
48
|
current_path = current_path.split('?')[0]
|
49
49
|
|
50
|
+
if current_path.size + 1 == req.path_info.size and current_path == req.path_info.chomp('/')
|
51
|
+
r = Rack::Response.new
|
52
|
+
|
53
|
+
new_path = env['rack.url_scheme'].dup
|
54
|
+
new_path << '://'
|
55
|
+
new_path << env['HTTP_HOST'].dup.sub(/^#{subdomain.chomp(':')}\./, '')
|
56
|
+
new_path << current_path
|
57
|
+
new_path << ::Rewritten.appendix(path) unless backwards
|
58
|
+
new_path << '?' << env['QUERY_STRING'] unless (env['QUERY_STRING'] || '').empty?
|
59
|
+
|
60
|
+
r.redirect(new_path, 301)
|
61
|
+
return r.finish
|
62
|
+
end
|
63
|
+
|
50
64
|
if (req.fullpath == current_path_with_query || current_path == req.path_info) || (::Rewritten.base_from(req.path_info) == current_path) || ::Rewritten.flag?(path, 'L')
|
51
65
|
# if this is the current path, rewrite path and parameters
|
52
66
|
tpath, tparams = split_to_path_params(to)
|
data/lib/rewritten/version.rb
CHANGED
@@ -134,7 +134,20 @@ describe Rack::Rewritten::Url do
|
|
134
134
|
end
|
135
135
|
|
136
136
|
describe '/ behavior' do
|
137
|
-
it 'must 301 redirect paths with / in the end to their chomped version' do
|
137
|
+
it 'must 301 redirect current paths with / in the end to their chomped version' do
|
138
|
+
ret = @rack.call request_url('/foo/baz/')
|
139
|
+
@app.verify
|
140
|
+
ret[0].must_equal 301
|
141
|
+
ret[1]['Location'].must_equal 'http://www.example.org/foo/baz'
|
142
|
+
end
|
143
|
+
|
144
|
+
it 'wont 301 redirect /' do
|
145
|
+
@app.expect :call, [200, { 'Content-Type' => 'text/plain' }, ['']], [Hash]
|
146
|
+
ret = @rack.call request_url('/')
|
147
|
+
@app.verify
|
148
|
+
end
|
149
|
+
|
150
|
+
it 'must 301 redirect paths with / in the end to their current chomped version' do
|
138
151
|
ret = @rack.call request_url('/foo/bar/')
|
139
152
|
@app.verify
|
140
153
|
ret[0].must_equal 301
|