rack-user-locale 0.0.2 → 0.0.3

Sign up to get free protection for your applications and to get access to all the features.
data/README.md CHANGED
@@ -1,7 +1,7 @@
1
1
  rack-user-locale
2
2
  ----------------
3
3
 
4
- [![Build Status](https://secure.travis-ci.org/sleepingstu/rack-user-locale.png)](http://travis-ci.org/sleepingstu/rack-user-locale)
4
+ [![Gem Version](https://badge.fury.io/rb/rack-user-locale.png)](http://badge.fury.io/rb/rack-user-locale) [![Build Status](https://secure.travis-ci.org/sleepingstu/rack-user-locale.png)](http://travis-ci.org/sleepingstu/rack-user-locale)
5
5
 
6
6
  A Rack module for getting and setting a user's locale via a cookie or browser default language.
7
7
 
@@ -44,7 +44,7 @@ Your application will now attempt to set the I18n.locale value based on the foll
44
44
  There is the option to pass in an accepted array of locales, like so:
45
45
 
46
46
  ```
47
- use Rack::UserLocale, :accepted_locales => [:en, :es, :fr, :de, :jp, (whatever codes you support)]
47
+ use Rack::UserLocale, :accepted_locales => [:de, :en, :es, :fr, :ja, :pt, :zh, (whatever codes you support)]
48
48
  ```
49
49
 
50
50
  If this option is supplied the the users locale will either be set to one of the accepted locales in the array, otherwise it will be set to the I18n.default_locale value.
data/VERSION CHANGED
@@ -1 +1 @@
1
- 0.0.2
1
+ 0.0.3
@@ -9,12 +9,21 @@ module Rack
9
9
  }.merge(options)
10
10
  end
11
11
 
12
+ # The "non_ruby_request" variable denotes a request which doesn't call a Ruby script.
13
+ # This might be a CSS, static HTML, image, media, or JavaScript request.
14
+ #
15
+ # This check is in place so that if you're using this gem with multiple Rack
16
+ # apps running in the same application context, you won't have static resources
17
+ # resetting the currency selection due to requests going into the main app
18
+ # instead of a sub-app.
19
+ #
12
20
  def call(env)
13
21
  @env = env
14
22
  @request = Rack::Request.new(@env)
15
23
  set_locale
16
24
 
17
- if @request.post? || @request.put? || @request.delete?
25
+ non_ruby_request = (@env["SCRIPT_NAME"] == nil || @env["SCRIPT_NAME"] == "")
26
+ if @request.post? || @request.put? || @request.delete? || non_ruby_request
18
27
  @app.call(env)
19
28
  else
20
29
  status, headers, body = @app.call(@env)
@@ -5,11 +5,11 @@
5
5
 
6
6
  Gem::Specification.new do |s|
7
7
  s.name = "rack-user-locale"
8
- s.version = "0.0.2"
8
+ s.version = "0.0.3"
9
9
 
10
10
  s.required_rubygems_version = Gem::Requirement.new(">= 0") if s.respond_to? :required_rubygems_version=
11
11
  s.authors = ["Stuart Chinery", "Dave Hrycyszyn"]
12
- s.date = "2013-02-05"
12
+ s.date = "2013-03-20"
13
13
  s.description = "A Rack module for getting and setting a user's locale via a cookie or browser default language."
14
14
  s.email = "stuart.chinery@headlondon.com"
15
15
  s.extra_rdoc_files = [
@@ -18,7 +18,6 @@ Gem::Specification.new do |s|
18
18
  ]
19
19
  s.files = [
20
20
  ".document",
21
- ".rvmrc",
22
21
  "Gemfile",
23
22
  "Gemfile.lock",
24
23
  "LICENSE.txt",
@@ -35,7 +35,7 @@ describe "RackUserLocale" do
35
35
  describe "when from HTTP_ACCEPT_LANGUAGE headers" do
36
36
  describe "with a single locale" do
37
37
  before do
38
- get "http://example.com/", {}, "HTTP_ACCEPT_LANGUAGE" => "fr-be"
38
+ get "http://example.com/", {}, { "HTTP_ACCEPT_LANGUAGE" => "fr-be", "SCRIPT_NAME" => "/" }
39
39
  end
40
40
 
41
41
  it "should have I18n.locale set to :fr" do
@@ -49,8 +49,9 @@ describe "RackUserLocale" do
49
49
 
50
50
  describe "with an multiple locales" do
51
51
  before do
52
- get "http://example.com/", {},
53
- "HTTP_ACCEPT_LANGUAGE" => "de-DE;q=0.8,de;q=0.8,no-NO;q=1.0,no;q=0.7,ru-RU;q=0.7,sv-SE;q=0.4,sv;q=0.3,nl-BE;q=0.9"
52
+ get "http://example.com/", {}, {
53
+ "HTTP_ACCEPT_LANGUAGE" => "de-DE;q=0.8,de;q=0.8,no-NO;q=1.0,no;q=0.7,ru-RU;q=0.7,sv-SE;q=0.4,sv;q=0.3,nl-BE;q=0.9",
54
+ "SCRIPT_NAME" => "/" }
54
55
  end
55
56
 
56
57
  it "should have I18n.locale set to :no" do
@@ -65,7 +66,8 @@ describe "RackUserLocale" do
65
66
 
66
67
  describe "when both a cooke and HTTP_ACCEPT_LANGUAGE headers are set" do
67
68
  before do
68
- get "http://example.com/", {}, "HTTP_COOKIE" => "user-locale=af", "HTTP_ACCEPT_LANGUAGE" => "ar-sa"
69
+ get "http://example.com/", {}, { "HTTP_COOKIE" => "user-locale=af",
70
+ "HTTP_ACCEPT_LANGUAGE" => "ar-sa", "SCRIPT_NAME" => "/" }
69
71
  end
70
72
 
71
73
  it "should have I18n.locale set to :af" do
@@ -79,7 +81,7 @@ describe "RackUserLocale" do
79
81
 
80
82
  describe "when nothing is changed" do
81
83
  before do
82
- get "http://example.com/"
84
+ get "http://example.com/", {}, { "SCRIPT_NAME" => "/" }
83
85
  end
84
86
 
85
87
  it "should have I18n.locale set to :en" do
@@ -90,13 +92,41 @@ describe "RackUserLocale" do
90
92
  assert_equal "user-locale=en; domain=example.com; path=/", last_response["Set-Cookie"]
91
93
  end
92
94
  end
95
+
96
+ describe "when SCRIPT_NAME is nil" do
97
+ before do
98
+ get "http://example.com/", {}
99
+ end
100
+
101
+ it "should have I18n.locale set to :en" do
102
+ assert_equal :en, I18n.locale
103
+ end
104
+
105
+ it "should set a cookie in the response" do
106
+ refute_equal "user-locale=en; domain=example.com; path=/", last_response["Set-Cookie"]
107
+ end
108
+ end
109
+
110
+ describe "when SCRIPT_NAME is blank" do
111
+ before do
112
+ get "http://example.com/", {}, { "SCRIPT_NAME" => "" }
113
+ end
114
+
115
+ it "should have I18n.locale set to :en" do
116
+ assert_equal :en, I18n.locale
117
+ end
118
+
119
+ it "should set a cookie in the response" do
120
+ refute_equal "user-locale=en; domain=example.com; path=/", last_response["Set-Cookie"]
121
+ end
122
+ end
93
123
  end
94
124
 
95
125
  describe "with accepted_locales set" do
96
126
  before do
97
127
  def app
98
128
  app = Rack::Builder.new {
99
- use Rack::UserLocale, :accepted_locales => [:en, :es, :fr, :de, :jp, :nl]
129
+ use Rack::UserLocale, :accepted_locales => [:en, :es, :fr, :de, :ja, :nl]
100
130
 
101
131
  run BasicRackApp.new
102
132
  }
@@ -111,7 +141,7 @@ describe "RackUserLocale" do
111
141
 
112
142
  describe "when a locale cookie is set" do
113
143
  before do
114
- get "http://example.com/", {}, "HTTP_COOKIE" => "user-locale=es"
144
+ get "http://example.com/", {}, { "HTTP_COOKIE" => "user-locale=es", "SCRIPT_NAME" => "/" }
115
145
  end
116
146
 
117
147
  it "should have I18n.locale set to :es" do
@@ -126,7 +156,7 @@ describe "RackUserLocale" do
126
156
  describe "when from HTTP_ACCEPT_LANGUAGE headers" do
127
157
  describe "with an accepted locale" do
128
158
  before do
129
- get "http://example.com/", {}, "HTTP_ACCEPT_LANGUAGE" => "fr-be"
159
+ get "http://example.com/", {}, { "HTTP_ACCEPT_LANGUAGE" => "fr-be", "SCRIPT_NAME" => "/" }
130
160
  end
131
161
 
132
162
  it "should have I18n.locale set to :fr" do
@@ -139,24 +169,41 @@ describe "RackUserLocale" do
139
169
  end
140
170
 
141
171
  describe "with an multiple locales" do
142
- before do
143
- get "http://example.com/", {},
144
- "HTTP_ACCEPT_LANGUAGE" => "de-DE;q=0.8,de;q=0.8,no-NO;q=0.7,no;q=0.7,ru-RU;q=0.7,sv-SE;q=0.4,sv;q=0.3,nl-BE;q=0.9"
172
+ describe "at different weights" do
173
+ before do
174
+ get "http://example.com/", {}, {
175
+ "HTTP_ACCEPT_LANGUAGE" => "de-DE;q=0.8,de;q=0.8,no-NO;q=0.7,no;q=0.7,ru-RU;q=0.7,sv-SE;q=0.4,sv;q=0.3,nl-BE;q=0.9",
176
+ "SCRIPT_NAME" => "/" }
177
+ end
178
+
179
+ it "should have I18n.locale set to :nl" do
180
+ assert_equal :nl, I18n.locale
181
+ end
182
+
183
+ it "should set a cookie in the response" do
184
+ assert_equal "user-locale=nl; domain=example.com; path=/", last_response["Set-Cookie"]
185
+ end
145
186
  end
146
187
 
147
- it "should have I18n.locale set to :nl" do
148
- assert_equal :nl, I18n.locale
149
- end
188
+ describe "at the same weight" do
189
+ before do
190
+ get "http://example.com/", {}, {
191
+ "HTTP_ACCEPT_LANGUAGE" => "fr,en,ja", "SCRIPT_NAME" => "/" }
192
+ end
150
193
 
151
- it "should set a cookie in the response" do
152
- assert_equal "user-locale=nl; domain=example.com; path=/", last_response["Set-Cookie"]
194
+ it "should have I18n.locale set to :fr" do
195
+ assert_equal :fr, I18n.locale
196
+ end
197
+
198
+ it "should set a cookie in the response" do
199
+ assert_equal "user-locale=fr; domain=example.com; path=/", last_response["Set-Cookie"]
200
+ end
153
201
  end
154
202
  end
155
203
 
156
-
157
204
  describe "without an accepted locale" do
158
205
  before do
159
- get "http://example.com/", {}, "HTTP_ACCEPT_LANGUAGE" => "ar-sa"
206
+ get "http://example.com/", {}, { "HTTP_ACCEPT_LANGUAGE" => "ar-sa", "SCRIPT_NAME" => "/" }
160
207
  end
161
208
 
162
209
  it "should have I18n.locale set to :en" do
@@ -171,11 +218,12 @@ describe "RackUserLocale" do
171
218
 
172
219
  describe "when both a cooke and HTTP_ACCEPT_LANGUAGE headers are set" do
173
220
  before do
174
- get "http://example.com/", {}, "HTTP_COOKIE" => "user-locale=jp", "HTTP_ACCEPT_LANGUAGE" => "fr-be"
221
+ get "http://example.com/", {}, { "HTTP_COOKIE" => "user-locale=ja",
222
+ "HTTP_ACCEPT_LANGUAGE" => "fr-be", "SCRIPT_NAME" => "/" }
175
223
  end
176
224
 
177
- it "should have I18n.locale set to :jp" do
178
- assert_equal :jp, I18n.locale
225
+ it "should have I18n.locale set to :ja" do
226
+ assert_equal :ja, I18n.locale
179
227
  end
180
228
 
181
229
  it "should not set a cookie in the response" do
@@ -185,7 +233,7 @@ describe "RackUserLocale" do
185
233
 
186
234
  describe "when nothing is changed" do
187
235
  before do
188
- get "http://example.com/"
236
+ get "http://example.com/", {}, { "SCRIPT_NAME" => "/" }
189
237
  end
190
238
 
191
239
  it "should have I18n.locale set to :en" do
@@ -196,5 +244,33 @@ describe "RackUserLocale" do
196
244
  assert_equal "user-locale=en; domain=example.com; path=/", last_response["Set-Cookie"]
197
245
  end
198
246
  end
247
+
248
+ describe "when SCRIPT_NAME is nil" do
249
+ before do
250
+ get "http://example.com/", {}
251
+ end
252
+
253
+ it "should have I18n.locale set to :en" do
254
+ assert_equal :en, I18n.locale
255
+ end
256
+
257
+ it "should set a cookie in the response" do
258
+ refute_equal "user-locale=en; domain=example.com; path=/", last_response["Set-Cookie"]
259
+ end
260
+ end
261
+
262
+ describe "when SCRIPT_NAME is blank" do
263
+ before do
264
+ get "http://example.com/", {}, { "SCRIPT_NAME" => "" }
265
+ end
266
+
267
+ it "should have I18n.locale set to :en" do
268
+ assert_equal :en, I18n.locale
269
+ end
270
+
271
+ it "should set a cookie in the response" do
272
+ refute_equal "user-locale=en; domain=example.com; path=/", last_response["Set-Cookie"]
273
+ end
274
+ end
199
275
  end
200
276
  end
metadata CHANGED
@@ -1,7 +1,7 @@
1
1
  --- !ruby/object:Gem::Specification
2
2
  name: rack-user-locale
3
3
  version: !ruby/object:Gem::Version
4
- version: 0.0.2
4
+ version: 0.0.3
5
5
  prerelease:
6
6
  platform: ruby
7
7
  authors:
@@ -10,7 +10,7 @@ authors:
10
10
  autorequire:
11
11
  bindir: bin
12
12
  cert_chain: []
13
- date: 2013-02-05 00:00:00.000000000 Z
13
+ date: 2013-03-20 00:00:00.000000000 Z
14
14
  dependencies:
15
15
  - !ruby/object:Gem::Dependency
16
16
  name: rack
@@ -166,7 +166,6 @@ extra_rdoc_files:
166
166
  - README.md
167
167
  files:
168
168
  - .document
169
- - .rvmrc
170
169
  - Gemfile
171
170
  - Gemfile.lock
172
171
  - LICENSE.txt
@@ -192,7 +191,7 @@ required_ruby_version: !ruby/object:Gem::Requirement
192
191
  version: '0'
193
192
  segments:
194
193
  - 0
195
- hash: -1318168900759359089
194
+ hash: -4120119021776085754
196
195
  required_rubygems_version: !ruby/object:Gem::Requirement
197
196
  none: false
198
197
  requirements:
data/.rvmrc DELETED
@@ -1 +0,0 @@
1
- rvm use 1.9.3-p362@rack-user-locale