มีงานเรคที่แสดงการย้ายข้อมูลที่ค้างอยู่ในแอพ Rails หรือไม่?
มีงานเรคที่แสดงการย้ายข้อมูลที่ค้างอยู่ในแอพ Rails หรือไม่?
คำตอบ:
rake db:migrate:status
(Rails 3 ถึง 5) หรือrails db:migrate:status
(Rails 5) จะทำสิ่งนี้ให้สำเร็จ ดูการกระทำนี้
up
หมายถึงการโยกย้ายถูกเรียกใช้ down
หมายถึงการโยกย้ายยังไม่ได้ทำงาน
rake -T
แต่คนอื่นทำอย่างไร
up
หมายถึงการโยกย้ายถูกเรียกใช้ down
หมายถึงการโยกย้ายยังไม่ได้ทำงาน
มีrake db:abort_if_pending_migrations
(อย่างน้อยใน Rails 2.3.3 ไม่แน่ใจว่าจะเปิดตัวเมื่อใด) คำอธิบายระบุว่า 'ทำให้เกิดข้อผิดพลาดหากมีการย้ายที่ค้างอยู่' สิ่งนี้ดูเหมือนจะถูกใช้เป็นข้อกำหนดเบื้องต้นสำหรับงานอื่น ๆ มากกว่า แต่ฉันเดาว่าคุณสามารถใช้งานได้ตามวัตถุประสงค์ของคุณ
แก้ไข: นี่คือตัวอย่างของผลลัพธ์หลังจากเพิ่งสร้างและไม่เรียกใช้การโยกย้าย 'ทดสอบ'
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.
คำสั่งนี้จะแสดงรายการการย้ายข้อมูลทั้งหมดที่มีสถานะ ( UP
หรือDOWN
)
ราง 3 และ 4
rake db:migrate:status
ราง 5
rake db:migrate:status
# Or
rails db:migrate:status
ใช้งานได้กับราง 5.2
ActiveRecord::Base.connection.migration_context.needs_migration?
ลอง rake -h (ช่วยเหลือ) และดู rake -n (= rake --dry-run) ดังนั้นอาจเป็นสิ่งที่ชอบ rake -n db: migrate คุณควรได้รับสิ่งที่คุณต้องการ
อาจไม่ใช่สิ่งที่ OP ขอมา แต่ถ้าคุณเพียงแค่ต้องตรวจสอบอย่างรวดเร็วว่าการโยกย้ายใด ๆ ที่ค้างอยู่เพื่อใช้ในงานคราดโดยไม่ต้องหันไปใช้
rake db: migrate: status | grep down (อาจไม่ทำงานหากคุณใช้ Windows)
ActiveRecord :: Migration.check_pending! (เพิ่ม ActiveRecord :: PendingMigrationError ที่คุณต้องการช่วยเหลือ)
คุณสามารถใช้ needs_migration ได้ไหม? วิธีการ: https://apidock.com/rails/v4.0.2/ActiveRecord/Migrator/needs_migration%3F/class
ActiveRecord::Migrator.needs_migration?
ใน Rails 5.1
คำสั่งต่อไปนี้เพื่อตรวจสอบสถานะการโยกย้าย:
rake db:migrate:status
หรือ
เมื่อคุณเรียกใช้เซิร์ฟเวอร์ของคุณจะแสดงข้อความเพื่อเรียกใช้การย้ายข้อมูลที่ค้างอยู่ของคุณก่อน
หากคุณต้องการดูว่ามีการโยกย้ายหรือรอดำเนินการเท่าใดคุณสามารถดูได้โดยใช้คำสั่งด้านล่าง
rails db:migrate:status
เพิ่มเติมเกี่ยวกับลิงค์นี้: Rails Active Record Migration
หากคุณต้องการ bash one-liner เพื่อพิจารณาว่าจะเรียกใช้การย้ายข้อมูลหรือไม่ (เช่นเฉพาะการโยกย้ายในคำสั่งการปล่อย Herokuเมื่อมีการย้ายที่ค้างอยู่) การทำงานนี้:
(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'
ขึ้นรถไฟ 3.2.8