2011-12-20 27 views
15

Tôi hơi bối rối bởi mục đích sử dụng của các nhiệm vụ Rails Rake mặc định và muốn được tư vấn về việc tôi có nên sử dụng db:reset hoặc viết một nhiệm vụ Rake tùy chỉnh hay không. Không có gì thông minh, chỉ cần dọn dẹp hàng ngày, và tôi cũng có thể thiếu một tài liệu rõ ràng vì tôi mới làm quen với Rails.Rake in Rails: tôi có nên sử dụng db: reset không?

Vấn đề của tôi: Tôi muốn vứt bỏ cơ sở dữ liệu của mình và chạy từ một thiết lập hoàn toàn sạch sẽ, để tôi có thể chắc chắn cơ sở dữ liệu chỉ chứa dữ liệu đã biết. Điều này rất hữu ích cho việc chuẩn bị bản demo, để gỡ lỗi và để đảm bảo rằng Jenkins đang so sánh giống như trong các thử nghiệm.

Hiện nay, tôi đang viết này:

bin/rake db:drop:all db:create:all db:migrate db:seed db:test:prepare 

Đây là rất nhiều để gõ, nhưng lá dữ liệu hạt giống duy nhất ở cả hai cơ sở dữ liệu dev và thử nghiệm. Tôi không chắc chắn cách này khác với db:reset, điều này sẽ thuận tiện hơn khi nhập.

Tôi có nên sử dụng db:reset hoặc viết tác vụ tùy chỉnh db:from_scratch không?

Trả lời

9

Nếu bạn không chắc chắn về tác vụ cào, thì tôi khuyên bạn không nên sử dụng nó. Trong trường hợp này, bạn có thể ok, tuy nhiên db:reset không phải là tương đương với những gì bạn đang làm ở trên. db:reset tạo lại cơ sở dữ liệu từ scheme.rb, điều này có thể khác khi bạn có thể có các di chuyển bằng văn bản chưa được chạy.

tôi sẽ đề nghị bạn nên sử dụng một công việc tùy chỉnh cào, sau đó bạn có thể sửa đổi nó để phù hợp với mục đích chính xác của bạn, đặc biệt nếu bạn muốn thực hiện các nhiệm vụ khác cũng như (ví dụ gắn thẻ trong git)

+0

Giải thích rõ ràng hơn, cảm ơn. Xác nhận tôi bằng văn bản một nhiệm vụ tùy chỉnh. –

1

gì bạn cố gắng đạt được trong các nhiệm vụ bạn đang chạy thông qua rake là thiết lập cả cơ sở dữ liệu thử nghiệm và phát triển. rake db:reset sẽ chỉ làm điều đó cho môi trường hiện tại của bạn db theo schema.rb và sau đó tải dữ liệu hạt giống vào db. Schema.rb nói chung là không bao giờ chỉnh sửa, nó cho một mục đích chỉ/chỉ-tham khảo, tuy nhiên một số người làm có xu hướng có schema.rb khác nhau mà có thể tạo ra một vấn đề :(. Điều gì âm thanh tốt hơn cho tôi là nếu bạn cần đặt cả cơ sở dữ liệu phát triển và thử nghiệm của bạn, sau đó chạy các di trú của bạn cho môi trường dev và sử dụng schema.rb để tạo môi trường thử nghiệm db.Tôi chắc chắn sẽ đề nghị bạn lấy ý kiến ​​thứ hai từ một số chuyên gia Rails để tìm ra một cách để đạt được những gì bạn muốn

21

bạn nên sử dụng:.

rake db:reset 

này sẽ thả cơ sở dữ liệu, táitải giản đồ hiện tại vào nó.

Đối với một danh sách đầy đủ các nhiệm vụ db rake:

rake --describe db 

Nếu yêu cầu của bạn thay đổi sau đó nó sẽ được tốt hơn để viết một nhiệm vụ tùy chỉnh cào, nơi bạn có thể áp dụng tùy biến của riêng bạn.

+0

Vì vậy, việc đặt lại cụ thể không giải quyết được vấn đề của tôi về db ​​thử nghiệm giống như cơ sở dữ liệu dev (trống) và chứa dữ liệu hạt giống. Tùy chỉnh âm thanh rõ ràng hơn. –

1

rake db: reset Điều này sẽ thả cơ sở dữ liệu, tạo lại và tải giản đồ hiện tại vào nó.

rake db: reset sẽ chạy rake db: hạt giống

Ví dụ:

nếu bạn có tập tin hạt giống mà bạn đã viết sau khi bạn chạy di cư của bạn, nó sẽ chạy điều đó quá.

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