rack-locale_memorable 0.3.0 → 0.3.2

Sign up to get free protection for your applications and to get access to all the features.
checksums.yaml CHANGED
@@ -1,7 +1,7 @@
1
1
  ---
2
2
  SHA256:
3
- metadata.gz: b56451d07060a802f688db0f338178fa1c8d2ed9f1ea5bafd1ec120e0e241fae
4
- data.tar.gz: 6d98f588efe1eb3d14a13ff989600fc67f1e3ae84ccc99e641206398b27c5589
3
+ metadata.gz: 5ccb7d078d2dd4d582f7db663cf0436da123b94e6531f8d6de83a63c1eb03bbd
4
+ data.tar.gz: eb20d6db30ef828dfac9f27843ab9a249308c889835f912e61986d1f08f1edc9
5
5
  SHA512:
6
- metadata.gz: 4a2cdb7a55ff2d53fbf951fa11c31e2e8fd056c762f9dda3c22799e90b3fe3e32dd667534e6f069bf471a3185eb16a873bd054848f65d7aba626dbdc6c94dfdc
7
- data.tar.gz: b945b0c1f8398a9bb3ac3c9e97ff9e303af47e35fe5a5d271a1af7bef304e8e15730c961b9c30c9dd83d4b1af2c0aa0e8e52f876ec59fba8e12548b1b20604ff
6
+ metadata.gz: 5b6212b7c2a58b6f110a22856ac52c8197600ccc9929f229147f8324d6342a15e5472ef45917fe11dfbdd2bf196877fd8b5e26f962cfa9668b95d7622b77cd8d
7
+ data.tar.gz: 6fdd32c5bad90120d759514971c20b2de1330fbc9774bbf218cd91a7781cfffb89f2a29f3da5547452b4ae1cede23d757d6b25ca345429cb7b5f81b6f98f0eae
data/CHANGELOG.md CHANGED
@@ -1,5 +1,18 @@
1
1
  ## [Unreleased]
2
2
 
3
- ## [0.1.0] - 2022-09-28
3
+ ## [0.3.2] - 2022-09-28
4
4
 
5
- - Initial release
5
+ ### Fixed
6
+
7
+ - handle cookie expiry correctly https://github.com/nov/rack-locale_memorable/commit/886fed66da5513a4c0b6408a9ac7685932b0a034
8
+
9
+ ## [0.3.1] - 2022-09-28
10
+
11
+ ### Fixed
12
+
13
+ - fixed cookie key handling when remembering https://github.com/nov/rack-locale_memorable/commit/ab8c87bff449e762daf00dea5cef44d001176141
14
+
15
+ ## [0.3.0] - 2022-09-28
16
+
17
+ - First stable release.
18
+ - Older versions are buggy, DO NOT USE THEM.
data/README.md CHANGED
@@ -1,8 +1,6 @@
1
1
  # Rack::LocaleMemorable
2
2
 
3
- Welcome to your new gem! In this directory, you'll find the files you need to be able to package up your Ruby library into a gem. Put your Ruby code in the file `lib/rack/locale_memorable`. To experiment with that code, run `bin/console` for an interactive prompt.
4
-
5
- TODO: Delete this and the text above, and describe your gem
3
+ Handle query params, cookie and HTTP_ACCEPT_LANGUAGE header to detect user-preffered locale, and remember it when necessary.
6
4
 
7
5
  ## Installation
8
6
 
@@ -16,7 +14,48 @@ If bundler is not being used to manage dependencies, install the gem by executin
16
14
 
17
15
  ## Usage
18
16
 
19
- TODO: Write usage instructions here
17
+ ```ruby
18
+ # in initializers/middlewares.rb etc.
19
+ Rails.application.configure do |config|
20
+ config.middleware.use Rack::LocaleMemorable
21
+ end
22
+ ```
23
+
24
+ NOTE: If you're using devise, set `Rack::LocaleMemorable` before `Warden::Manager`, otherwise you see warden error messages in wrong locale.
25
+
26
+ ```ruby
27
+ Rails.application.configure do |config|
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(
51
+ Rack::LocaleMemorable,
52
+ params_key: 'ui_locale',
53
+ cookie_key: 'ui_locale',
54
+ secure_cookie: Rails.env.production?,
55
+ cookie_lifetime: 3.months
56
+ )
57
+ end
58
+ ```
20
59
 
21
60
  ## Development
22
61
 
@@ -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:, cookie_expiry:)
7
- set_cookie 'locale', {
6
+ def remember_locale(explicit_locale, secure_cookie:, cookie_lifetime:, cookie_key:)
7
+ set_cookie cookie_key, {
8
8
  value: explicit_locale,
9
- expires: cookie_expiry,
9
+ expires: cookie_lifetime.from_now,
10
10
  http_only: true,
11
11
  secure: secure_cookie
12
12
  }
@@ -2,6 +2,6 @@
2
2
 
3
3
  module Rack
4
4
  class LocaleMemorable
5
- VERSION = '0.3.0'
5
+ VERSION = '0.3.2'
6
6
  end
7
7
  end
@@ -7,12 +7,12 @@ 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, cookie_expiry: 1.year.from_now)
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
- @cookie_expiry = cookie_expiry
15
+ @cookie_lifetime = cookie_lifetime
16
16
  end
17
17
 
18
18
  def call(env)
@@ -24,7 +24,8 @@ module Rack
24
24
  response.remember_locale(
25
25
  request.explicit_locale,
26
26
  secure_cookie: @secure_cookie,
27
- cookie_expiry: @cookie_expiry
27
+ cookie_lifetime: @cookie_lifetime,
28
+ cookie_key: @cookie_key
28
29
  )
29
30
  end
30
31
  response.finish
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.0
4
+ version: 0.3.2
5
5
  platform: ruby
6
6
  authors:
7
7
  - nov