2015-03-19 16 views
16

Ich lerne Ruby on Rails, und ich möchte nur sicherstellen, dass ich den Unterschied zwischen Fixtures und Seed Daten verstehe.Rails Fixtures vs Samen

Was ich verstehe, ist, dass Vorrichtungen sind grundsätzlich Testdaten, die Sie Ihre Tests Behauptungen gegen laufen und haben keine Ausdauer, sobald die Tests durchgeführt werden, während die Samen Sie die Datenbank aufgenommen in automatisch, wenn Sie so etwas wie rake db:seed tun.

Warum Samen in diesem Fall verwenden? Nur um zu vermeiden, dass Sie alle unzähligen Testaussagen schreiben müssen? Für Daten, von denen Sie wissen, dass sie in der Datenbank sein müssen, wenn die App in Produktion geht?

(ich glaube, statische Daten, die immer da gewesen wären, wie der erste Server-Betreiber auf einem Forum?)

Antwort

6

Viele Anwendungen benötigen einige Daten nur korrekt ausgeführt wird. Zum Beispiel eine Liste von Ländern und Postleitzahlen. Oder eine Liste möglicher Rollen, die Benutzer annehmen können, selbst wenn sich noch keine Benutzer in der Datenbank befinden.

Denken Sie an die Seed-Daten in Bezug darauf, was benötigt wird, um eine Entwicklungsumgebung zum Laufen zu bringen. Im Allgemeinen ist für einen neuen Rails-Entwickler auf jeder App zu arbeiten, soll der Prozess immer so gehen:

  1. Clonen die Repo
  2. Installieren Sie die Edelsteine ​​über Bündler
  3. erstellen und Samt die Entwicklung und Testdatenbanken
  4. Führen Sie die Tests, die
+1

Keine Testdatenbanken erstellen. – maletor

+0

https://Stackoverflow.com/a/25819011/1949363 ist eine weitere prägnante Antwort in die gleiche Richtung – srt32

11

passieren sollten Sie es richtig gemacht haben. Seed-Daten füllen die Datenbank mit den erforderlichen Daten, damit die App von Anfang an verwendet werden kann. Dazu gehört das Hinzufügen eines Standard-Administratorkontos, das für die App erforderlich ist, damit sie von Anfang an verwaltet werden kann.

Seed-Daten sollten nicht für Testzwecke verwendet werden, während des Testens sollten Sie immer sicherstellen, dass die Datenbank sauber ist, so dass Sie wissen, dass die einzigen Daten, die von einem Beispiel verwendet werden, die Daten sind außerhalb erlaubt dies Verwirrung zu vermeiden.

Vorrichtungen ist eine Möglichkeit, dies zu tun. aber ein besserer Weg ist, Fabriken wie factory girl zu verwenden, überprüfen Sie diese railscast episode für eine bessere Erklärung.

+0

Eine gute Antwort, außer ich würde Leuchten so schnell nicht abzählen. Die neuesten Versionen funktionieren gut. Teste die Geräte zuerst. Wenn sie nicht tun, was Sie wollen, dann suchen Sie nach Alternativen wie Fabrikmädchen. – ReggieB

+0

Siehe http://brandonhilkert.com/blog/7-reasons-why-im-sticking-with-minitest-and-fi-xtures-in-rails/ – ReggieB