2010-01-26 36 views
5

Tôi hiện đang cố gắng tự động hóa quy trình triển khai ứng dụng đường ray càng nhiều càng tốt, sao cho một bản dựng sạch trên máy chủ CI có thể kích hoạt triển khai tự động trên máy chủ thử nghiệm.Làm thế nào để xử lý các nhiệm vụ triển khai một lần với capistrano?

Nhưng tôi đã gặp phải một chút rủi ro với kịch bản sau: Tôi đã thêm gem gem friendly_id vào ứng dụng. Có một di chuyển tạo ra tất cả các bảng cần thiết. Nhưng để điền vào các bảng này, tôi cần phải gọi một nhiệm vụ cào.

Bây giờ, công việc cào này chỉ phải được gọi một lần, vì vậy việc thêm nó vào tập lệnh triển khai sẽ quá mức cần thiết.

Lý tưởng nhất là tôi đang tìm kiếm thứ gì đó như di chuyển, nhưng thay vì cơ sở dữ liệu, nó nên theo dõi các tập lệnh cần được gọi trong khi triển khai. Có một con thú như vậy đã tồn tại?

Trả lời

1

Tôi không thể nghĩ ra bất cứ thứ gì bạn muốn, nhưng nếu bạn chỉ cần chạy các tác vụ trên máy chủ từ xa, bạn luôn có thể sử dụng cào qua capistrano.

Có câu hỏi SO ở đây: How do I run a rake task from Capistrano?, cũng liên kết đến bài viết này http://ananelson.com/said/on/2007/12/30/remote-rake-tasks-with-capistrano/.

Chỉnh sửa: Tôi tự hỏi liệu có thể tạo một di chuyển không thực hiện bất kỳ thay đổi cơ sở dữ liệu nào, nhưng chỉ cần gọi một tác vụ rake? Rake::Task["task:name"].invoke. Giá trị một thử?

+0

Chắc chắn, tôi sử dụng di chuyển để cập nhật dữ liệu en-masse. Không có lý do gì bạn phải thay đổi lược đồ db. – wesgarrison

+0

Vậy thì tại sao không tạo ra một di chuyển mà gọi một nhiệm vụ rake thực hiện một sự thay đổi của bạn. Điều đó sẽ làm việc ... – jonnii

+0

Wow, tôi thậm chí không xem xét việc sử dụng di chuyển cho việc này. Tôi luôn luôn đánh đồng "di cư" với "cơ sở dữ liệu". – AGraefe

1

Tôi sẽ xem xét việc chạy tác vụ cào đó là một phần của quá trình di chuyển sang sử dụng friendly_id. Chắc chắn, bạn đã tạo các bảng, nhưng bạn chưa hoàn thành! Bạn vẫn phải thực hiện một số cập nhật dữ liệu trước khi bạn thực sự di chuyển.

Gọi công việc cào từ di chuyển của bạn. Nó sẽ cập nhật dữ liệu hiện có và các bản ghi mới sẽ được xử lý bởi logic ứng dụng của bạn trong tương lai.

2

Có vẻ như after_party đá quý thực hiện chính xác những gì bạn muốn.

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