Frage

Ich muss gebaut einer Social Networking Site auf Ruby on Rails. Die in der Website kann von Zeit zu Zeit ändern; so müssen wir hinzufügen / entfernen Funktionen mit Leichtigkeit. Darüber hinaus können wir eine andere Social-Networking-Website bauen. Aus diesen Gründen, denken wir mit der Funktion Rahmen zu installieren oder deinstallieren Erweiterungen einen grundlegenden Rahmen für Social-Networking-Sites in RoR zu bauen.

Ich war zuvor in Joomla! CMS und seine Architektur für das Hinzufügen / Entfernen von Erweiterungen ist ein bisschen was auf Suche. In einer Joomla! Installation dort in der Regel ein Admin Seite, von der aus Sie hinzufügen können / entfernen / anpassen Erweiterungen.

Ich bin neu in RoR und finde es etwas schwierig, zu entscheiden, wie dies zu tun. Jede Hilfe wird sehr geschätzt.

War es hilfreich?

Lösung

UPDATE 2015: Das im Jahr 2009 beantwortet wurde viel hat sich geändert

Plug-In wurde von Gems und Motoren abgelöst Für alle Informationen müssen Sie sich auf Motoren: http://guides.rubyonrails.org/engines.html

Motoren sind eine fantastische Art und Weise verkapselt das Gebäude und wieder verwendbarer Code für Ihre Schienen-Anwendungen.

Original Antwort für Referenz

Auf der Entwicklungsseite Rails Engines und / oder Plugins wahrscheinlich das, was Sie suchen.

  

Rails Engines sind kleine Teilmengen ein   Anwendung, die in gelöscht werden kann,   jede Ihrer Rails-Anwendungen und   Griff gemeinsame Teile der Anwendung   von Grund auf neu.

Nehmen wir zum Beispiel Ihre Social-Networking-Anwendung hat ein Wiki, Blog, Chat usw. Sie würden mehr als wahrscheinlich wollen eine Wiki-Engine, Blog-Engine und Chatroom-Engine erstellen.

Motoren können Sie Nachnutzung eine solche Funktionalität in verschiedenen Anwendungen, so dass Sie müssen nicht selbst wiederholen.

Schauen Sie sich auf: http://rails-engines.org/

  

Einige Unterstützung für 'Motor' Plug-ins hat   wurde in die Rails Kern verschmolzen   Codebasis in Rails 2.3.

Ich würde auch empfehlen, einen Blick auf einige öffentliche Projekte sagen auf Github zu nehmen und sehen, wie Menschen Motoren verwendet haben.

Werfen Sie einen Blick auf einige Motoren:

Weitere nützliche Links zum Lesen

In Funktionalität Bedingungen konnte man noch einen Admin-Bereich hat, die bestimmten Funktionen dh aktivieren könnte. Ihr Blog oder Wiki von Benutzern den Zugang zu diesen Bereichen mit einem Berechtigungen / Rollen-System ermöglicht.

Wenn Sie ein CMS aufbauen wollen, das eine Art von Erweiterungen wie in Wordpress oder Joomla unterstützt, dann werden Sie es zu jedem Build und guidlines bieten oder zumindest Blick in wie würden Sie laden / installieren Engines / Plugins aus Nutzersicht .

Nicht sicher über die Auswirkungen auf die Sicherheit dieses

Redmine hat diese Art von Funktionalität in ihre beeindruckende Anwendung setzen. Möglicherweise möchten Sie die Quellcode für Tipps und Hinweise graben, um

Schließlich Adva_CMS hat im Grunde diesen Ansatz angenommen und haben erstellt eine Reihe von Motoren für ihre CMS-Anwendung

HTH

Andere Tipps

Motoren sind immer noch ein ziemlich solider Weg zu gehen, der neue Standort erhalten Informationen über die hier befindet: http://guides.rubyonrails.org/engines.html

Aber was Sie brauchen, ist wirklich mehr anwendungsspezifisch. Viele Anwendungen entwickeln, um diese Dinge organisch im Laufe der Zeit. Sie beginnen mit der Hand ein paar von diesem Crafting und dann sie wieder Faktor sie in regelmäßigen Abständen, bis sie Muster feststellen, dass align mit Software Design Patterns und dann einen Plugin-Framework sie sich entwickeln.

Wollen Sie Ihre Schnittstelle zu Endbenutzern entlarven? Um Drittentwickler? Welche Teile der Anwendung werden durch diese Plugins gesteuert? Ist es nur die Präsentationsebene? Ist es das Datenmodell aus? Betrachten Sie die Tatsache, dass, wenn Sie jede Art von externer Schnittstelle veröffentlichen, Sie entwickeln Verträge, die Sie ehren müssen.

Sie können diese Entwurfsmuster finden Sie unter: http://en.wikipedia.org/wiki/Software_design_pattern . Sie werden Ihnen helfen, herauszufinden, wie Sie Ihren Entwicklungsprozess zu verwalten. Wenn Sie nur auf Plug-in für die internen Gebrauch arbeiten, was ist dann der eigentliche Zweck von ihnen? Was macht sie anders als Module?

Lizenziert unter: CC-BY-SA mit Zuschreibung
Nicht verbunden mit StackOverflow
scroll top