sql - taladro - tabla de decibeles permitidos para el oido humano
¿Qué es db/development_structure.sql en un proyecto de rieles? (4)
Hay una estructura_desarrollo.sql dentro de mi carpeta / db de mi aplicación de rieles (rieles 2.3.4, ruby 1.8.7) y no estoy seguro de qué hace exactamente.
- ¿Es necesario para algún entorno específico? (Creo que leí en algún lugar que se usa para pruebas)
- ¿Necesito agregarlo a mi repositorio git?
En los carriles 3, ni siquiera tienes que escribir esta línea,
config.active_record.schema_format =: sql
Puede generar este archivo structure.sql simplemente ejecutando el comando de rastreo mencionado anteriormente
Esta publicación ha sido utilizada como referencia por un compañero de trabajo mío, pero las dos respuestas no son lo suficientemente exactas o informativas.
development_structure.sql es un volcado de bajo nivel del esquema, que es necesario cuando comienza a usar las características de la base de datos propietarias, ya sea que quiera o no, las usará en algún momento.
Respecto a la cuestión de almacenarlo o no, hay cierto debate. Aquí hay una publicación informativa: http://www.saturnflyer.com/blog/jim/2010/09/14/always-check-in-schema-rb/ . Y mi opinión sobre esto sigue.
El objetivo de development_structure.sql es sincronizar, para cualquier confirmación dada, la estructura de la base de datos con el código, sin tener conocimiento previo de la estructura del esquema, es decir, sin tener que depender de un estado preexistente del esquema para obtener el nuevo.
En pocas palabras, al tener una estructura de esquema disponible, cada vez que cambie de rama / confirmación, la carga directamente y la olvida. Esto es principalmente válido para proyectos dinámicos y "atestados", donde diferentes sucursales tienen diferencias en la estructura del esquema subyacente.
Sin tener almacenada la estructura del esquema, tendría que usar siempre un esquema de referencia existente en su base de datos, y migrarlo hacia atrás o hacia adelante cada vez que cambie de rama / confirmación; varios casos reales pueden hacer que este proceso sea ineficiente (por ejemplo, cuando otra rama no tiene algunas migraciones que usted tiene actualmente, o algunas migraciones no se pueden revertir).
Otro problema son las compilaciones automatizadas, que sufren los mismos problemas y, lo que es peor, no pueden aplicar cambios manuales.
El único inconveniente es que requiere cierto hábito, que es almacenarlo cada vez que se ejecuta una migración. Fácil de decir, pero también fácil de olvidar.
No digo que no puedas vivir sin development_structure.sql, por supuesto que puedes. Pero si lo tiene, al cambiar de bifurcación / confirmación simplemente carga y olvida; Si no lo hace, puede que tenga que seguir una serie de pasos manuales.
No debes agregarlo a tu repositorio git.
Es un archivo creado automáticamente por rieles cuando ejecuta migraciones con su database.yml configurado para conectarse a una base de datos mysql. Puedes verlo como una alternativa a schema.rb
Creo que puedes forzar a los rieles para crearlo agregando en tu entorno.
config.active_record.schema_format = :sql
Cuando está presente, este archivo se usa, por ejemplo, por:
rake db:test:clone_structure
Editar
Sección relevante en Ruby On Rails Guides. http://guides.rubyonrails.org/migrations.html#schema-dumping-and-you
Recomiendan verificarlo en el control de código fuente en el wiki.
Personalmente me gusta mantenerlo fuera de esto. Me gusta poder ejecutar todas las migraciones muy rápidamente. Es para mí una buena señal. Si las migraciones se vuelven lentas, siento que ya no tengo el control total de mi entorno. La lentitud en las migraciones generalmente significa que tengo una gran cantidad de datos en mi base de datos de desarrollo, por lo que me siento mal.
Sin embargo, parece ser una cuestión de gusto personal hoy en día. Sigue tus instintos en este caso.
Se crea cuando ejecuta una tarea de rake para clonar su base de datos de desarrollo a su base de datos de prueba. La base de datos de desarrollo se envía a SQL, que luego se lee en su base de datos de prueba. Se puede eliminar de forma segura.