url_allowlist only works against DATABASE_URL
Nadie ha tomado este issue todavía.
Evaluación
- Dificultad
- 4/5
- Tiempo estimado
- 3-5 días
- Aptitud para principiantes
- 25/100
Línea de trabajo
Comienza rastreando el manejo de url_allowlist por parte de Safeguard y cómo se invocan los cleaners; después, compáralo con la conexión de ActiveRecord de database_cleaner-active_record. Se considera terminado cuando safeguard comprueba la conexión que realmente se utiliza desde database.yml o DATABASE_URL en lugar de depender únicamente de ENV['DATABASE_URL'], incluso cuando esa variable no está definida.
Escrito por el modelo de indexación a partir del texto del issue.
Descripción
I debated filing this against database_cleaner-active_record, but after digging in a bit I think it would need a more comprehensive fix.
I have a Rails app running in a Docker stack, where under test, the database is configured the old-fashioned way in database.yml rather than with ENV['DATABASE_URL'] -- or rather, both are supported, but if DATABASE_URL isn't set, it falls back to a hard-coded value.
test:
url: <%= ENV['DATABASE_URL'] ||'postgres://root:root@db/framework-test?pool=5' %>
I wanted a safeguard that would work both with the Docker stack in CI, or for a developer setting up a test database locally or on some other database server, so I assumed I had to set url_allowlist. My first attempt was this lambda:
DatabaseCleaner.url_allowlist = [
->(url) { URI.parse(url).path.end_with?('framework-test') }
]
This blows up, though, because the URL that gets passed here is ENV['DATABASE_URL'], and URI.parse(nil) fails.
My next concern was that DatabaseCleaner would truncate the database at ENV['DATABASE_URL'] (if it exists) rather than the one ActiveRecord is actually using in tests. Thankfully database_cleaner-active_record is smarter than that, and it's using the ActiveRecord connection.
But it seems like if that's how it actually works, Safeguard should somehow hook into that, rather than relying on ENV['DATABASE_URL']. Maybe instead of running once before all cleaners, it should be run per-cleaner, and the cleaner implementations should be responsible for providing the URL they're actually using?
- Lenguaje dominante
- Ruby
- Estrellas
- 3k
- Forks
- 485
- Métricas de merge de PR
- Sin PR fusionados en 30 d
Preparar el entorno
- Incluye un Dockerfile o un archivo de Docker Compose
- Sin plantilla de pull request
- Sin guía de contribución
Primeros pasos
- Lee el issue completo y luego la guía de contribución del proyecto.
- Comenta en el issue que vas a ocuparte — evita que dos personas hagan lo mismo.
- Haz un fork del repositorio y trabaja en una rama.
- Abre un pull request que haga referencia al número del issue.
Más de DatabaseCleaner/database_cleaner
-
:transaction strategy: uncommitted data disappears after perform_enqueued_jobs on Rails ≥ 7.2Abierto
Dificultad 3/5 1-2 días Aptitud para principiantes 67/100
-
Cleaning of dev DBAbierto
Dificultad 4/5 3-5 días Aptitud para principiantes 25/100
-
Dificultad 3/5 1-2 días Aptitud para principiantes 45/100
-
Cannot truncate a table referenced in a foreign key constraint (ActiveRecord::StatementInvalid)Abierto
Dificultad 4/5 3-5 días Aptitud para principiantes 35/100
DatabaseCleaner/database_cleaner#717 · 5 comentarios · 1 reacción ·
-
Dificultad 4/5 3-5 días Aptitud para principiantes 25/100
DatabaseCleaner/database_cleaner#716 · 2 comentarios ·
Todos los issues de DatabaseCleaner/database_cleaner
Issues similares
-
Dificultad 2/5 1-3 horas Aptitud para principiantes 88/100
forem/forem#23933 · 1 comentario ·
Los mantenedores suelen responder en 1 día
-
Allow customizing the page titleAbierto
Dificultad 2/5 1-3 horas Aptitud para principiantes 65/100
rails/mission_control-jobs#347 ·
-
PROJECT: ILR/DRS
Dificultad 2/5 1-3 horas Aptitud para principiantes 72/100
thewca/worldcubeassociation.org#15914 ·
Los mantenedores suelen responder en 1 día
-
Dificultad 2/5 1-3 horas Aptitud para principiantes 82/100
Los mantenedores suelen responder en 7 días
-
good first issue
Dificultad 2/5 1-3 horas Aptitud para principiantes 88/100
benbalter/site-inspector#127 ·
Los mantenedores suelen responder en 1 día