2010-02-08 33 views
6

Tôi có một khách hàng cần cùng một CMS tùy chỉnh được phát triển cho khoảng 5 ứng dụng. Tất cả các ứng dụng sẽ có giao diện "tương tự" nhưng khác nhau và tôi thực sự muốn có 1 ứng dụng đường ray xử lý việc này và chỉ cần sửa đổi bố cục/lượt xem nếu cần. Có một gem/plugin hoặc tiền lệ cho điều này?Muốn sử dụng 1 ứng dụng đường ray cho nhiều trang web/tên miền

Trả lời

6

Đề xuất của Doug sẽ hoạt động nếu sự khác biệt giữa các trang web hoàn toàn là kiểu và nội dung tĩnh - ví dụ: nếu bạn về cơ bản chỉ là "bôi da". Nhưng tôi sẽ thận trọng sau cách tiếp cận đó nếu sự khác biệt sẽ liên quan nhiều hơn thế. Bạn có thể dễ dàng kết thúc với một cơn ác mộng bảo trì, với tất cả các logic kinh doanh của bạn được bao quanh bởi các báo cáo trường hợp và rất nhiều trường hợp đặc biệt mã lây lan thông qua ứng dụng của bạn. Và bạn thực sự cảm thấy nỗi đau nếu bạn muốn tách các trang web này thành các máy chủ khác nhau hoặc thực hiện các thay đổi quan trọng về chức năng cho một số trang web nhưng không thực hiện các thay đổi khác.

Nếu bạn dự đoán có sự khác biệt đáng kể nào giữa các trang web, bạn có thể muốn xem xét phát triển chúng dưới dạng các dự án Rails riêng biệt với các thành phần được chia sẻ. Đặt mã mà họ sẽ chia sẻ thành đá quý hoặc plugin và dự trữ các dự án riêng biệt cho các thuộc tính mà chúng không chia sẻ. Đối với một sự gia tăng nhỏ trong chi phí lên phía trước, bạn sẽ mua cho mình một sự linh hoạt hơn rất nhiều trên đường.

3

Bạn có thể bắt đầu bằng DHH's Account Location plugin làm khởi đầu, nhưng sửa đổi nó để sử dụng tên miền cấp cao nhất (TLD) thay vì tên miền phụ. Đó là một thư viện rất đơn giản, nhưng nó hoàn thành công việc. Chỉ cần đảm bảo phạm vi mọi tìm thấy trong ứng dụng của bạn theo số Account được liên kết với tên miền.

+0

cảm ơn doug! tôi sẽ đào cái này ... – BandsOnABudget

0

Tôi đã xây dựng một cái gì đó đặc biệt cho mục đích này một vài năm trước đây. Tôi đã không chạm vào nó trong một thời gian, nhưng có một số hoạt động mạng trên github. Rails Multisite Plugin

0

Phản hồi của Paulbonner phản ánh khá nhiều những gì tôi đang nghĩ: nếu các trang web phân kỳ theo chức năng theo thời gian - sẽ là một cơn ác mộng để hỗ trợ sau này.

Vì vậy, tôi có thể sẽ tạo ra một số ứng dụng Rails riêng biệt, nhưng tôi sẽ sử dụng một cái gì đó như Rails Cells để phát triển chức năng, đó là phổ biến cho tất cả các trang web. Sau đó, tôi sẽ chia sẻ tất cả các ô của mình trên tất cả các ứng dụng bằng cách sử dụng svn: externals hoặc tương đương từ Git.

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