rake db: test: เตรียมทำอะไรได้จริง?


124

ฉันกำลังติดตามวิดีโอการสอนเกี่ยวกับรางและฉันไม่สามารถเข้าใจได้ว่าdb:test:prepareคำสั่งนั้นทำอะไรได้บ้าง ใครช่วยให้คำอธิบาย?

คำตอบ:


119

rake db: migrate ด้านบนเรียกใช้การย้ายข้อมูลที่รอดำเนินการในสภาพแวดล้อมการพัฒนาและอัปเดต db / schema.rb rake db: test: load สร้างฐานข้อมูลการทดสอบใหม่จาก db / schema.rb ปัจจุบัน ในการพยายามครั้งต่อ ๆ ไปคุณควรเรียกใช้ db: test: เตรียมก่อนเนื่องจากขั้นแรกจะตรวจหาการย้ายข้อมูลที่รอดำเนินการและเตือนคุณอย่างเหมาะสม

- http://guides.rubyonrails.org/testing.html

โดยทั่วไปจะจัดการกับการโคลนฐานข้อมูลดังนั้นคุณจึงไม่ต้องเรียกใช้การย้ายข้อมูลกับการทดสอบเพื่ออัปเดตฐานข้อมูลทดสอบ


19
rake db:test:prepareเลิกใช้งานแล้ว
Jngai1297

3
เหนือ url ตายแล้วนี่จะเป็นอันใหม่github.com/rails/rails/blob/4-1-stable/activerecord/…
riffraff

12
กลับมาแล้ว github.com/rails/rails/commit/…
fenec

4
@ Jngai1297 ไม่มีอีกแล้ว!
Phillipp


42

โดยเฉพาะrake db:test:prepareจะดำเนินการต่อไปนี้:

  • ตรวจสอบการย้ายข้อมูลที่รอดำเนินการและ
  • โหลดสคีมาทดสอบ

นั่นคือมันจะดูdb/schema.rbไฟล์ของคุณเพื่อตรวจสอบว่ามีการโยกย้ายใด ๆ ที่มีอยู่ในโปรเจ็กต์ของคุณที่ยังไม่ถูกเรียกใช้ สมมติว่าไม่มีการย้ายข้อมูลที่ค้างอยู่ฐานข้อมูลจะทำให้ฐานข้อมูลว่างเปล่าและโหลดซ้ำตามเนื้อหาของdb/schema.rbไฟล์


2

คราดฐานข้อมูล: การทดสอบ: เตรียมความพร้อมเป็นทางออกที่ดีสำหรับปัญหา PG เช่นนี้

“ PG :: UndefinedTable: ข้อผิดพลาด: ไม่มีความสัมพันธ์” ด้วยการตั้งชื่อและรูปแบบ Rails ที่ถูกต้อง” ซึ่งฉันไม่สามารถดำเนินการได้ rake db:migrate RAILS_ENV=production

ตัวอย่างเช่นเมื่อคุณไม่สามารถสร้างฐานข้อมูลทดสอบสำหรับจุดบกพร่องที่กล่าวถึงที่นี่ : "ไม่มีผู้ใช้ที่เกี่ยวข้องกับข้อผิดพลาดที่ไม่สามารถระบุได้ของ PG"

ทุกข้อผิดพลาดนี้ "PG :: UndefinedTable: ERROR: ไม่มีความสัมพันธ์ xxxxx"

โดยการใช้ไซต์ของเรา หมายความว่าคุณได้อ่านและทำความเข้าใจนโยบายคุกกี้และนโยบายความเป็นส่วนตัวของเราแล้ว
Licensed under cc by-sa 3.0 with attribution required.