2011-12-20 8 views
15

Jestem trochę zdezorientowany przez zamierzone użycie domyślnych zadań Rakes Rakes i chciałbym doradzić, czy powinienem używać db:reset lub pisać niestandardowe zlecenie Rake. Nic mądrego, tylko codzienne sprzątanie i może mi brakować oczywistego dokumentu, ponieważ jestem nowy w Rails.Rake in Rails: czy powinienem używać db: reset?

Mój problem: Chcę wyrzucić moją bazę danych i uruchomić ją z całkowicie czystej instalacji, aby upewnić się, że baza danych zawiera tylko znane dane. Jest to użyteczne podczas przygotowywania prezentacji, do debugowania i upewniania się, że Jenkins porównuje testy podobne do podobnych.

Obecnie piszę to:

bin/rake db:drop:all db:create:all db:migrate db:seed db:test:prepare 

Jest dużo do pisania, ale pozostawia dane nasion tylko w obu bazach dev i testowych. Nie jestem pewien, jak to się różni od db:reset, co byłoby wygodniejsze w pisaniu.

Czy należy używać db:reset lub pisać niestandardowe zadanie db:from_scratch?

Odpowiedz

9

Jeśli nie masz pewności, co robi zadanie rake, proponuję go nie używać. W tym przypadku prawdopodobnie jesteś w porządku, jednak db:reset nie jest odpowiednikiem tego, co robisz powyżej. db:reset odtwarza bazę danych z pliku scheme.rb, może być inna, ponieważ można mieć zapisane migracje, które nie zostały jeszcze uruchomione.

Sugerowałbym, że używasz własne zadanie natarcia można następnie zmodyfikować go do swoich dokładnych celów, zwłaszcza jeśli chcesz wykonywać inne zadania, jak również (na przykład znakowanie w Git)

+0

Nieco wyraźniejsze wyjaśnienie, dzięki. Potwierdza mnie podczas pisania niestandardowego zadania. –

1

kim jesteś próbując osiągnąć w swoich zadaniach uruchamianych przez rake, ustawia się zarówno bazę testową, jak i programującą. rake db:reset zrobi to po prostu dla bieżącego środowiska db zgodnie z schema.rb, a następnie załaduje dane o nasionach do bazy danych. Schema.rb w ogóle nigdy nie jest edytowane, jego przeznaczeniem jest know-only/refer-only, jednak niektórzy ludzie mają tendencję do posiadania różnych schematów.rb, które mogą powodować problemy :(Co brzmi lepiej dla mnie, jeśli musisz ustaw bazę danych zarówno na potrzeby programowania, jak i testowania, a następnie uruchom migracje do środowiska deweloperskiego i użyj pliku schema.rb do utworzenia środowiska testowego db. Zdecydowanie proponuję uzyskać drugą opinię od niektórych guru Rails, aby dowiedzieć się, jaka jest prawdziwa sposób, aby osiągnąć to, co chcesz

21

należy używać.

rake db:reset 

będzie to spadek baza danych, Odtworzenie it and load do bieżącego schematu do niego.

Pełną listę zadań db kasę:

rake --describe db 

Jeśli zmiany wymagań wtedy byłoby lepiej napisać własne zadanie natarcia, gdzie można zastosować własne ustawienia użytkownika.

+0

Tak konkretnie reset nie rozwiązuje mojego problemu z bazą danych testu, która jest taka sama jak (pusta) baza danych dev i zawiera dane źródłowe. Niestandardowe dźwięki są wyraźniejsze. –

1

rake db: reset Spowoduje to upuszczenie bazy danych, odtworzenie jej i załadowanie do niej bieżącego schematu.

rake db: Reset będzie działać rake db: seed

Przykład:

jeśli masz plik z nasion, które napisał po pobiegł migracji, to będzie działać, że zbyt.

Powiązane problemy