Class: Rack::LocaleMemorable

Inherits:
Object
  • Object
show all
Defined in:
lib/rack/locale_memorable.rb,
lib/rack/locale_memorable/request.rb,
lib/rack/locale_memorable/version.rb,
lib/rack/locale_memorable/response.rb

Defined Under Namespace

Classes: Request, Response

Constant Summary collapse

VERSION =
'0.5.0'

Instance Method Summary collapse

Constructor Details

#initialize(app, params_key: 'locale', cookie_key: 'locale', cookie_options: {}) ⇒ LocaleMemorable

Returns a new instance of LocaleMemorable.



10
11
12
13
14
15
# File 'lib/rack/locale_memorable.rb', line 10

def initialize(app, params_key: 'locale', cookie_key: 'locale', cookie_options: {})
  @app = app
  @params_key = params_key
  @cookie_key = cookie_key
  @cookie_options = cookie_options
end

Instance Method Details

#call(env) ⇒ Object



17
18
19
20
21
22
23
24
25
26
27
28
# File 'lib/rack/locale_memorable.rb', line 17

def call(env)
  request = Request.new env
  I18n.with_locale(request.detect_locale params_key: @params_key, cookie_key: @cookie_key) do
    env['rack.locale'] = I18n.locale.to_s
    status, headers, body = @app.call(env)
    response = Response.new body, status, headers
    if request.explicit_locale.present?
      response.remember_locale request.explicit_locale, key: @cookie_key, **@cookie_options
    end
    response.finish
  end
end