2011-01-02 38 views
6

Thứ nhất, Chúc mừng năm mới mọi người.Triển khai nhiều phiên bản của ứng dụng Rails - cùng một mã, nhiều

Tôi mới đến Rails, vì vậy hãy tha thứ cho bất kỳ sử dụng không đúng ngữ ...

tôi đã phát triển một ứng dụng đơn giản Rails, được hỗ trợ bởi một cơ sở dữ liệu MySQL.

Bây giờ tôi muốn triển khai ứng dụng này cho nhiều nhóm người dùng độc lập (tức là ứng dụng câu lạc bộ và tôi muốn triển khai nó cho một số câu lạc bộ hoàn toàn độc lập).

Tôi muốn sử dụng cùng một mã Rails Application càng nhiều càng tốt, và chỉ có một cá thể riêng biệt của cơ sở dữ liệu cho mỗi câu lạc bộ.

Vì mỗi trường hợp sẽ chạy trên cùng một máy chủ (cho đến khi tải máy chủ chứng minh là một vấn đề) Tôi cho rằng tôi có thể sử dụng cổng khác cho mỗi máy chủ Rails để hướng người dùng đến đúng nhóm?

Tôi đã đọc rằng có các chế độ thử nghiệm và sản xuất, có thể có nhiều trường hợp bổ sung của chế độ sản xuất hay không, ví dụ: club1, club2, tất cả chia sẻ cùng một mã, với cơ sở dữ liệu độc đáo?

Câu hỏi của tôi là cách hỗ trợ nhiều phiên bản cơ sở dữ liệu riêng biệt và cách tốt nhất để định tuyến các trường hợp này?

Bất kỳ lời khuyên nào về cách thực hiện điều này được đánh giá cao.

Trả lời

1

Nếu bạn đang sử dụng Git (tôi khuyên bạn nên!) Thì bạn có thể giữ phiên bản trung tâm của mã ở một nơi và sau đó triển khai mã nhiều lần, chỉ thay đổi tệp database.yml (không nên kiểm tra vào kho lưu trữ git của bạn trong trường hợp đó). http://git-scm.com/

Giả sử bạn đặt tất cả mã của mình trên github.com với tên người dùng 'snips' và dự án được gọi là 'clubster'. Sử dụng một cái gì đó giống như Heroku sau đó bạn sẽ làm gì:

git clone https://github.com/snips/clubster.git 
cd clubster 
heroku create boxingclub 

Vì Heroku tự động cấu hình cơ sở dữ liệu của bạn không có nhu cầu cho một tập tin database.yml

git push heroku master 

Và bạn muốn có một phiên bản của mã của bạn triển khai tại boxingclub.heroku.com

Khi bạn thực hiện thay đổi mã của bạn, bạn chỉ cần vào mỗi sự cài đặt của bạn và làm:

git pull origin master 
git push heroku master 

Cập nhật mã của bạn trên phiên bản ứng dụng cụ thể của bạn.

Và nếu bạn đang tiến bộ hơn một chút, bạn sẽ xem Chef để quản lý toàn bộ thiết lập cho bạn. http://www.rubyinside.com/chef-tasty-server-configuraiton-2162.html

Cách tiếp cận khác sẽ là có một số loại hệ thống tên miền phụ, nhưng tôi sẽ để lại điều đó cho người khác để trang trải.

+0

Cảm ơn stef, đó chắc chắn là một giải pháp thú vị. Tôi nên làm rõ rằng các máy chủ đường ray sẽ chạy trên cùng một máy chủ và sẽ * lý tưởng * được chạy từ cùng một mã, nếu có thể. Tôi sẽ đưa ra gợi ý của bạn một số suy nghĩ. – Snips

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