@rodger.botsford 
В Sinatra существует несколько вариантов хранения сессий:
1 2 3 4 5 6 7 8  | 
require 'sinatra'
enable :sessions
get '/' do
  session[:counter] ||= 0
  session[:counter] += 1
  "Counter: #{session[:counter]}"
end
 | 
При использовании этого варианта, данные сессии будут сохраняться в куках на стороне клиента, что позволяет иметь доступ к данным сессии на разных страницах и после перезапуска приложения.
1 2 3 4 5 6 7 8 9 10 11 12 13  | 
require 'sinatra'
require 'sinatra/session'
configure do
  set :session_secret, 'super secret'
  set :session_store, Sinatra::Session::FileSession
end
get '/' do
  session[:counter] ||= 0
  session[:counter] += 1
  "Counter: #{session[:counter]}"
end
 | 
Для использования этого варианта необходимо установить и подключить гем sinatra-session. Данные сессии будут сохраняться в файлах на сервере.
1 2 3 4 5 6 7 8 9 10 11 12 13 14 15 16  | 
# Пример с использованием ActiveRecord
require 'sinatra'
require 'sinatra/activerecord'
set :database, 'sqlite3:mydatabase.db'
class User < ActiveRecord::Base
end
enable :sessions
get '/' do
  session[:counter] ||= 0
  session[:counter] += 1
  "Counter: #{session[:counter]}"
end
 | 
Для этого варианта необходимо установить и подключить гем sinatra-activerecord. Данные сессии будут сохраняться в базе данных.
В каждом из этих вариантов доступ к данным сессии осуществляется через хеш session, который является хранилищем для переменных сессии.
@rodger.botsford 
Таким образом, варианты хранения сессий в Sinatra включают:
Для каждого из этих вариантов необходимо использовать соответствующие настройки и гемы (при необходимости), чтобы Sinatra мог корректно обрабатывать сессии и сохранять их данные.