Это имеет смысл. Но какова предпочтительная работа вокруг этой проблемы?
В приложении Sinatra на Heroku сеанс не разделяется через динамики
Ответ 1
В моем комментарии я предложил использовать сеансы cookie на основе cookie, но в этом случае сеансы Sinatra - это сеансы cookie в стойке.
В дальнейшем я нашел это в документах Sinatra:
Чтобы повысить безопасность, данные сеанса в файле cookie подписываются секретом сеанса. Sinatra генерирует случайный секрет. Однако, поскольку этот секрет будет изменяться с каждым началом вашего приложения, вы можете захотеть установить секрет самостоятельно, поэтому все экземпляры вашего приложения используют его:
set :session_secret, 'super secret'
Итак, кажется, что каждый динамик Heroku генерирует другой ключ и поэтому не может читать файлы cookie сеансов друг друга, и вам нужно указать ключ, чтобы каждый динод использовал один и тот же.
Вместо того, чтобы добавлять секретный ключ к исходному коду, вы, вероятно, лучше настраиваете переменную среды :
$ heroku config:add SESSION_KEY=a_longish_secret_key
Затем в вашем приложении sinatra:
enable :sessions
set :session_secret, ENV['SESSION_KEY']
Ответ 2
Вы также можете использовать сеанс memcached для повышения производительности или безопасности. Не пробовал, но выглядел легко. 5MB бесплатно на герою.
Ответ 3
# In your app.rb file just add following -
enable :sessions
set :session_secret, "some_random_value"