J’ai perdu mon schema.rb! Peut-il être régénéré?

En raison de problèmes de déploiement, j’ai arrêté de suivre schema.rb dans git. D’une manière ou d’une autre, j’ai mis ça et quelque part sur le chemin, mon fichier schema.rb a disparu.

Existe-t-il un moyen de régénérer schema.rb à partir de la firebase database ou des migrations? Je préférerais ne pas perdre les données existantes.

Si vous exécutez un rake -T il rake -T toutes les tâches de rake possibles pour votre projet Rails. L’un d’eux est db: schema: dump qui recrée le fichier schema.rb pour l’application Rails à partir de la firebase database.

 bundle exec rake db:schema:dump 

Prudent,

 rake db:schema:dump 

videra le schéma de firebase database actuel de la firebase database . Cela signifie que si vous avez apporté des modifications à vos migrations, celles-ci ne seront PAS reflétées dans le fichier schema.rb, ce qui n’est pas ce que vous voulez.

Si vous souhaitez recréer le schéma à partir des migrations, procédez comme suit:

 rake db:drop # ERASES THE DATABASE !!!! rake db:create rake db:migrate 
 rake db:schema:dump 

Je pense que cela est toujours valable dans Rails 3 – il régénère le schéma.rb de la firebase database.

RAILS 5 Way:

 rails db:schema:dump 

ou si vous rencontrez Gem :: LoadError alors:

 bundle exec rails db:schema:dump 

Remarque:

dans les rails 5, il est recommandé que la tâche soit générée / exécutée en utilisant des rails au lieu de rake , ceci est juste pour rappeler que la tâche générée par les rails est une extension. ce qui signifie que ces tâches peuvent également être exécutées en ajoutant un rake .

Si vous régénérez localement schema.rb , vous devriez vous en sortir. Il contient simplement une représentation de la structure de vos tables de firebase database. Les données elles-mêmes ne sont pas contenues dans ce fichier.

Pour régénérer votre fichier schema.rb , exécutez:

 bundle exec rake db:schema:dump 

Ensuite, schema.rb simplement le nouveau fichier schema.rb et vous devriez être en forme!

Directement à partir du fichier schema.rb lui-même:

Si vous devez créer la firebase database d’application sur un autre système, vous devez utiliser db:schema:load et ne pas exécuter toutes les migrations à partir de zéro. Cette approche est imparfaite et insoutenable (plus le nombre de migrations augmentera, plus le processus sera lent et plus la probabilité de problèmes sera grande).

Donc, ne faites pas la suggestion de rake db:migrate , ce qui a été suggéré dans la réponse la plus basse au moment de la rédaction de ce document.

J’ai également eu un problème similaire où mon ancien schéma n’était pas rafraîchissant même si je supprimais la migration.

Donc, ce que j’ai fait était de déposer toutes les tables existantes dans la firebase database et de les migrer à nouveau. Ensuite, l’exécution de la commande “db: schema: load” m’a donné un nouveau schéma.rb.

 drop table my_table_name // deleted them indivisully rake db:migrate rake db:schema:dump // re-created a new schema