Czy istnieje zadanie prowizji, które pokazuje oczekujące migracje w aplikacji railsowej?
Czy istnieje zadanie prowizji, które pokazuje oczekujące migracje w aplikacji railsowej?
Odpowiedzi:
rake db:migrate:status
(Rails 3 do 5) lub rails db:migrate:status
(Rails 5) zrobią to. Zobacz to zatwierdzenie .
up
oznacza, że migracja została przeprowadzona. down
oznacza, że migracja nie została uruchomiona.
rake -T
ale inne tak?
up
oznacza, że migracja została przeprowadzona. down
oznacza, że migracja nie została uruchomiona.
Jest rake db:abort_if_pending_migrations
(przynajmniej w Railsach 2.3.3, nie jestem pewien, kiedy został wprowadzony). Opis mówi „Zgłasza błąd, jeśli są oczekujące migracje”. Wydaje się, że jest to warunek wstępny dla innych zadań, ale myślę, że możesz go użyć do swoich celów.
EDYCJA: Oto przykład wyniku po właśnie wygenerowaniu, a nie przeprowadzeniu migracji „testowej”
rails_project theIV$ rake db:abort_if_pending_migrations
(in /Users/theIV/Sites/rails_project/)
You have 1 pending migrations:
20090828200602 Test
Run "rake db:migrate" to update your database then try again.
To polecenie wyświetli listę wszystkich migracji wraz z ich stanem ( UP
lub DOWN
)
Szyny 3 i 4
rake db:migrate:status
Szyny 5
rake db:migrate:status
# Or
rails db:migrate:status
Spróbuj rake -h (pomoc) i spójrz na rake -n (= rake --dry-run). Więc prawdopodobnie coś takiego jak rake -n db: migrate powinno dać ci to, czego chcesz.
Może nie do końca jest to, o co prosi OP, ale jeśli chcesz po prostu szybko sprawdzić, czy jakiekolwiek migracje oczekują na użycie w zadaniu rake, bez uciekania się do
rake db: migrate: status | grep down (może nie działać, jeśli używasz systemu Windows)
ActiveRecord :: Migration.check_pending! (podnosi ActiveRecord :: PendingMigrationError, który musisz uratować)
możesz użyć need_migration? metoda: https://apidock.com/rails/v4.0.2/ActiveRecord/Migrator/needs_migration%3F/class
ActiveRecord::Migrator.needs_migration?
w Railsach 5.1
Jeśli chcesz zobaczyć, ile migracji jest zrobione lub oczekujące, możesz zobaczyć, używając poniższego polecenia.
rails db:migrate:status
Więcej na ten link: Rails Active Record Migration
Jeśli potrzebujesz jednowierszowego kodu bash, aby określić, czy uruchomić migrację, czy nie (np. Migrować tylko w poleceniu fazy wydania Heroku, gdy istnieje oczekująca migracja), działa to:
(rails db:migrate:status | grep "^\s*down") && rails db:migrate || echo "No pending migrations found."
Don't know how to build task 'db:migrate:status'
na szynach 3.2.8