class Rack::TimeZoneMiddleware
Constants
- DEFAULT_AS_TIME_ZONE
- DEFAULT_COOKIE_KEY
- DEFAULT_KEY
- DEFAULT_TIME_ZONE
- MAP_WARNING
- VERSION
Attributes
app[R]
options[R]
runner[R]
Public Class Methods
new(app, opts = {}, &block)
click to toggle source
# File lib/rack/time-zone-middleware.rb, line 14 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[:time_zone_key] = opts.fetch(:time_zone_key, DEFAULT_KEY) options[:cookie_key] = opts.fetch(:cookie_key, DEFAULT_COOKIE_KEY) @time_zone_map = opts.fetch(:time_zone_map, nil) || default_time_zone_map if block_given? @runner = block else @runner = ->(mw, env) { _call(mw, env) } end end
Public Instance Methods
call(env)
click to toggle source
# File lib/rack/time-zone-middleware.rb, line 32 def call(env) runner.call(self, env) end
find_as_time_zone(name)
click to toggle source
# File lib/rack/time-zone-middleware.rb, line 36 def find_as_time_zone(name) zone_name, _ = time_zone_map.detect { |_, v| v.eql? name } zone_name || options[:default_as_tz] rescue options[:default_as_tz] end
Private Instance Methods
_call(mw, env)
click to toggle source
# File lib/rack/time-zone-middleware.rb, line 58 def _call(mw, env) request = ::Rack::Request.new(env) time_zone = request.cookies[mw.options[:cookie_key]] || mw.options[:default_tz] env[mw.options[:time_zone_key]] = mw.find_as_time_zone(time_zone) mw.app.call(env) end
default_time_zone_map(no_test=true)
click to toggle source
# File lib/rack/time-zone-middleware.rb, line 49 def default_time_zone_map(no_test=true) if no_test && defined?(::ActiveSupport::TimeZone::MAPPING) -> { ::ActiveSupport::TimeZone::MAPPING } else $stderr.puts MAP_WARNING -> { {} } end end
time_zone_map()
click to toggle source
# File lib/rack/time-zone-middleware.rb, line 45 def time_zone_map @time_zone_map.is_a?(Proc) ? @time_zone_map.call : @time_zone_map end