6

Tôi phải xây dựng một trang mạng xã hội trên Ruby on Rails. Các tính năng trong trang web có thể thay đổi theo thời gian; vì vậy chúng tôi sẽ cần phải thêm/xóa các tính năng một cách dễ dàng. Hơn nữa, chúng tôi có thể đang xây dựng một trang web mạng xã hội khác. Do những lý do này, chúng tôi đang nghĩ đến việc xây dựng một khung cơ bản cho các trang web mạng xã hội trong RoR với tính năng cài đặt hoặc gỡ cài đặt các tiện ích mở rộng cho khung công tác.Làm cách nào để có kiến ​​trúc plugin trong Ruby on Rails?

Tôi đã từng làm việc trước đây trong Joomla! CMS và kiến ​​trúc của nó để thêm/xóa tiện ích mở rộng là loại nội dung tôi đang xem. Trong một Joomla! cài đặt thường có một bên quản trị mà từ đó bạn có thể thêm/xóa/tùy chỉnh các phần mở rộng.

Tôi mới tham gia RoR và thấy khó có thể quyết định cách thực hiện điều này. Bất kỳ trợ giúp sẽ được đánh giá cao.

+0

Đường ray thấp hơn một chút so với Joomla ...bạn có thể cần tự xây dựng một số cơ sở hạ tầng hoặc sử dụng ứng dụng Rails hiện có. –

+0

@Toby - Có lẽ đã cập nhật khi bạn nhận xét. Tôi đồng ý với bạn rằng Rails chắc chắn là cấp thấp hơn @Shree - Xem một số ví dụ về những gì có thể được thực hiện đặc biệt là lưu ý Redmine và ADVA CMS – Spasm

Trả lời

15

CẬP NHẬT 2015: điều này đã được trả lời trong năm 2009 rất nhiều đã thay đổi

Plug-ins đã được thay thế bởi Gems và Công cụ Đối với tất cả các thông tin mà bạn cần trên Engines: http://guides.rubyonrails.org/engines.html

Engines là một cách tuyệt vời để xây dựng mã được đóng gói và tái sử dụng cho các ứng dụng đường ray của bạn.

gốc trả lời cho tham khảo

Trên Rails bên phát triển động cơ và/hoặc bổ sung có lẽ là những gì bạn đang tìm kiếm.

Rails Engines are small subsets of an application that can be dropped into any of your Rails applications and handle common parts of the application from scratch.

Nói ví dụ ứng dụng mạng xã hội của bạn có một wiki, blog, chat vv Bạn sẽ nhiều hơn khả năng muốn tạo một công cụ wiki, công cụ blog và chat động cơ.

Động cơ cho phép bạn sử dụng lại chức năng như vậy trong các ứng dụng khác nhau, do đó bạn không phải lặp lại chính mình.

Hãy xem tại địa chỉ: http://rails-engines.org/

Some support for ‘engine’ plugins has been merged into the Rails core codebase in Rails 2.3.

Tôi cũng sẽ khuyên bạn nên dùng một cái nhìn tại một số dự án công cộng nói trên github và xem cách mọi người đã sử dụng động cơ.

Hãy nhìn vào một số công cụ:

liên kết hữu ích khác cho việc đọc

Về chức năng mà bạn vẫn có thể có một khu vực quản trị có thể kích hoạt một số tính năng ví dụ. blog hoặc wiki của bạn bằng cách cho phép người dùng truy cập vào các khu vực như vậy với hệ thống quyền/vai trò.

Nếu bạn muốn xây dựng một CMS mà hỗ trợ một số loại phần mở rộng như trong Wordpress hoặc Joomla sau đó bạn sẽ phải hoặc là xây dựng nó và cung cấp guidlines hoặc ít nhất hãy xem xét cách bạn sẽ tải lên/cài đặt Công cụ/Plugins từ góc độ người dùng.

Không chắc chắn về những tác động an ninh này

Redmine đã đưa loại hình chức năng vào ứng dụng tuyệt vời của họ. Bạn có thể muốn đào xung quanh source code để biết mẹo và manh mối

Cuối cùng Adva_CMS đã cơ bản thông qua phương pháp này và đã tạo a number of Engines cho các ứng dụng CMS của họ

HTH

4

Động cơ vẫn là một cách khá vững chắc để đi, vị trí mới để nhận thông tin về những người được đặt tại đây: http://guides.rubyonrails.org/engines.html

Nhưng những gì bạn cần thực sự là ứng dụng cụ thể hơn. Rất nhiều ứng dụng phát triển những thứ này một cách hữu cơ theo thời gian. Chúng bắt đầu bằng tay tạo ra một vài trong số này và sau đó chúng tái định tính chúng theo định kỳ cho đến khi chúng tìm thấy các mẫu phù hợp với các mẫu thiết kế phần mềm và sau đó chúng phát triển một khuôn khổ plugin.

Bạn có đang để lộ giao diện của mình cho người dùng cuối không? Đối với nhà phát triển bên thứ ba? Những phần nào của ứng dụng được kiểm soát bởi các plugin này? Nó chỉ là tầng trình bày? Nó có ảnh hưởng đến mô hình dữ liệu không? Hãy xem xét thực tế là khi bạn xuất bản bất kỳ loại giao diện bên ngoài nào, bạn đang phát triển các hợp đồng mà bạn cần phải tôn trọng.

Bạn có thể xem các mẫu thiết kế sau: http://en.wikipedia.org/wiki/Software_design_pattern. Họ sẽ giúp bạn tìm ra cách để quản lý quá trình phát triển của bạn. Nếu bạn chỉ làm việc trên các plugin để sử dụng nội bộ, thì mục đích thực sự của chúng là gì? Điều gì khiến chúng khác với mô-đun?

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