2011-11-10 38 views
5

Có cách nào tốt để hợp nhất các tệp di chuyển của tệp rails thành 1 tệp cho mỗi bảng ngoài việc tách lược đồ theo cách thủ công không?Hợp nhất các tệp di chuyển db/di chuyển

Hầu hết tệp di chuyển của tôi đã được tạo trong khi phát triển và không đại diện cho các thay đổi dữ liệu thực. Vì lý do lịch sử, các tệp đó sẽ vẫn có thể truy cập được trên hệ thống kiểm soát nguồn. Tôi cảm thấy không thoải mái khi giữ những tệp không cần thiết đó.

Trả lời

-4

Đừng bận tâm. Các tệp di chuyển cũ không gây hại gì và chúng có thể giúp bảo trì dễ dàng hơn. Để chúng như chúng vậy.

+0

Họ thực hiện bảo trì dễ dàng hơn chỉ khi di chuyển đại diện cho những thay đổi dữ liệu thực sự và điều đó không đúng. – guiding5

+0

Tệp di chuyển phải đại diện cho các thay đổi * lược đồ *, chứ không phải thay đổi dữ liệu như vậy. Bạn có thể gửi di chuyển mẫu mà bạn muốn loại bỏ không? –

+0

Thả nhiều cột không liên quan, loại bỏ các chỉ mục không cần thiết, cột đổi tên và các cột như vậy. – guiding5

13

Vâng, tôi có thể tưởng tượng rằng bạn muốn có một khởi đầu rõ ràng. Trong khi đang ở chế độ phát triển dự án cho bản phát hành phiên bản đầu tiên của bạn, bạn không muốn tất cả các tệp di chuyển riêng biệt. Mặc dù họ không thể làm tổn thương rõ ràng.

Về cơ bản những gì bạn có thể làm, chính là điều này.

BACKUP đầu tiên lược đồ và dữ liệu của bạn.

db/schema.rb chứa (hoặc phải chứa) phiên bản mới nhất của lược đồ của bạn. Nếu không chạy:

rake db:schema:dump 

Bây giờ bạn có thể xóa thư mục di chuyển của mình.

Sau đó chạy:

rake db:drop 
rake db:schema:load 

Lệnh cuối cùng chạy db/schema.rb và tạo ra một sơ đồ mới. Điều này sẽ đưa bạn đến phiên bản cuối cùng của cơ sở dữ liệu của bạn.

chương db nhiệm vụ

cào -T db

+0

rake nói "Không biết cách xây dựng lược đồ nhiệm vụ: thả". Tôi đang sử dụng ruby ​​1.9.3 và đường ray 3.2.9 – gfreezy

+0

xin lỗi là một lỗi đánh máy. tôi đã sửa nó (rake db: drop) – Roger

0

Bạn có thể sử dụng Squasher đá quý để hợp nhất sự di cư của tất cả các tuổi thành một.

Các vấn đề liên quan