Pergunta

Eu tenho que construir um site de redes sociais no Ruby on Rails. Os recursos no site podem mudar de tempos em tempos; Portanto, precisaremos adicionar/remover os recursos com facilidade. Além disso, podemos estar construindo outro site de redes sociais. Por esses motivos, estamos pensando em criar uma estrutura básica para sites de redes sociais no ROR com o recurso para instalar ou desinstalar extensões na estrutura.

Eu trabalhei anteriormente em Joomla! O CMS e sua arquitetura para adicionar/remover extensões são o que estou olhando. Em um Joomla! Instalação geralmente existe um lado do administrador do qual você pode adicionar/remover/personalizar extensões.

Eu sou novo em ror e achar pouco difícil decidir como fazer isso. Qualquer ajuda será apreciada.

Foi útil?

Solução

ATUALIZAÇÃO 2015: Isso foi respondido em 2009, muito mudou

Os plug-ins foram substituídos por gemas e motores para todas as informações necessárias nos motores:http://guides.rubyonrails.org/engines.html

Os motores são uma maneira fantástica de criar código encapsulado e reutilizável para os aplicativos do seu Rails.

Resposta original para referência

Nos motores e/ou plugins do lado do lateral de desenvolvimento, é provavelmente o que você está procurando.

Os motores Rails são pequenos subconjuntos de um aplicativo que podem ser retirados em qualquer um dos seus aplicativos de trilhos e lidam com partes comuns do aplicativo do zero.

Digamos, por exemplo, seu aplicativo de rede social tem um wiki, blog, sala de bate -papo etc. Você provavelmente gostaria de criar um mecanismo wiki, mecanismo de blog e mecanismo de sala de bate -papo.

Os motores permitem que você reutilize essa funcionalidade em diferentes aplicativos para que você não precise se repetir.

Dê uma olhada em: http://rails-engines.org/

Alguns suporte para plug -ins de 'motor' foram mesclados na base de código do Rails Core no Rails 2.3.

Eu também recomendaria dar uma olhada em alguns projetos públicos no Github e ver como as pessoas usavam motores.

Dê uma olhada em alguns motores:

Outros links úteis para leitura

Em termos de funcionalidade, você ainda pode ter uma área de administrador que poderia ativar certos recursos, ie. Seu blog ou wiki, permitindo que os usuários tenham acesso a essas áreas com um sistema de permissões/funções.

Se você deseja criar um CMS que suporta algum tipo de extensão, como no WordPress ou Joomla, terá que construí -lo e fornecer diretrizes ou, pelo menos, analisar como você carregaria/instalaria motores/plugins da perspectiva do usuário.

Não tenho certeza das implicações de segurança disso

Redmine colocou esse tipo de funcionalidade em sua incrível aplicação. Você pode querer cavar o Código fonte Para dicas e pistas

Finalmente ADVA_CMS basicamente adotou essa abordagem e criou vários motores para o aplicativo CMS

Hth

Outras dicas

Os motores ainda são um caminho a seguir, o novo local para obter informações sobre eles está localizado aqui: http://guides.rubyonrails.org/engines.html

Mas o que você precisa é realmente mais específico do aplicativo. Muitas aplicações desenvolvem essas coisas organicamente ao longo do tempo. Eles começam por criar alguns deles e, em seguida, re-fator-os periodicamente até encontrarem padrões que se alinham aos padrões de design de software e, em seguida, desenvolvem uma estrutura de plug-in.

Você vai expor sua interface aos usuários finais? Para desenvolvedores de terceiros? Quais partes do aplicativo são controladas por esses plugins? É apenas o nível de apresentação? Isso afeta o modelo de dados? Considere o fato de que, quando você publicar qualquer tipo de interface externa, está desenvolvendo contratos que precisa honrar.

Você pode conferir estes padrões de design: http://en.wikipedia.org/wiki/software_design_pattern. Eles o ajudarão a descobrir como gerenciar seu processo de desenvolvimento. Se você está apenas trabalhando em plugins para uso interno, qual é o objetivo real deles? O que os torna diferentes dos módulos?

Licenciado em: CC-BY-SA com atribuição
Não afiliado a StackOverflow
scroll top