Homepage shows deactivated chapters (sidebar fragment invalidation deletes the wrong key)
Les mainteneurs répondent en général sous 1 jour
Évaluation
- Difficulté
- 2/5
- Temps estimé
- 1-3 heures
- Accessibilité débutants
- 30/100
Piste de recherche
Read app/components/chapters_sidebar_component.html.erb and the Chapter#expire_chapters_sidebar_cache callback described in the issue. Check how the sidebar fragment key is built and how Chapter.active.count can be included; the issue says this count is needed because direct SQL updates do not change updated_at. Done means chapter-set changes produce a fresh sidebar cache key; note that pull request #2994 is already open.
Rédigé par le modèle d'indexation à partir du texte de l'issue.
Description
Deactivated chapters stay in the homepage chapter list. The chapter page 404s correctly and the subscriptions list is correct. Seen after several chapters were deactivated by setting active = false directly in the database.
The sidebar caches under a fixed key, and the callback that expires it deletes a key that does not exist:
app/components/chapters_sidebar_component.html.erbcallscache "chapters-sidebar". ActionView stores this asviews/chapters_sidebar_component/chapters-sidebar, plus the cache namespace.Chapter#expire_chapters_sidebar_cachedeleteschapters-sidebar, which resolves to a different entry. The delete has never matched, so no write path invalidates the fragment, not only direct database edits.
Fix: derive the cache key from the data so it changes whenever the chapter set changes. The key must include Chapter.active.count, because a plain SQL update that sets active does not bump updated_at.
Evidence
- The production cache store held one sidebar entry, last written 2026-09-13, under
views/chapters_sidebar_component/chapters-sidebar, and nochapters-sidebarentry. - Toggling
Chapter#update!in a productionrails runnerfired the callbacks and left the homepage unchanged. - Deleting the real entry refreshed the homepage at once.
- The fixed key is shared across locales. A derived key removes that side effect.
- The stale entry is cleared in production as of 2026-10-07. It will go stale again on the next chapter change until this is fixed.
- Langage dominant
- Ruby
- Étoiles
- 105
- Forks
- 206
- Merge moyen
- 1 j 1 h
- PR mergées (30 j)
- 78
Préparer son environnement
- Fournit un Dockerfile ou un fichier Docker Compose
- Aucun modèle de pull request
- Lire le guide de contribution
Par où commencer
- Lisez l'issue en entier, puis le guide de contribution du projet.
- Signalez en commentaire que vous la prenez — cela évite que deux personnes fassent le même travail.
- Forkez le dépôt et travaillez sur une branche.
- Ouvrez une pull request qui référence le numéro de l'issue.
Autres issues de codebar/planner
-
DashboardQuery eager-loads workshop_host with :sponsors in one join (same host-loss trap as #2975)Ouverte
Difficulté 2/5 1-3 heures Accessibilité débutants 78/100
Les mainteneurs répondent en général sous 1 jour
-
enhancement
Difficulté 2/5 1-3 heures Accessibilité débutants 76/100
Les mainteneurs répondent en général sous 1 jour
-
Difficulté 2/5 1-3 heures Accessibilité débutants 68/100
Les mainteneurs répondent en général sous 1 jour
-
Difficulté 4/5 3-5 jours Accessibilité débutants 45/100
codebar/planner#2990 · 4 commentaires ·
Les mainteneurs répondent en général sous 1 jour
-
Difficulté 4/5 3-5 jours Accessibilité débutants 30/100
Les mainteneurs répondent en général sous 1 jour
Toutes les issues de codebar/planner
Issues similaires
-
Difficulté 2/5 1-3 heures Accessibilité débutants 68/100
ublue-os/homebrew-experimental-tap#774 ·
Les mainteneurs répondent en général sous 1 jour
-
accessibility
Difficulté 1/5 Moins d'une heure Accessibilité débutants 72/100
slovensko-digital/ops-portal#212 ·
Les mainteneurs répondent en général sous 1 jour
-
Don't expose useless actions....Ouverte
Difficulté 2/5 1-3 heures Accessibilité débutants 62/100
-
Local evaluation buckets percentage splits with the server key, so results differ from FlagsmithOuverte
Difficulté 2/5 1-3 heures Accessibilité débutants 75/100
-
Add PrestashopOuverterequest
Difficulté 2/5 1-3 heures Accessibilité débutants 72/100
endoflife-date/endoflife.date#11303 ·
Les mainteneurs répondent en général sous 1 jour