rack-locale_memorable 0.3.1 → 0.3.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.
- checksums.yaml +4 -4
- data/CHANGELOG.md +19 -0
- data/README.md +28 -7
- data/lib/rack/locale_memorable/request.rb +8 -14
- data/lib/rack/locale_memorable/response.rb +2 -2
- data/lib/rack/locale_memorable/version.rb +1 -1
- data/lib/rack/locale_memorable.rb +6 -6
- metadata +2 -2
checksums.yaml
CHANGED
@@ -1,7 +1,7 @@
|
|
1
1
|
---
|
2
2
|
SHA256:
|
3
|
-
metadata.gz:
|
4
|
-
data.tar.gz:
|
3
|
+
metadata.gz: 51ae9ed5a060ebb4263d0faeded7a6bdd94d40abb9835c670ce500e278ae5ac1
|
4
|
+
data.tar.gz: 758bc0cf5ac3498be41d78b79382024752d8a7ebb5995c0097b16031dacf4d86
|
5
5
|
SHA512:
|
6
|
-
metadata.gz:
|
7
|
-
data.tar.gz:
|
6
|
+
metadata.gz: a6f73bce4a3940de8115d561cb2a3785f143e48496ba0822a186257122a3b8e4a0e2de1bc84ef5466da5cb0862fdcf5e410520d0d949100f7cfecfefad9e1a15
|
7
|
+
data.tar.gz: e38a7bd143e65235b55af8b05897135d04ca897ba0fdac1892e66b992005f7e81517a3265924bbba210860451abd8c39e9d5c756f029a5299bd9c98831599027
|
data/CHANGELOG.md
CHANGED
@@ -1,5 +1,24 @@
|
|
1
1
|
## [Unreleased]
|
2
2
|
|
3
|
+
## [0.3.3] - 2022-09-28
|
4
|
+
|
5
|
+
### Refactored
|
6
|
+
|
7
|
+
- requre active_support/core_ext only https://github.com/nov/rack-locale_memorable/commit/bf56b49f064a30d9688d65d2dd2901763bf31cee
|
8
|
+
- stop using request class's instance variables following response class's design https://github.com/nov/rack-locale_memorable/commit/056807010fcb5c01d4d1745f06f8a9f87aad2ec6
|
9
|
+
|
10
|
+
## [0.3.2] - 2022-09-28
|
11
|
+
|
12
|
+
### Fixed
|
13
|
+
|
14
|
+
- handle cookie expiry correctly https://github.com/nov/rack-locale_memorable/commit/886fed66da5513a4c0b6408a9ac7685932b0a034
|
15
|
+
|
16
|
+
## [0.3.1] - 2022-09-28
|
17
|
+
|
18
|
+
### Fixed
|
19
|
+
|
20
|
+
- fixed cookie key handling when remembering https://github.com/nov/rack-locale_memorable/commit/ab8c87bff449e762daf00dea5cef44d001176141
|
21
|
+
|
3
22
|
## [0.3.0] - 2022-09-28
|
4
23
|
|
5
24
|
- First stable release.
|
data/README.md
CHANGED
@@ -17,10 +17,7 @@ If bundler is not being used to manage dependencies, install the gem by executin
|
|
17
17
|
```ruby
|
18
18
|
# in initializers/middlewares.rb etc.
|
19
19
|
Rails.application.configure do |config|
|
20
|
-
config.middleware.use
|
21
|
-
Rack::LocaleMemorable,
|
22
|
-
secure_cookie: Rails.env.production?
|
23
|
-
)
|
20
|
+
config.middleware.use Rack::LocaleMemorable
|
24
21
|
end
|
25
22
|
```
|
26
23
|
|
@@ -28,10 +25,34 @@ NOTE: If you're using devise, set `Rack::LocaleMemorable` before `Warden::Manage
|
|
28
25
|
|
29
26
|
```ruby
|
30
27
|
Rails.application.configure do |config|
|
31
|
-
config.middleware.insert_before
|
32
|
-
|
28
|
+
config.middleware.insert_before Warden::Manager, Rack::LocaleMemorable
|
29
|
+
end
|
30
|
+
```
|
31
|
+
|
32
|
+
By default, this gem handles
|
33
|
+
|
34
|
+
* `params['locale']` as explicit locale
|
35
|
+
* `cookies['locale']` as remembered locale
|
36
|
+
* `headers['HTTP_ACCEPT_LANGUAGE']` as implicit locale
|
37
|
+
|
38
|
+
and when explicit locale is specified in the request, remember it in cookie.
|
39
|
+
|
40
|
+
You can customize those values
|
41
|
+
* params_key (`'locale'` by default)
|
42
|
+
* cookie_key (`'locale'` by default)
|
43
|
+
* secure_cookie (`true` by default)
|
44
|
+
* cookie_lifetime (`1.year` by default)
|
45
|
+
|
46
|
+
like below
|
47
|
+
|
48
|
+
```ruby
|
49
|
+
Rails.application.configure do |config|
|
50
|
+
config.middleware.use(
|
33
51
|
Rack::LocaleMemorable,
|
34
|
-
|
52
|
+
params_key: 'ui_locale',
|
53
|
+
cookie_key: 'ui_locale',
|
54
|
+
secure_cookie: Rails.env.production?,
|
55
|
+
cookie_lifetime: 3.months
|
35
56
|
)
|
36
57
|
end
|
37
58
|
```
|
@@ -3,30 +3,24 @@
|
|
3
3
|
module Rack
|
4
4
|
class LocaleMemorable
|
5
5
|
class Request < Rack::Request
|
6
|
-
attr_reader :explicit_locale
|
6
|
+
attr_reader :explicit_locale
|
7
7
|
|
8
|
-
def
|
9
|
-
super env
|
10
|
-
@params_key = params_key
|
11
|
-
@cookie_key = cookie_key
|
12
|
-
end
|
13
|
-
|
14
|
-
def detect_locale
|
8
|
+
def detect_locale(params_key:, cookie_key:)
|
15
9
|
(
|
16
|
-
from_params ||
|
17
|
-
from_cookies ||
|
10
|
+
from_params(params_key) ||
|
11
|
+
from_cookies(cookie_key) ||
|
18
12
|
from_headers
|
19
13
|
)
|
20
14
|
end
|
21
15
|
|
22
16
|
private
|
23
17
|
|
24
|
-
def from_params
|
25
|
-
@explicit_locale = primary_locale_from params[
|
18
|
+
def from_params(key)
|
19
|
+
@explicit_locale = primary_locale_from params[key]
|
26
20
|
end
|
27
21
|
|
28
|
-
def from_cookies
|
29
|
-
primary_locale_from cookies[
|
22
|
+
def from_cookies(key)
|
23
|
+
primary_locale_from cookies[key]
|
30
24
|
end
|
31
25
|
|
32
26
|
def from_headers
|
@@ -3,10 +3,10 @@
|
|
3
3
|
module Rack
|
4
4
|
class LocaleMemorable
|
5
5
|
class Response < Rack::Response
|
6
|
-
def remember_locale(explicit_locale, secure_cookie:,
|
6
|
+
def remember_locale(explicit_locale, secure_cookie:, cookie_lifetime:, cookie_key:)
|
7
7
|
set_cookie cookie_key, {
|
8
8
|
value: explicit_locale,
|
9
|
-
expires:
|
9
|
+
expires: cookie_lifetime.from_now,
|
10
10
|
http_only: true,
|
11
11
|
secure: secure_cookie
|
12
12
|
}
|
@@ -1,30 +1,30 @@
|
|
1
1
|
# frozen_string_literal: true
|
2
2
|
|
3
3
|
require 'active_support'
|
4
|
-
require 'active_support/
|
4
|
+
require 'active_support/core_ext'
|
5
5
|
require 'http/accept'
|
6
6
|
require 'rack'
|
7
7
|
|
8
8
|
module Rack
|
9
9
|
class LocaleMemorable
|
10
|
-
def initialize(app, params_key: 'locale', cookie_key: 'locale', secure_cookie: true,
|
10
|
+
def initialize(app, params_key: 'locale', cookie_key: 'locale', secure_cookie: true, cookie_lifetime: 1.year)
|
11
11
|
@app = app
|
12
12
|
@params_key = params_key
|
13
13
|
@cookie_key = cookie_key
|
14
14
|
@secure_cookie = secure_cookie
|
15
|
-
@
|
15
|
+
@cookie_lifetime = cookie_lifetime
|
16
16
|
end
|
17
17
|
|
18
18
|
def call(env)
|
19
|
-
request = Request.new
|
20
|
-
I18n.with_locale(request.detect_locale) do
|
19
|
+
request = Request.new env
|
20
|
+
I18n.with_locale(request.detect_locale params_key: @params_key, cookie_key: @cookie_key) do
|
21
21
|
status, headers, body = @app.call(env)
|
22
22
|
response = Response.new body, status, headers
|
23
23
|
if request.explicit_locale.present?
|
24
24
|
response.remember_locale(
|
25
25
|
request.explicit_locale,
|
26
26
|
secure_cookie: @secure_cookie,
|
27
|
-
|
27
|
+
cookie_lifetime: @cookie_lifetime,
|
28
28
|
cookie_key: @cookie_key
|
29
29
|
)
|
30
30
|
end
|
metadata
CHANGED
@@ -1,7 +1,7 @@
|
|
1
1
|
--- !ruby/object:Gem::Specification
|
2
2
|
name: rack-locale_memorable
|
3
3
|
version: !ruby/object:Gem::Version
|
4
|
-
version: 0.3.
|
4
|
+
version: 0.3.3
|
5
5
|
platform: ruby
|
6
6
|
authors:
|
7
7
|
- nov
|
@@ -163,7 +163,7 @@ required_rubygems_version: !ruby/object:Gem::Requirement
|
|
163
163
|
- !ruby/object:Gem::Version
|
164
164
|
version: '0'
|
165
165
|
requirements: []
|
166
|
-
rubygems_version: 3.
|
166
|
+
rubygems_version: 3.3.7
|
167
167
|
signing_key:
|
168
168
|
specification_version: 4
|
169
169
|
summary: Remember locale in rack layer
|