2012-10-22 46 views
23

Tôi vẫn quen với hệ sinh thái phát triển Rails. Gần đây tôi đã học cách sử dụng capistrano để triển khai cho máy chủ của mình bằng apache và hành khách, và tôi thích cách tôi có thể đặt một tập lệnh triển khai khá phức tạp vào deployment.rb của mình để chúng được thực hiện với một lệnh gọi "deploy deploy" duy nhất, với tính năng khôi phục tự động nếu có sự cố.Triển khai trên Heroku với Capistrano?

Bây giờ tôi đang xem xét triển khai dự án của mình trên Heroku và tôi dự kiến ​​sẽ có thể sử dụng capistrano cho các triển khai của tôi ở đó. Nhưng tôi đã không thể tìm thấy bất kỳ tài liệu hướng dẫn về cách làm điều này. Có thể không? Có nhiệm vụ capistrano cho phép tôi tự động triển khai trên Heroku không?

Điều này thậm chí có ý nghĩa không? Sau khi tất cả các capistrano hoạt động theo một cách cụ thể (ssh vào máy chủ) và giả định một cấu trúc thư mục cụ thể (public/release/shared etc). Cả hai điều này là không thể với Heroku theo như tôi biết. Nhưng tôi vẫn muốn có sự tiện lợi của capistrano. Tôi biết tôi có thể đặt các bước cần thiết cho việc triển khai của mình (git push/migrate/restart resque worker ...) vào một công việc cào đơn lẻ, và tôi sẽ có sự tiện lợi khi triển khai với một lệnh gọi tới một lệnh; nhưng tôi sẽ không có lợi ích của giao dịch capistrano và rollback, mà rất quan trọng trong tâm trí của tôi.

Tôi có thể thiếu một cái gì đó rất cơ bản về cách các công nghệ này phù hợp với nhau. Nó làm tôi ngạc nhiên một chút, tôi đã không thể tìm thấy bất kỳ cuộc thảo luận về chủ đề này bất cứ nơi nào. Có ai có thể chia sẻ kinh nghiệm của họ không?

Trả lời

35

Heroku sử dụng Git để triển khai và không thân thiện với giọng nói. Trong thực tế, triết lý chính nó là khác nhau - Heroku không có 'máy chủ', nơi bạn có thể SSH, hoặc tùy chỉnh máy chủ theo nhu cầu của bạn.

Heroku sử dụng Dynos, là trường hợp được xác định trước, với kiến ​​trúc triển khai cụ thể bao gồm phần lớn nhu cầu triển khai Rails. Bạn có thể thực hiện các hành động như Rollbacks, backup, migrations etc với Heroku, trong một số trường hợp, phức tạp hơn các kịch bản capistrano bình thường.

Trừ khi thiết lập của bạn hoàn toàn khác, bạn có thể sử dụng an toàn Heroku cho Rails (chỉ với Git, dĩ nhiên). Nếu không, AWS là đặt cược tốt hơn.

+4

Heroku cung cấp cho bạn cách khôi phục, sao lưu và chạy di chuyển, như _any_ hệ thống sẽ thực hiện. Nó ** không ** cung cấp một cách để dàn dựng/tự động hóa tất cả các quá trình, như Capistrano nào. –

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