2009-08-28 3 views

ответ

34

Существует rake db:abort_if_pending_migrations (по крайней мере, в Rails 2.3.3, не уверен, когда он был введен). В описании говорится: «Вызывает ошибку, если есть ожидающие миграции». Это, по-видимому, используется в качестве дополнительного условия для других задач, но я предполагаю, что вы можете использовать его для своих целей.

EDIT: Вот пример вывода после того, как только сгенерирован и не запустить «тест» миграции

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. 
+0

Я люблю добавлять это для сопоставления зависимостей между контейнерами рельсов –

+0

Все еще там в Rails 4.1.16 – Magne

+0

Работает в рельсах 5.1.3, а также –

2

Try грабли -h (помощь) и посмотрим на грабли -n (= грабли --пробный прогон). Так что, вероятно, что-то вроде rake -n db: migrate должно получить то, что вы хотите.

+2

Это не сработает. Он просто печатает: ** Invoke db: migrate (first_time) ** Вызывать среду (first_time) ** Среда выполнения (сухой запуск) ** Выполнение (сухой пробег) db: migrate – jrdioko

210

rake db:migrate:status выполнит это в Rails 3. См. the commit.

+0

Я получаю 'Do not знать, как построить задачу 'db: migrate: status'' on rails 3.2.8 –

+1

@PeterEhrlich: Не отображается ли она в 'rake -T', а другие? – jrdioko

+1

Правильно, ничего о статусе в 'rake -T' –

15

rake db:version выполнит это на Rails 2.

+0

Также действителен в рельсах 3.2.18 –

9

Эта команда выведет список всех миграций с их статусом (UP или DOWN)

Rails 3 и 4

rake db:migrate:status 

Rails 5

rake db:migrate:status 

# Or 

rails db:migrate:status 
0

После команды для проверки состояния миграции:

rake db:migrate:status 

ИЛИ

при запуске сервера, он будет отображать сообщение для запуска в ожидании миграции первым.