Das macht Sinn. Aber was sind einige bevorzugte Workarounds für dieses Problem?
Antworten
Zu viele Anzeigen?In meinem Kommentar schlug ich die Verwendung von Rack-Cookie-basierte Sitzungen aber wenn man es genau betrachtet, sind die Sinatra-Sessions son Rack-Cookie-Sitzungen sowieso.
Wenn ich weiter schaue, sehe ich dies in den Sinatra-Dokumenten gefunden :
Um die Sicherheit zu erhöhen, werden die Sitzungsdaten im Cookie mit einem Sitzungsgeheimnis signiert. Ein zufälliges Geheimnis wird von Sinatra für Sie generiert. Da sich dieses Geheimnis jedoch bei jedem Start Ihrer Anwendung ändert, sollten Sie das Geheimnis selbst festlegen, damit alle Ihre Anwendungsinstanzen es gemeinsam nutzen:
set :session_secret, 'super secret'
Es scheint also, dass jedes Heroku-Dyno einen anderen Schlüssel generiert und daher die Sitzungscookies der anderen nicht lesen kann, und Sie müssen einen Schlüssel angeben, damit jedes Dyno denselben verwendet.
Anstatt einen geheimen Schlüssel zu Ihrem Quellcode hinzuzufügen, ist es wahrscheinlich besser, ein Umgebungsvariable :
$ heroku config:add SESSION_KEY=a_longish_secret_key
Dann in Ihrer Sinatra-App:
enable :sessions
set :session_secret, ENV['SESSION_KEY']