[RUBY] Évitez le problème que la session ne peut pas être obtenue lorsque Canary est libéré lors de la mise à niveau de Rails 4.2.x vers 5.0.x

introduction

On ne sait pas si quelqu'un passera à Rails 5.0.x (et avec une version Canary) pour le moment, mais j'espère que cela aidera quelqu'un: priez:

Puisque le contenu est destiné à ceux qui connaissent dans une certaine mesure Ruby et Rails, les explications de base telles que la session et le rack dans Rails sont omises.

Solution

--Fixer la version du rack gem à 2.0.7

En un mot la cause

Causé par la mise à niveau de Rails 4.2.x-> 5.0.x faisant glisser le gem de rack pour mettre à jour vers 2.0.8 ou supérieur. (Il y a un changement destructeur dans la logique de génération de session_id dans le rack 2.0.7-> 2.0.8)

See. https://github.com/rack/rack/blob/master/CHANGELOG.md#208---2019-12-08

La description

Lib / rack / session / abstract / in [différence rack 2.0.7 ... 2.0.8](https://github.com/rack/rack/compare/2.0.7 ... 2.0.8) C'est très facile à comprendre si vous regardez autour de id.rb, lib / rack / session / memcache.rb.

De ce qui précède, il n'y a aucun problème si vous déployez une nouvelle version de rack gem sur tous les serveurs à la fois, mais dans un environnement où les gemmes de rack de 2.0.7 ou moins et 2.0.8 ou plus sont mélangées sur chaque serveur (environnement de version Canary), session Ne peut plus être obtenu.

Recommended Posts

Évitez le problème que la session ne peut pas être obtenue lorsque Canary est libéré lors de la mise à niveau de Rails 4.2.x vers 5.0.x
Comment résoudre le problème selon lequel la notification ne peut pas être demandée sur iOS14
[Rails] Résolution du problème selon lequel le délai d'expiration de la session ne fonctionne pas
Tutoriel Rails Lorsque les rails neufs ne peuvent pas être réalisés en raison de versions différentes
Une histoire qui résout le problème que REMOTE_ADDR ne peut pas être acquis dans un cluster construit avec Docker Swarm + Traefik (1.7).
[Rails] Comment résoudre le problème d'écrasement de l'image par défaut lors de l'édition sans télécharger l'image [Active Storage]
Que faire lorsque l'erreur «La variable non statique x ne peut pas être référencée à partir d'un contexte statique» en Java. Enseignements tirés de la toute première étape de programmation Remarque 01
Fonction Strict_loading pour supprimer l'occurrence de problème N + 1 ajoutée à partir des rails 6.1
[Rails] "Pry-rails" qui peuvent être utilisés lors de l'enregistrement avec la méthode create
767 JSON :: ParserError se produit et le serveur local ne peut pas être démarré.
Le problème selon lequel la page localhost lancée par Docker ne peut pas être confirmée dans le navigateur lorsque le pare-feu ESET fonctionne
[Rails] Les messages ne peuvent pas être supprimés lorsqu'ils sont commentés! ??
[Swift5] Problème selon lequel la cellule ne peut pas être exploitée lorsque TextView est placé dans TableViewCell
Résolvez le problème que SwiftPM ne peut pas traverser le proxy et ajouter des packages au projet
[Rails] Que faire lorsque vous souhaitez générer une erreur qui ne peut pas être annulée lorsque des restrictions de clé externe sont appliquées