Apakah ada tugas menyapu yang menunjukkan migrasi yang tertunda di aplikasi rel?
ruby-on-rails
rails-migrations
Hanya baca
sumber
sumber
Don't know how to build task 'db:migrate:status'
rel 3.2.8rake -T
tetapi yang lain melakukannya?up
berarti migrasi telah dijalankan.down
berarti migrasi belum berjalan.Ada
rake db:abort_if_pending_migrations
(setidaknya di Rails 2.3.3, tidak yakin kapan diperkenalkan). Deskripsi mengatakan 'Meningkatkan kesalahan jika ada migrasi yang tertunda'. Ini tampaknya lebih digunakan sebagai prasyarat untuk tugas-tugas lain, tapi saya kira Anda bisa menggunakannya untuk tujuan Anda.EDIT: Berikut adalah contoh dari output setelah baru saja dibuat dan tidak menjalankan migrasi 'test'
sumber
Perintah ini akan mencantumkan semua migrasi dengan statusnya (
UP
atauDOWN
)Rel 3 dan 4
Rel 5
sumber
rake db:version
akan mencapai ini di Rails 2.sumber
Ini berfungsi untuk rel 5.2
sumber
Coba rake -h (bantuan) dan lihatlah rake -n (= rake --dry-run). Jadi mungkin sesuatu seperti rake -n db: migrasi harus memberikan apa yang Anda inginkan.
sumber
Mungkin bukan apa yang diminta OP, tetapi jika Anda hanya perlu dengan cepat memeriksa apakah ada migrasi yang menunggu untuk digunakan dalam tugas menyapu, tanpa menggunakan
rake db: migrasi: status | grep down (mungkin tidak berfungsi jika Anda menggunakan Windows)
ActiveRecord :: Migration.check_pending! (memunculkan ActiveRecord :: PendingMigrationError yang perlu Anda selamatkan)
Anda dapat menggunakan needs_migration? metode: https://apidock.com/rails/v4.0.2/ActiveRecord/Migrator/needs_migration%3F/class
sumber
ActiveRecord::Migrator.needs_migration?
dalam Rails 5.1Perintah berikut untuk memeriksa status migrasi:
ATAU
ketika Anda menjalankan server Anda, itu akan menampilkan pesan untuk menjalankan migrasi Anda yang tertunda terlebih dahulu.
sumber
Jika Anda ingin melihat berapa banyak migrasi yang dilakukan atau menunggu, Anda dapat melihat menggunakan perintah di bawah ini.
Lebih lanjut tentang tautan ini: Rails Active Record Migration
sumber
Jika Anda memerlukan bash one-liner untuk menentukan apakah akan menjalankan migrasi atau tidak (mis., Hanya bermigrasi dalam perintah fase rilis Heroku ketika ada migrasi yang tertunda), ini berfungsi:
sumber