6

Devo costruire un sito di social networking su Ruby on Rails. Le funzionalità nel sito possono cambiare di volta in volta; quindi avremo bisogno di aggiungere/rimuovere le funzionalità con facilità. Inoltre, potremmo costruire un altro sito di social networking. Per questi motivi, stiamo pensando di creare una struttura di base per i siti di social networking in RoR con la funzione di installare o disinstallare estensioni al framework.Come posso avere un'architettura di plugin in Ruby on Rails?

Ho lavorato in precedenza in Joomla! CMS e la sua architettura per aggiungere/rimuovere estensioni è una specie di cosa sto guardando. In un Joomla! l'installazione di solito è un lato amministrativo da cui è possibile aggiungere/rimuovere/personalizzare le estensioni.

Sono nuovo di RoR e trovo poco difficile decidere come farlo. Qualsiasi aiuto sarà apprezzato.

+0

Rails è un po 'più basso di Joomla ...potrebbe essere necessario creare parte dell'infrastruttura o utilizzare un'applicazione Rails esistente. –

+0

@Toby - Probabilmente è stato aggiornato come hai commentato. Sono d'accordo con te sul fatto che Rails è decisamente di livello inferiore @Shree - Guarda alcuni esempi di cosa si può fare in particolare nota Redmine e ADVA CMS – Spasm

risposta

15

UPDATE 2015: questo è stato risposto nel 2009 molte cose sono cambiate

plug-in sono stati sostituiti da gemme e Motori Per tutte le informazioni necessarie sui motori: http://guides.rubyonrails.org/engines.html

I motori sono un modo fantastico di creare codice incapsulato e riutilizzabile per le tue app di rotaie.

risposta originale per Riferimento

sui binari laterali sviluppo motori e/o plugin è probabilmente quello che stai cercando.

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.

diciamo per esempio l'applicazione di social networking ha un wiki, blog, chat ecc Si sarebbe più che probabile vuole creare un motore motore wiki, motore di blog e chat.

I motori consentono di riutilizzare tale funzionalità all'interno di diverse applicazioni in modo da non dover ripetere.

Date un'occhiata a: http://rails-engines.org/

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

Io consiglio anche di dare un'occhiata ad alcuni progetti pubblici dicono su GitHub e vedere come le persone hanno utilizzato i motori.

Date un'occhiata a alcuni motori:

Altri link utili per la lettura

In termini di funzionalità si potrebbe ancora avere un area di amministrazione che potrebbe attivare alcune funzioni di IE. il tuo blog o wiki consentendo agli utenti di accedere a tali aree con un sistema di permessi/ruoli.

Se si vuole costruire un CMS che supporta un qualche tipo di estensioni come in Wordpress o Joomla, allora si dovrà o costruirla e fornire guidlines o almeno guarda come caricare/installare Motori/Plugin dal punto di vista dell'utente.

Non sono sicuro sulle implicazioni di sicurezza di questo

Redmine ha messo questo tipo di funzionalità nella loro applicazione impressionante. Si consiglia di scavare intorno al source code per suggerimenti e indizi

Infine Adva_CMS ha sostanzialmente adottato questo approccio e hanno creato a number of Engines per la loro applicazione CMS

HTH

4

I motori sono ancora un modo piuttosto solido per vai, la nuova posizione per ottenere informazioni su quelli si trova qui: http://guides.rubyonrails.org/engines.html

Ma quello che ti serve è davvero più specifico per le applicazioni. Molte applicazioni sviluppano queste cose organicamente nel tempo. Iniziano a creare manualmente alcuni di questi e poi li ricompensano periodicamente finché non trovano modelli che si allineano con i modelli di progettazione del software e quindi sviluppano un framework di plugin.

Hai intenzione di esporre la tua interfaccia agli utenti finali? Agli sviluppatori di terze parti? Quali parti dell'applicazione sono controllate da questi plugin? È solo il livello di presentazione? Influisce sul modello di dati? Considera il fatto che quando pubblichi qualsiasi tipo di interfaccia esterna, stai sviluppando contratti che devi onorare.

È possibile controllare questi motivi di progettazione: http://en.wikipedia.org/wiki/Software_design_pattern. Ti aiuteranno a capire come gestire il tuo processo di sviluppo. Se stai solo lavorando su plugin per uso interno, qual è il vero scopo di essi? Cosa li rende diversi dai moduli?