Basic Configuration

Configure Session to match your application's requirements.

Minimal Configuration

Session.configure do |config|
  config.secret = ENV["SESSION_SECRET"]
  config.store = Session::MemoryStore(UserSession).new
end

Session provides presets for common scenarios, reducing configuration from 14+ lines to just 3-4 lines:

Development Preset

Session.configure do |config|
  config = Configuration.from_preset(:development)
  config.store = Session::MemoryStore(UserSession).new
end

Production Preset

Session.configure do |config|
  config = Configuration.from_preset(:production)
  config.secret = ENV.fetch("SESSION_SECRET")
  config.store = Session::RedisStore(UserSession).new(client: Redis.new)
end

Available Presets

Preset
Use Case
Key Features

:development

Local development

30min timeout, no encryption, minimal security

:production

Production deployments

1hr timeout, encryption, circuit breaker, retry

:high_security

Sensitive applications

15min timeout, KDF, client binding, max security

:testing

Test suites

5min timeout, fast, no logging

:clustered

Multi-node deployments

Production settings + clustering + local cache

Customizing Presets

Start with a preset and override specific settings:

Full Configuration

Configuration Properties

Property
Type
Default
Description

secret

String

(default)

Encryption secret (32+ chars recommended)

timeout

Time::Span

1.hour

Session lifetime

session_key

String

"_session"

Cookie name

store

Store

nil

Storage backend

Environment-Based Configuration

Accessing Configuration

Last updated

Was this helpful?