Domanda

Devo costruire un sito di social networking su Ruby on Rails. Le caratteristiche del sito possono cambiare di volta in volta; quindi avremo bisogno di aggiungere / rimuovere le funzioni con facilità. Inoltre, possiamo essere costruendo un altro sito di social networking. Per questi motivi, stiamo pensando di costruire un quadro di base per i siti di social networking in RoR con la funzione per installare o disinstallare le estensioni per il quadro.

Ho lavorato in precedenza in Joomla! CMS e la sua architettura per l'aggiunta / rimozione di estensioni è una specie di ciò che sto guardando. In un Joomla! installazione di solito c'è un lato di amministrazione da cui è possibile aggiungere / rimuovere / personalizzare le estensioni.

Sono nuovo di RoR e trovando poco difficile decidere come fare questo. Qualsiasi aiuto sarà apprezzato.

È stato utile?

Soluzione

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 edificio incapsulato e codice riutilizzabile per le applicazioni Rails.

risposta originale per riferimento

sulle rotaie laterali sviluppo motori e / o plugin è probabilmente quello che stai cercando.

  

Rails motori sono piccoli sottoinsiemi di un   applicazione che può essere caduto in   nessuna delle vostre applicazioni Rails e   manipolazione delle parti comuni dell'applicazione   da zero.

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.

Motori consente di riutilizzare tali funzionalità all'interno di diverse applicazioni in modo da non dover ripetere se stessi.

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

  

Qualche supporto per i plugin 'motore' ha   state fuse nel nucleo Rails   codebase in Rails 2.3.

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

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. blog o wiki, consentendo agli utenti l'accesso a tali aree, con un sistema di autorizzazioni / ruoli.

Se si vuole costruire un CMS che supporta un qualche tipo di estensioni come in Wordpress o Joomla, allora si dovrà o costruire e fornire guidlines o almeno esaminare come si dovrebbe caricare / installare Motori / Plugin da un 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 codice sorgente per suggerimenti e indizi

Infine Adva_CMS ha sostanzialmente adottato questo approccio e hanno creato una serie di motori per la loro applicazione CMS

HTH

Altri suggerimenti

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

Ma ciò che è necessario è davvero più specifica applicazione. Un sacco di applicazioni sviluppare queste cose organicamente nel corso del tempo. Cominciano a mano lavorazione alcuni di questi e poi si ri-factor periodicamente fino a trovare modelli che si allineano con i modelli di progettazione software e poi si sviluppano un quadro plugin.

Hai intenzione di esporre l'interfaccia per gli utenti finali? Per gli sviluppatori di terze parti? Quali parti della domanda sono controllati da questi plugin? È solo il livello di presentazione? Influisce sul modello di dati? Considerare il fatto che quando si pubblica qualsiasi tipo di interfaccia esterna, si sta sviluppando contratti che avete bisogno di onorare.

Si potrebbe controllare questi modelli di progettazione: http://en.wikipedia.org/wiki/Software_design_pattern . Essi vi aiuterà a capire come gestire il processo di sviluppo. Se si sta solo lavorando su plugin per uso interno, allora qual è il vero scopo della loro? Ciò che li rende diversi rispetto ai moduli?

Autorizzato sotto: CC-BY-SA insieme a attribuzione
Non affiliato a StackOverflow
scroll top