Mantenimiento de diferentes aplicaciones que comparten el mismo código

Tengo una aplicación Rails que se implementa en un sitio. Ahora quiero poder crear, mantener y desplegar una copy de esta aplicación, pero con configuraciones ligeramente diferentes y una interfaz diferente.

Las principales diferencias estarían en html y css, pero también hay algunas diferencias en el text utilizado en todo el sitio (quizás necesite usar i18n).

He pensado en usar submodules de git para cada una de las diferentes carpetas de vista. Si bien esto me permitiría mantener las confirmaciones para estas vistas por separado, no está claro cómo podría especificar qué carpeta de vista usar. Esto no parece una buena solución.

Idealmente, me gustaría poder mantener estas aplicaciones en repositorys separados, pero también poder compartir el código entre ellas.

¿Cuál sería el mejor enfoque para mantener múltiples aplicaciones?

Hay varias forms en que podrías hacer esto:


Plantillas

Las templates de aplicaciones son simples files de Ruby que contienen DSL para agregar gems / inicializadores, etc. a su proyecto de Rails recientemente creado o a un proyecto de Rails existente.

Nunca los usé yo mismo, pero al parecer, las templates te ayudan a darle un poco de estructura a la nueva aplicación Rails. A pesar de que están destinados a darte files de Gem estandarizados, etc., he visto gente haciendo algunas cosas bastante intrincadas con las templates


Motores

También puede usar Motores para ayudar:

Los motores se pueden considerar aplicaciones en miniatura que proporcionan funcionalidad a sus aplicaciones host. Una aplicación Rails es en realidad solo un motor "sobrealimentado", y la class Rails :: Application henetworkinga gran parte de su comportamiento de Rails :: Engine

Aunque esta parece ser una tecnología de nivel de aplicación profunda, es posible que pueda beneficiarse de su uso para una funcionalidad específica dentro de sus aplicaciones


DB?

Si solo está cambiando el front-end, ¿por qué no se enfoca en usar el mismo DB para ambas aplicaciones de Rails? Esto le dará la capacidad de personalizar la interfaz según sea necesario, lo que le ayudará a hacer lo que quiera, en lugar de limitarse a sí mismo.

¡Podría dar más recomendaciones definitivas si detalla exactamente qué partes quiere cambiar y por qué!