route_downcaser 0.1.2 → 0.1.3
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/README.rdoc
CHANGED
@@ -1,6 +1,6 @@
|
|
1
1
|
= RouteDowncaser
|
2
2
|
|
3
|
-
Makes routing in Rails case-insensitive
|
3
|
+
Makes routing in Rails case-insensitive (and other Rack-servers like Sinatra)
|
4
4
|
|
5
5
|
This gem hooks into the Rack middleware of Rails. This way all paths are downcased before dispatching to Rails' routing mechanism. Querystring parameters are not changed in any way.
|
6
6
|
|
@@ -8,10 +8,14 @@ This gem hooks into the Rack middleware of Rails. This way all paths are downcas
|
|
8
8
|
|
9
9
|
== Requirements
|
10
10
|
|
11
|
-
This gem
|
11
|
+
This gem has been tested with Rails 3.+ and Sinatra
|
12
|
+
|
13
|
+
If you want this functionality in a Rails 2.x application, please refer to {this blog post}[http://gehling.dk/2010/02/how-to-make-rails-routing-case-insensitive].
|
12
14
|
|
13
15
|
== Installing
|
14
16
|
|
17
|
+
=== Rails
|
18
|
+
|
15
19
|
Just add the gem to your gemfile and run bundle
|
16
20
|
|
17
21
|
gem 'route_downcaser'
|
@@ -29,6 +33,29 @@ If you have a controller named app/controllers/foo_controller.rb and the action
|
|
29
33
|
|
30
34
|
All the above are valid.
|
31
35
|
|
36
|
+
=== Sinatra
|
37
|
+
|
38
|
+
In your Gemfile you add the gem:
|
39
|
+
|
40
|
+
gem 'route_downcaser'
|
41
|
+
|
42
|
+
In your application.rb you add the following (after loading Sinatra)
|
43
|
+
|
44
|
+
require 'route_downcaser'
|
45
|
+
use RouteDowncaser::DowncaseRouteMiddleware
|
46
|
+
|
47
|
+
Now this statement
|
48
|
+
|
49
|
+
get '/foo' do
|
50
|
+
"Hello"
|
51
|
+
end
|
52
|
+
|
53
|
+
will respond to all these requests:
|
54
|
+
|
55
|
+
http://localhost:4567/foo
|
56
|
+
http://localhost:4567/Foo
|
57
|
+
http://localhost:4567/FOO
|
58
|
+
|
32
59
|
== Background information
|
33
60
|
|
34
61
|
Sometimes you may wish to market a url which contains a controller name - like www.myshop.com/specialoffer. If this is done on offline media it will cause potential customers trouble, if they don't use the correct casing. If, for some reason, the user types www.myshop.com/Specialoffer (with capital S), your Rails app will return a 404 not found.
|
@@ -11,7 +11,10 @@ module RouteDowncaser
|
|
11
11
|
env['REQUEST_URI'] = uri_items.join('?')
|
12
12
|
end
|
13
13
|
|
14
|
-
if env['PATH_INFO']
|
14
|
+
if env['PATH_INFO'] =~ /assets\//i
|
15
|
+
pieces = env['PATH_INFO'].split('/')
|
16
|
+
env['PATH_INFO'] = pieces.slice(0..-2).join('/').downcase + '/' + pieces.last
|
17
|
+
elsif env['PATH_INFO']
|
15
18
|
env['PATH_INFO'] = env['PATH_INFO'].downcase
|
16
19
|
end
|
17
20
|
|
Binary file
|
data/test/dummy/log/test.log
CHANGED
@@ -173,3 +173,7 @@ Started GET "/HELLO/WORLD" for 127.0.0.1 at 2013-01-17 12:58:26 +0100
|
|
173
173
|
Processing by HelloController#world as HTML
|
174
174
|
Rendered text template (0.0ms)
|
175
175
|
Completed 200 OK in 52ms (Views: 51.5ms)
|
176
|
+
Started GET "/HELLO/WORLD" for 127.0.0.1 at 2013-02-16 14:33:16 +0100
|
177
|
+
Processing by HelloController#world as HTML
|
178
|
+
Rendered text template (0.0ms)
|
179
|
+
Completed 200 OK in 15ms (Views: 14.6ms)
|
@@ -32,4 +32,12 @@ class RouteDowncaserTest < ActiveSupport::TestCase
|
|
32
32
|
|
33
33
|
assert_equal("hello/world", app.env['PATH_INFO'])
|
34
34
|
end
|
35
|
+
|
36
|
+
test "asset filenames are not touched" do
|
37
|
+
app = MockApp.new
|
38
|
+
env = { 'PATH_INFO' => "ASSETS/IMAges/SpaceCat.jpeg" }
|
39
|
+
RouteDowncaser::DowncaseRouteMiddleware.new(app).call(env)
|
40
|
+
|
41
|
+
assert_equal("assets/images/SpaceCat.jpeg", app.env['PATH_INFO'])
|
42
|
+
end
|
35
43
|
end
|
metadata
CHANGED
@@ -1,7 +1,7 @@
|
|
1
1
|
--- !ruby/object:Gem::Specification
|
2
2
|
name: route_downcaser
|
3
3
|
version: !ruby/object:Gem::Version
|
4
|
-
version: 0.1.
|
4
|
+
version: 0.1.3
|
5
5
|
prerelease:
|
6
6
|
platform: ruby
|
7
7
|
authors:
|
@@ -9,7 +9,7 @@ authors:
|
|
9
9
|
autorequire:
|
10
10
|
bindir: bin
|
11
11
|
cert_chain: []
|
12
|
-
date: 2013-
|
12
|
+
date: 2013-02-16 00:00:00.000000000 Z
|
13
13
|
dependencies: []
|
14
14
|
description: This gem hooks into the Rack middleware of Rails. This way all paths
|
15
15
|
are downcased before dispatching to Rails' routing mechanism. Querystring parameters
|
@@ -20,46 +20,47 @@ executables: []
|
|
20
20
|
extensions: []
|
21
21
|
extra_rdoc_files: []
|
22
22
|
files:
|
23
|
-
- lib/route_downcaser/railtie.rb
|
24
23
|
- lib/route_downcaser/downcase_route_middleware.rb
|
25
24
|
- lib/route_downcaser/version.rb
|
25
|
+
- lib/route_downcaser/railtie.rb
|
26
26
|
- lib/route_downcaser.rb
|
27
27
|
- lib/tasks/route_downcaser_tasks.rake
|
28
28
|
- MIT-LICENSE
|
29
29
|
- Rakefile
|
30
30
|
- README.rdoc
|
31
|
-
- test/dummy/Rakefile
|
32
31
|
- test/dummy/log/test.log
|
33
|
-
- test/dummy/public/
|
32
|
+
- test/dummy/public/500.html
|
34
33
|
- test/dummy/public/favicon.ico
|
35
34
|
- test/dummy/public/422.html
|
36
|
-
- test/dummy/public/
|
35
|
+
- test/dummy/public/404.html
|
36
|
+
- test/dummy/config/locales/en.yml
|
37
37
|
- test/dummy/config/database.yml
|
38
|
-
- test/dummy/config/
|
38
|
+
- test/dummy/config/environment.rb
|
39
39
|
- test/dummy/config/environments/production.rb
|
40
40
|
- test/dummy/config/environments/test.rb
|
41
|
-
- test/dummy/config/
|
42
|
-
- test/dummy/config/environment.rb
|
41
|
+
- test/dummy/config/environments/development.rb
|
43
42
|
- test/dummy/config/routes.rb
|
44
|
-
- test/dummy/config/locales/en.yml
|
45
|
-
- test/dummy/config/initializers/wrap_parameters.rb
|
46
43
|
- test/dummy/config/initializers/backtrace_silencers.rb
|
47
|
-
- test/dummy/config/initializers/session_store.rb
|
48
44
|
- test/dummy/config/initializers/inflections.rb
|
49
|
-
- test/dummy/config/initializers/
|
45
|
+
- test/dummy/config/initializers/session_store.rb
|
50
46
|
- test/dummy/config/initializers/mime_types.rb
|
47
|
+
- test/dummy/config/initializers/wrap_parameters.rb
|
48
|
+
- test/dummy/config/initializers/secret_token.rb
|
49
|
+
- test/dummy/config/boot.rb
|
51
50
|
- test/dummy/config/application.rb
|
52
|
-
- test/dummy/
|
53
|
-
- test/dummy/app/assets/stylesheets/application.css
|
51
|
+
- test/dummy/Rakefile
|
54
52
|
- test/dummy/app/helpers/application_helper.rb
|
55
53
|
- test/dummy/app/views/layouts/application.html.erb
|
56
|
-
- test/dummy/app/controllers/application_controller.rb
|
57
54
|
- test/dummy/app/controllers/hello_controller.rb
|
58
|
-
- test/dummy/
|
55
|
+
- test/dummy/app/controllers/application_controller.rb
|
56
|
+
- test/dummy/app/assets/images/SpaceCat.jpeg
|
57
|
+
- test/dummy/app/assets/javascripts/application.js
|
58
|
+
- test/dummy/app/assets/stylesheets/application.css
|
59
59
|
- test/dummy/config.ru
|
60
|
-
- test/
|
60
|
+
- test/dummy/script/rails
|
61
61
|
- test/integration/route_middleware_test.rb
|
62
62
|
- test/route_downcaser_test.rb
|
63
|
+
- test/test_helper.rb
|
63
64
|
homepage: https://github.com/carstengehling/route_downcaser
|
64
65
|
licenses: []
|
65
66
|
post_install_message:
|
@@ -74,7 +75,7 @@ required_ruby_version: !ruby/object:Gem::Requirement
|
|
74
75
|
version: '0'
|
75
76
|
segments:
|
76
77
|
- 0
|
77
|
-
hash:
|
78
|
+
hash: -390555247668935241
|
78
79
|
required_rubygems_version: !ruby/object:Gem::Requirement
|
79
80
|
none: false
|
80
81
|
requirements:
|
@@ -83,7 +84,7 @@ required_rubygems_version: !ruby/object:Gem::Requirement
|
|
83
84
|
version: '0'
|
84
85
|
segments:
|
85
86
|
- 0
|
86
|
-
hash:
|
87
|
+
hash: -390555247668935241
|
87
88
|
requirements: []
|
88
89
|
rubyforge_project:
|
89
90
|
rubygems_version: 1.8.24
|
@@ -91,35 +92,36 @@ signing_key:
|
|
91
92
|
specification_version: 3
|
92
93
|
summary: Makes routing in Rails case-insensitive
|
93
94
|
test_files:
|
94
|
-
- test/dummy/Rakefile
|
95
95
|
- test/dummy/log/test.log
|
96
|
-
- test/dummy/public/
|
96
|
+
- test/dummy/public/500.html
|
97
97
|
- test/dummy/public/favicon.ico
|
98
98
|
- test/dummy/public/422.html
|
99
|
-
- test/dummy/public/
|
99
|
+
- test/dummy/public/404.html
|
100
|
+
- test/dummy/config/locales/en.yml
|
100
101
|
- test/dummy/config/database.yml
|
101
|
-
- test/dummy/config/
|
102
|
+
- test/dummy/config/environment.rb
|
102
103
|
- test/dummy/config/environments/production.rb
|
103
104
|
- test/dummy/config/environments/test.rb
|
104
|
-
- test/dummy/config/
|
105
|
-
- test/dummy/config/environment.rb
|
105
|
+
- test/dummy/config/environments/development.rb
|
106
106
|
- test/dummy/config/routes.rb
|
107
|
-
- test/dummy/config/locales/en.yml
|
108
|
-
- test/dummy/config/initializers/wrap_parameters.rb
|
109
107
|
- test/dummy/config/initializers/backtrace_silencers.rb
|
110
|
-
- test/dummy/config/initializers/session_store.rb
|
111
108
|
- test/dummy/config/initializers/inflections.rb
|
112
|
-
- test/dummy/config/initializers/
|
109
|
+
- test/dummy/config/initializers/session_store.rb
|
113
110
|
- test/dummy/config/initializers/mime_types.rb
|
111
|
+
- test/dummy/config/initializers/wrap_parameters.rb
|
112
|
+
- test/dummy/config/initializers/secret_token.rb
|
113
|
+
- test/dummy/config/boot.rb
|
114
114
|
- test/dummy/config/application.rb
|
115
|
-
- test/dummy/
|
116
|
-
- test/dummy/app/assets/stylesheets/application.css
|
115
|
+
- test/dummy/Rakefile
|
117
116
|
- test/dummy/app/helpers/application_helper.rb
|
118
117
|
- test/dummy/app/views/layouts/application.html.erb
|
119
|
-
- test/dummy/app/controllers/application_controller.rb
|
120
118
|
- test/dummy/app/controllers/hello_controller.rb
|
121
|
-
- test/dummy/
|
119
|
+
- test/dummy/app/controllers/application_controller.rb
|
120
|
+
- test/dummy/app/assets/images/SpaceCat.jpeg
|
121
|
+
- test/dummy/app/assets/javascripts/application.js
|
122
|
+
- test/dummy/app/assets/stylesheets/application.css
|
122
123
|
- test/dummy/config.ru
|
123
|
-
- test/
|
124
|
+
- test/dummy/script/rails
|
124
125
|
- test/integration/route_middleware_test.rb
|
125
126
|
- test/route_downcaser_test.rb
|
127
|
+
- test/test_helper.rb
|