Nuestra empresa comenzó con un solo producto, una aplicación de rieles respaldada por algunos servicios de Java, y luego decidió que querían otro producto inicialmente bastante diferente al primero, pero a medida que pasaba el tiempo nos hemos dado cuenta de que están empezando a converger, y para que un código cambie a uno, se requiere un cambio de código similar al otro para una nueva corrección de error/función. Esto obviamente se está convirtiendo en un dolor.Combinando 2 aplicaciones de rieles con una única base de código
En algunos casos tenemos gemas que comparten algunas de esta funcionalidad pero va más allá de rubí en JavaScript, CSS, etc ..
Así que estoy encargado de la fusión de estas dos aplicaciones en una sola base de código. Creo que finalmente nos gustaría que sea una aplicación única con permiso de acceso basado en roles, pero eso vendrá mucho más tarde.
Mi primer pensamiento para unirlos rápidamente es crear dos motores de rieles y compartir libs comunes entre ellos. Creo que esta es la forma más rápida de combinar el código, buscar secciones comunes y comenzar a compartir.
Mi primer problema es cómo enrutar entre las aplicaciones. Una aplicación utiliza un único nombre de dominio que nunca cambia, la otra aplicación tiene muchos dominios. ¿Puede alguien sugerir cómo podría enrutar una solicitud particular a una aplicación en particular para que puedan permanecer separadas para comenzar mientras comparten una base de código común de libs?
O, si alguien tiene otras sugerencias sobre cómo combinar estas aplicaciones, soy todo oídos.
Son los dos rieles 2.3.10 aplicaciones en ejecución jruby 1.5.3, pero estamos abiertos a la posibilidad de actualizar a Rails3 si eso haría las cosas mucho más fácil o más limpio (es decir, con una mejor integración Rack)
I no hemos hecho ninguna programación de Rack, pero nunca nos duele saber si eso nos hará la vida más fácil.
estante sería una solución de implementación y, probablemente, no es la solución aquí. – Chirantan
rack es el middleware ¿verdad? Estaba pensando que podría interceptar la solicitud y la ruta de manera apropiada? pero de nuevo no sé mucho al respecto – brad