Existe uma tarefa de rake que mostra as migrações pendentes em um aplicativo rails?
ruby-on-rails
rails-migrations
Somente leitura
fonte
fonte
Don't know how to build task 'db:migrate:status'
nos trilhos 3.2.8rake -T
mas os outros aparecem ?up
significa que a migração foi executada.down
significa que a migração não foi executada.Existe
rake db:abort_if_pending_migrations
(pelo menos no Rails 2.3.3, não tenho certeza de quando foi introduzido). A descrição diz 'Gera um erro se houver migrações pendentes'. Isso parece ser usado mais como pré-requisito para outras tarefas, mas acho que você pode usá-lo para seus propósitos.EDIT: Aqui está um exemplo da saída depois de ter acabado de gerar e não executar uma migração de 'teste'
fonte
Este comando listará todas as migrações com seus status (
UP
ouDOWN
)Trilhos 3 e 4
Trilhos 5
fonte
rake db:version
fará isso no Rails 2.fonte
Isso funciona para os trilhos 5.2
fonte
Tente rake -h (ajuda) e veja rake -n (= rake --dry-run). Portanto, provavelmente algo como rake -n db: migrate deve obter o que você deseja.
fonte
Pode não ser exatamente o que o OP está pedindo, mas se você precisar verificar rapidamente se há alguma migração pendente para uso em uma tarefa de rake, sem recorrer a
rake db: migrate: status | grep down (pode não funcionar se você estiver no Windows)
ActiveRecord :: Migration.check_pending! (gera ActiveRecord :: PendingMigrationError que você precisa resgatar)
você pode usar needs_migration? método: https://apidock.com/rails/v4.0.2/ActiveRecord/Migrator/needs_migration%3F/class
fonte
ActiveRecord::Migrator.needs_migration?
no Rails 5.1Seguinte comando para verificar o status da migração:
OU
quando você executa o servidor, ele exibe uma mensagem para executar a migração pendente primeiro.
fonte
Se você quiser ver quanta migração é feita ou pendente, veja o comando abaixo.
Mais neste link: Migração de registro ativo do Rails
fonte
Se você precisar de uma linha única do bash para determinar se deve executar uma migração ou não (por exemplo, migrar apenas em um comando de fase de liberação do Heroku quando houver uma migração pendente), isso funciona:
fonte