2009-04-01 28 views
15

Một ứng dụng đường ray mà tôi đang phát triển hiện có khoảng 35 lần di chuyển đến thời điểm này. Kể từ khi ứng dụng bắt đầu như là một thử nghiệm, có một số tiền hợp lý của khuấy động vô nghĩa trong di cư khi tôi đi qua lại giữa các ý tưởng khác nhau.Bạn có nên thu gọn di chuyển đường ray cũ không?

Có bất kỳ hạn chế nào để thu hẹp di chuyển 1-35 thành một lần di chuyển không? Tôi đã có kế hoạch để làm điều này bằng cách di chuyển đầu tiên tải lược đồ như nó bây giờ và xóa tất cả các di chuyển trước đó.

Tôi hiện là người duy nhất làm việc trong dự án này, nếu điều đó tạo nên sự khác biệt.

Trả lời

11

Nếu bạn có mã của bạn dưới sự kiểm soát nguồn (bạn làm có mã của bạn dưới sự kiểm soát nguồn, không bạn ?) sau đó tôi muốn nói rằng không có hại thực sự, miễn là bạn chấp nhận rằng thay đổi lược đồ quay trở lại sẽ yêu cầu phục hồi di cư cũ hoặc di chuyển thương hiệu mới. Chỉ cần chắc chắn rằng bạn hiểu được ý nghĩa và chấp nhận chúng trước khi thiết lập bất cứ điều gì trong đá.

Lược đồ hiện tại của bạn có thể tạo cơ sở cho một lần di chuyển mới sẽ bắt đầu một bộ mới.

Được cảnh báo rằng nếu bạn có thao tác thao tác dữ liệu trong các lần di chuyển hiện có, tải dữ liệu tĩnh, và/hoặc các phép biến đổi tiếp theo, thì chúng sẽ cần được xử lý ở đâu đó. Đó là điều tôi đã vấp phải một vài lần ...

5

Tôi sẽ giữ chúng xung quanh. Đừng lo lắng về việc phải chạy nhiều lần di chuyển mỗi khi một nhà phát triển mới kiểm tra dự án. Ông luôn có thể chạy

rake db:schema:load 

đó là nhanh hơn nhiều, thay vì chạy

rake db:migrate 
2

Nếu tất cả việc di chuyển của bạn làm là sửa đổi cấu trúc bảng, tôi sẽ không lo lắng về tất cả.

Xin lưu ý rằng một số di chuyển thêm dữ liệu - Tôi có những người tạo cơ sở dữ liệu với tài khoản quản trị và dữ liệu cố định khác - và lược đồ sẽ không cung cấp cho bạn điều này.

Hãy nhớ rằng bạn nên làm những gì tôi làm với di chuyển vì tôi không sử dụng di chuyển trong triển khai. Vì vậy, di chuyển sụp đổ có thể là một ý tưởng tốt cho một thời gian để di chuyển những dữ liệu di chuyển giống để tách rake nhiệm vụ.

Đang xem xét - Tôi đang lặp lại các điểm đã thực hiện. rake db:migrate VERSION -1

[Tôi đổ lỗi cho các biểu tượng hoạt hình mới mất tập trung cho việc vẽ mắt của tôi ra khỏi văn]

5

Đôi khi di cư có thể sử dụng mô hình đó không còn tồn tại hoặc tạo bảng và sau đó sau này tiêu diệt chúng, lãng phí thời gian CPU quý. Tốt nhất để biên dịch tất cả vào db/schema.rb và nhận được các nhà phát triển của bạn để chạy rake db:schema:load

-1

Đối với những người, như tôi, tìm thấy câu trả lời này để tìm kiếm một cách để reset một ứng dụng trở lại tình trạng ban đầu của nó , đây là những việc cần làm:

rm db/migrations/* 
rake db:drop 
rake db:schmea:dump 

Điều này rất hữu ích nếu bạn vừa mới khởi động ứng dụng và quyết định bạn muốn tạo lại ứng dụng từ đầu mà không làm mất tất cả tệp của bạn.

1

Không gây hại và việc di chuyển bị thu hẹp là một phương pháp hay và giúp hiệu suất khi cần phải di chuyển. Điều này bây giờ là một phần của schema.rb Rails':

# Note that this schema.rb definition is the authoritative source for your 
# database schema. If you need to create the application database on another 
# system, you should be using db:schema:load, not running all the migrations 
# from scratch. The latter is a flawed and unsustainable approach (the more migrations 
# you'll amass, the slower it'll run and the greater likelihood for issues). 

Note như @ mike-Woodhouse nói, "Được cảnh báo rằng nếu bạn có dữ liệu hoạt động thao tác trong cuộc di cư hiện tại của bạn, tải dữ liệu tĩnh, ví dụ, và/hoặc các biến đổi tiếp theo có thể xảy ra, thì những biến đổi này sẽ cần phải được xử lý ở đâu đó. "

Tuy nhiên, bạn không nên thực hiện bất kỳ điều gì trong di chuyển của mình :) - Chad

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