Class: Rack::TimeZoneMiddleware

Inherits:
Object
  • Object
show all
Defined in:
lib/rack/time-zone-middleware.rb,
lib/rack/time-zone-middleware/version.rb

Constant Summary collapse

DEFAULT_TIME_ZONE =
'Europe/Moscow'
DEFAULT_AS_TIME_ZONE =
'Moscow'
DEFAULT_KEY =
'dummy.time_zone'
VERSION =
'0.1.2'

Instance Attribute Summary collapse

Instance Method Summary collapse

Constructor Details

#initialize(app, opts = {}, &block) ⇒ TimeZoneMiddleware

Returns a new instance of TimeZoneMiddleware.



12
13
14
15
16
17
18
19
20
21
22
23
24
25
# File 'lib/rack/time-zone-middleware.rb', line 12

def initialize(app, opts = {}, &block)
  @app = app

  @options = {}
  options[:default_tz]    = opts.fetch(:default_tz, DEFAULT_TIME_ZONE)
  options[:default_as_tz] = opts.fetch(:default_as_tz, DEFAULT_AS_TIME_ZONE)
  options[:default_key]   = opts.fetch(:default_key, DEFAULT_KEY)

  if block_given?
    @runner = block
  else
    @runner = ->(mw, env) { _call(mw, env) }
  end
end

Instance Attribute Details

#appObject (readonly)

Returns the value of attribute app.



10
11
12
# File 'lib/rack/time-zone-middleware.rb', line 10

def app
  @app
end

#optionsObject (readonly)

Returns the value of attribute options.



10
11
12
# File 'lib/rack/time-zone-middleware.rb', line 10

def options
  @options
end

#runnerObject (readonly)

Returns the value of attribute runner.



10
11
12
# File 'lib/rack/time-zone-middleware.rb', line 10

def runner
  @runner
end

Instance Method Details

#call(env) ⇒ Object



27
28
29
# File 'lib/rack/time-zone-middleware.rb', line 27

def call(env)
  runner.call(self, env)
end

#find_as_time_zone(name) ⇒ Object



31
32
33
34
# File 'lib/rack/time-zone-middleware.rb', line 31

def find_as_time_zone(name)
  zone_name, _ = ::ActiveSupport::TimeZone::MAPPING.detect { |_, v| v.eql? name }
  zone_name || options[:default_as_tz]
end