2010/8/17 Instr. Dwayne Macgowan <[email protected]> > > Las opciones que se me ocurren son: > - Hago 2 aplicaciones que accedan a la misma base de datos. > - Hago 2 aplicaciones que se comuniquen via API. ( pero pierdo todo los > has_many ) > - mantengo todo en la misma app y a freir churros. >
Tener 2 aplicaciones implica ciertos problemas que solo se justifica, según mi punto de vista, en pocos casos (desde Single Sign On hasta tener en cuenta que nunca podés considerar que un WS estará "acotado" en tiempo, por lo que empezás a necesitar replicar y sincronizar datos o pasar a background / delayed job tareas que deberían ser simples). Lo justificaría si las dos apps realmente fuesen independientes, teniendo apenas algún punto de contacto (con la posibilidad de que evolucionen por separado), o estén hechas en dos tecnologías diferentes (o desarrollada por equipos de desarrollo diferentes). O sea, lo evitaría. Una solución que a mi me gustó (aunque tiene su costo) es utilizar Engines. O sea, plugins que contienen Models y Controllers y lo que necesiten. Esto te permite explicitar dependencias que a veces en una app grande se te van de mambo y mantener cada "módulo" con cierta autonomía (y ciertamente es mucho más fácil de aprender una app si abrís el directorio de Models y hay una cantidad manejable de archivos). De esta manera se comportan como parte de la app y son más manejables. Algo interesante que podés hacer es por ejemplo que la app no dependa de los plugins sino que los plugins en su init se registren y agreguen entradas de menú y cosas así. El gran "pero" de este approach tiene que ver con el reloading que Rails intenta hacer en development. Desconozco exactamente qué lo dispara (a veces era un plugin con controllers, pero me pasó en otros casos también), cuando intenta eliminar alguna clase para luego recargarla (por ej me pasaba con ActionController::Base) queda alguna referencia dando vueltas por algún lado y no la puede terminar de descargar; luego al querer redefinir esa clase levanta un error diciendo que la clase XXX ya existe o algo similar. La única solución que encontré es desactivar el class reloading en development (lo que es muy molesto). nachokb
_______________________________________________ Ruby mailing list [email protected] http://lista.rubyargentina.com.ar/listinfo.cgi/ruby-rubyargentina.com.ar
