Question

Je dois construire un site de réseautage social sur Ruby on Rails. Les caractéristiques du site peuvent changer de temps en temps; donc nous aurons besoin d'ajouter / supprimer des fonctionnalités avec la facilité. De plus, nous pouvons être en train de construire un autre site de réseautage social. Pour ces raisons, nous pensons construire un cadre de base pour les sites de réseaux sociaux en RoR avec la fonctionnalité pour installer ou désinstaller des extensions du cadre.

Je travaillais auparavant dans Joomla! CMS et son architecture pour l'ajout / suppression d'extensions est un peu ce que je regarde. Dans un Joomla! l'installation il y a habituellement un côté admin à partir de laquelle vous pouvez ajouter / supprimer / personnaliser les extensions.

Je suis nouveau à RoR et trouvant peu difficile de décider comment faire cela. Toute aide sera appréciée.

Était-ce utile?

La solution

Mise à jour 2015: il a été répondu en 2009 beaucoup de choses ont changé

Plug-ins ont été remplacés par des pierres précieuses et moteurs Pour toutes les informations dont vous avez besoin sur les moteurs: http://guides.rubyonrails.org/engines.html

Les moteurs sont une excellente façon de construire encapsulé et code réutilisable pour vos applications Rails.

Réponse originale pour référence

Du côté de développement Rails moteurs et / ou plug-ins est probablement ce que vous recherchez.

  

Rails moteurs sont de petits sous-ensembles d'une   application qui peut être déposé dans   l'une de vos applications Rails et   traiter les parties communes de l'application   à partir de zéro.

Dites par exemple votre application de réseau social a un wiki, blog, chatroom etc. Vous devriez plus probablement envie de créer un moteur de wiki, moteur de blog et le moteur chatroom.

Les moteurs vous permet de réutiliser cette fonctionnalité dans les différentes applications afin que vous ne devez pas vous répéter.

Jetez un oeil à: http://rails-engines.org/

  

Certains support des plugins 'moteur' a   été fusionné dans le noyau Rails   Rails 2.3 codebase.

Je recommande également jeter un oeil à certains projets publics dire sur GitHub et voir comment les gens ont des moteurs utilisés.

Jetez un oeil à certains moteurs:

Autres liens utiles pour la lecture

En termes de fonctionnalité, vous pouvez toujours avoir une zone d'administration qui pourrait activer certaines fonctions soit. votre blog ou wiki en permettant aux utilisateurs d'accéder à ces zones avec un système d'autorisations / rôles.

Si vous voulez construire un CMS qui prend en charge une sorte d'extensions comme dans Wordpress ou Joomla, vous devrez soit le construire et de fournir guidlines ou tout au moins se pencher sur la façon dont vous télécharger / installer des moteurs / Plugins d'un point de vue de l'utilisateur .

Je ne sais pas sur les conséquences sur la sécurité de ce

Redmine a mis ce genre de fonctionnalité dans leur application impressionnante. Vous pouvez creuser autour du code source pour obtenir des conseils et des indices

Enfin Adva_CMS a essentiellement adopté cette approche et ont créé un certain nombre de moteurs pour leur application CMS

HTH

Autres conseils

Les moteurs sont encore une façon assez solide pour aller, le nouvel emplacement pour obtenir des informations sur celles-ci est situé ici: http://guides.rubyonrails.org/engines.html

Mais ce que vous avez besoin est vraiment une application plus spécifique. Beaucoup d'applications développent ces choses organiquement au fil du temps. Ils commencent par la main élaboration d'un peu d'entre eux, puis ils les re-facteur périodiquement jusqu'à ce qu'ils trouvent des modèles qui correspondent aux modèles de conception de logiciels, puis ils développent un cadre de plug-in.

Vous allez exposer votre interface à l'utilisateur final? Pour les développeurs tiers? Quelles parties de l'application sont contrôlées par ces plug-ins? Est-ce juste le niveau de présentation? Est-il affecte le modèle de données? Considérez le fait que lorsque vous publiez tout type d'interface externe, vous développez des contrats que vous devez honorer.

Vous pouvez vérifier ces modèles de conception: http://en.wikipedia.org/wiki/Software_design_pattern . Ils vous aideront à comprendre comment gérer votre processus de développement. Si vous êtes en train de travailler plugins pour un usage interne, alors quel est le but réel d'entre eux? Ce qui les rend différents de modules?

Licencié sous: CC-BY-SA avec attribution
Non affilié à StackOverflow
scroll top