Add preboot context to strong_migrations destructive-operation messages
I maintainer di solito rispondono entro 1 giorno
Nessuno ha ancora preso questa issue.
Valutazione
- Difficoltà
- 2/5
- Tempo stimato
- 1-3 ore
- Idoneità per principianti
- 76/100
Direzione di ricerca
Inizia da config/initializers/strong_migrations.rb e dall’elenco delle chiavi strong_migrations in lib/strong_migrations/error_messages.rb, concentrandoti sulle nove chiavi indicate nell’issue. Leggi la sezione di AGENTS.md relativa a Heroku preboot, quindi esegui bundle exec rake db:migrate con una migrazione rename_column usa e getta. Il lavoro è completato quando compare la nota preboot senza modificare il testo degli altri messaggi.
Scritto dal modello di indicizzazione a partire dal testo della issue.
Descrizione
Follow-up from #2949 (preboot enabled on codebar-production).
With preboot, the release phase (rake db:prepare) runs before old web dynos stop, so old code serves against the new schema for ~3 minutes after each deploy. When strong_migrations raises on a destructive operation, its message ends with "wrap this step in a safety_assured block" — which under preboot only means "the old release tolerates this", not "this is safe to deploy right now". That distinction is documented in AGENTS.md ("Migrations and Heroku preboot") but is invisible at the moment a migration author is staring at the error.
Proposal
Append a short preboot note to the destructive-operation messages via StrongMigrations.error_messages (docs; key list in the gem's lib/strong_migrations/error_messages.rb, confirmed for 2.8.0). Relevant keys: change_column, change_column_with_not_null, change_column_default, change_column_null, rename_column, rename_table, rename_schema, rename_enum_value, execute. One possible shape:
# config/initializers/strong_migrations.rb
note = <<~TXT
Heroku preboot: this runs in the release phase before old web dynos stop,
so old code serves against the new schema for ~3 minutes after the deploy.
See AGENTS.md ("Migrations and Heroku preboot"). If the migration cannot
be made forward-compatible, disable preboot for this deploy.
TXT
%i[change_column change_column_with_not_null change_column_default
change_column_null rename_column rename_table rename_schema
rename_enum_value execute].each do |key|
StrongMigrations.error_messages[key] = StrongMigrations.error_messages[key] + "\n\n" + note
end
Verification
Write a throwaway migration containing a flagged operation (e.g. rename_column), run bundle exec rake db:migrate in development, and check the printed message carries the note. Confirm no other message text changed.
Out of scope
Changing any gem defaults beyond messages; touching start_after or target_postgresql_version.
- Lingua principale
- Ruby
- Stelle
- 104
- Fork
- 205
- Merge medio
- 1g 2h
- PR unite (30g)
- 81
Preparare l'ambiente
- Include un Dockerfile o un file Docker Compose
- Nessun modello di pull request
- Leggi la guida per i contributori
Come iniziare
- Leggi tutta la issue e poi la guida ai contributi del progetto.
- Commenta sulla issue per dire che te ne occupi tu — evita che due persone facciano lo stesso lavoro.
- Fai un fork del repository e lavora su un branch.
- Apri una pull request che faccia riferimento al numero della issue.
Altre issue di codebar/planner
-
Difficoltà 2/5 1-3 ore Idoneità per principianti 68/100
I maintainer di solito rispondono entro 1 giorno
-
Difficoltà 4/5 3-5 giorni Idoneità per principianti 56/100
I maintainer di solito rispondono entro 1 giorno
-
Chapter show pages allocate ~21k+ objects per render for large chapters (18% of app allocations)Apertaperformance
Difficoltà 4/5 3-5 giorni Idoneità per principianti 55/100
codebar/planner#2952 · 1 assegnatario ·
I maintainer di solito rispondono entro 1 giorno
-
Workshop show pages allocate ~7.3k objects per request with no caching (28% of app allocations)Apertaperformance
Difficoltà 4/5 3-5 giorni Idoneità per principianti 52/100
I maintainer di solito rispondono entro 1 giorno
-
InvitationManager silently no-ops on non-invitable events/workshops while controllers flash successApertabug
Difficoltà 3/5 1-2 giorni Idoneità per principianti 72/100
I maintainer di solito rispondono entro 1 giorno
Tutte le issue di codebar/planner
Issue simili
-
security
Difficoltà 2/5 1-3 ore Idoneità per principianti 68/100
I maintainer di solito rispondono entro 1 giorno
-
OSCON 2016Apertacontent
Difficoltà 2/5 1-3 ore Idoneità per principianti 68/100
rubyevents/rubyevents#2148 ·
I maintainer di solito rispondono entro 1 giorno
-
Difficoltà 2/5 1-3 ore Idoneità per principianti 78/100
we-promise/sure#3838 · 2 commenti ·
I maintainer di solito rispondono entro 1 giorno
-
Mend: dependency security vulnerability
Difficoltà 2/5 1-3 ore Idoneità per principianti 68/100
ManageIQ/manageiq-ui-classic#10341 ·
I maintainer di solito rispondono entro 1 giorno
-
Difficoltà 1/5 Meno di un'ora Idoneità per principianti 88/100
rubocop/ruby-style-guide#984 ·