Rail fixtures vs seeds
J'apprends Ruby on Rails, et j'aimerais juste m'assurer de comprendre la différence entre les fixtures et les données de seed.
ce que je comprends est que les fixtures sont essentiellement des données de test que vous exécutez vos assertions de test contre, et n'ont aucune persistance dès que vos tests sont faits, alors que les graines que vous mettez dans la base de données automatiquement quand vous faites quelque chose comme rake db:seed
.
Pourquoi utiliser des graines dans ce cas? Juste pour éviter d'avoir à écrire les nombreuses les tests affirmations? Pour les données que vous savez devra être dans la base de données lorsque l'application est mise en production?
(je suppose, les données statiques qui ont toujours été là, comme la première admin sur un forum?)
2 réponses
Vous l'avez droit. Seed data est de remplir la base de données avec les données préalables nécessaires pour permettre à l'application d'être utilisable dès le début, comme pour ajouter un compte administrateur par défaut qui est nécessaire pour l'application d'être gérable dès le début.
les données Seed ne doivent pas être utilisées à des fins d'essai, pendant l'essai vous devez toujours vous assurer que la base de données est propre afin que vous sachiez que les seules données utilisées par un exemple sont les données remplies par l'exemple lui-même pas d'où à l'extérieur, cela permet d'éviter toute confusion.
luminaires est un moyen de le faire. mais la meilleure façon est d'utiliser des usines, comme fille de l'usine, cochez cette railscast épisode pour une meilleure explication.
de Nombreuses applications ont besoin données pour fonctionner correctement. Par exemple, une liste de pays et code postal. Ou, une liste de rôles pour les utilisateurs à prendre, même si il n'y a pas d'utilisateurs dans la base de données.
pensez aux données seed en termes de ce qui serait nécessaire pour faire fonctionner un environnement de développement. En général, pour qu'un nouveau développeur de Rails travaille sur n'importe quelle application, le processus doit toujours se passer comme ceci:
- Clone de l' repo
- installez les gemmes via bundler
- et graines, le développement et les tests de bases de données
- exécutez les tests, qui devraient passer