rack-locale_memorable 0.2.2 → 0.3.1

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: c5d66845b0ecc18ec3afd2e985bad0d29533f031cad50f4a214b3273ccf21634
4
- data.tar.gz: f4c1190527981fc0a17899539ceaf0cb954a68276b18cef39990e3f881a7eba9
3
+ metadata.gz: fd5bd6d13a8a85a10053362a85a1d5c3530348fadadb5f871f9990e40e36d59b
4
+ data.tar.gz: 6f9c459b2527f17fc153c43bd3d71b9ecfb5c6ae60402e142ecc0da8bde1afa2
5
5
  SHA512:
6
- metadata.gz: 2bfa002397c86cd7c82a92b01d0ae56102869e65a4c20f7bc92b50128c12badf4692e6a42ded5008b60dac58f8290c2e77280a55d1674edc7daf71a3d374f16c
7
- data.tar.gz: 0ca6c6d961aa210f709545e0610c5e6f3d29abb983e262484e9f133d4ac2b93ee40df9e5d6dad724d6e36ef6b4b8ce6e9a07d982ea68e7bb503bfa93d6f55488
6
+ metadata.gz: 9ed6cc8acbfbe09b475fc80c90f155102f25916a28f279e7efadc28e2660a5fce8cd7896727c4b819906097009886112d10df9e7e807eefb1ffa10e798d2c1d2
7
+ data.tar.gz: f8304fa8aa3ed7b6f0fa102935828f5eeec3d0cae20bbd0bc8e5d10bc8fba3f37edbdd7879bfdc7f416f39ba8f43c08f2f242fa088661edf52e0b1c2afd6f595
data/CHANGELOG.md CHANGED
@@ -1,5 +1,6 @@
1
1
  ## [Unreleased]
2
2
 
3
- ## [0.1.0] - 2022-09-28
3
+ ## [0.3.0] - 2022-09-28
4
4
 
5
- - Initial release
5
+ - First stable release.
6
+ - 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,27 @@ 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(
21
+ Rack::LocaleMemorable,
22
+ secure_cookie: Rails.env.production?
23
+ )
24
+ end
25
+ ```
26
+
27
+ NOTE: If you're using devise, set `Rack::LocaleMemorable` before `Warden::Manager`, otherwise you see warden error messages in wrong locale.
28
+
29
+ ```ruby
30
+ Rails.application.configure do |config|
31
+ config.middleware.insert_before(
32
+ Warden::Manager,
33
+ Rack::LocaleMemorable,
34
+ secure_cookie: Rails.env.production?
35
+ )
36
+ end
37
+ ```
20
38
 
21
39
  ## Development
22
40
 
@@ -3,7 +3,13 @@
3
3
  module Rack
4
4
  class LocaleMemorable
5
5
  class Request < Rack::Request
6
- attr_reader :explicit_locale
6
+ attr_reader :explicit_locale, :params_key, :cookie_key
7
+
8
+ def initialize(env, params_key:, cookie_key:)
9
+ super env
10
+ @params_key = params_key
11
+ @cookie_key = cookie_key
12
+ end
7
13
 
8
14
  def detect_locale
9
15
  (
@@ -16,11 +22,11 @@ module Rack
16
22
  private
17
23
 
18
24
  def from_params
19
- @explicit_locale = primary_locale_from params['locale']
25
+ @explicit_locale = primary_locale_from params[params_key]
20
26
  end
21
27
 
22
28
  def from_cookies
23
- primary_locale_from cookies['locale']
29
+ primary_locale_from cookies[cookie_key]
24
30
  end
25
31
 
26
32
  def from_headers
@@ -3,8 +3,8 @@
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_expiry:, cookie_key:)
7
+ set_cookie cookie_key, {
8
8
  value: explicit_locale,
9
9
  expires: cookie_expiry,
10
10
  http_only: true,
@@ -2,6 +2,6 @@
2
2
 
3
3
  module Rack
4
4
  class LocaleMemorable
5
- VERSION = '0.2.2'
5
+ VERSION = '0.3.1'
6
6
  end
7
7
  end
@@ -7,14 +7,16 @@ require 'rack'
7
7
 
8
8
  module Rack
9
9
  class LocaleMemorable
10
- def initialize(app, secure_cookie: true, cookie_expiry: 1.year.from_now)
10
+ def initialize(app, params_key: 'locale', cookie_key: 'locale', secure_cookie: true, cookie_expiry: 1.year.from_now)
11
11
  @app = app
12
+ @params_key = params_key
13
+ @cookie_key = cookie_key
12
14
  @secure_cookie = secure_cookie
13
15
  @cookie_expiry = cookie_expiry
14
16
  end
15
17
 
16
18
  def call(env)
17
- request = Request.new(env)
19
+ request = Request.new(env, params_key: @params_key, cookie_key: @cookie_key)
18
20
  I18n.with_locale(request.detect_locale) do
19
21
  status, headers, body = @app.call(env)
20
22
  response = Response.new body, status, headers
@@ -22,7 +24,8 @@ module Rack
22
24
  response.remember_locale(
23
25
  request.explicit_locale,
24
26
  secure_cookie: @secure_cookie,
25
- cookie_expiry: @cookie_expiry
27
+ cookie_expiry: @cookie_expiry,
28
+ cookie_key: @cookie_key
26
29
  )
27
30
  end
28
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.2.2
4
+ version: 0.3.1
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.3.7
166
+ rubygems_version: 3.1.6
167
167
  signing_key:
168
168
  specification_version: 4
169
169
  summary: Remember locale in rack layer