2011-06-02 15 views
5

Tengo una aplicación Rails que ahora mismo es bastante estándar: backend Heroku/PostgreSQL, los usuarios van directamente a mi sitio para actualizar los datos, no hay una aplicación móvil ni nada. Vamos a comenzar a otorgar licencias de la tecnología a otras compañías, de modo que diferentes versiones de la interfaz vivan en company1.mywebsite.com, company2.mywebsite.com, etc., donde todas estas interfaces comparten la misma base de datos.¿Cómo creo una API para mi aplicación Rails, para que varios sitios puedan compartir una base de datos?

Quiero algunos consejos sobre cómo construir esto. ¿Creé una aplicación Rails separada para company1, company2, etc. (con un gran número de código redundante) y luego configuré cada una de ellas con claves API para consultar mi aplicación maestra, utilizando sus rutas RESTful?

Cualquier tutorial para señalarme sería genial también.

+1

Parece que usted quiere algún tipo de arrendamiento múltiple en su aplicación? ¿Puede darnos una idea de con qué tipo de datos está trabajando? ¿Sería posible para usted crear un objeto de compañía que tenga un nombre de subdominio y que sea el objeto principal para el resto de los objetos en el archivo db asociado con esa compañía? –

+0

Los datos son solo texto, la aplicación es un foro de discusión. Lo que dices tiene sentido para mí, ¿supongo que el problema sería cómo personalizar las vistas para diferentes interfaces de la empresa? Imagino que podría ser voluminoso con un montón de si user.companyname == "TKTK", muéstrele esto, else, muéstrelo – kateray

+1

Tenemos una configuración similar, pero usamos diferentes nombres de dominio para diferentes compañías. Inicializamos la compañía actual en un filtro anterior en el controlador de la aplicación usando el nombre de dominio y tenemos un archivo de configuración que define qué tema usar para cada compañía. Usamos less.js para definir la mayoría de los estilos comunes que pueden reutilizarse y abstraer las diferencias en un archivo de tema pequeño. Para obtener las publicaciones de una empresa actual, hacemos algo como current_company.posts – rubish

Respuesta

2

Te recomiendo el libro Service Oriented Design with Ruby and Rails, de Paul Dix. Tiene mucha información sobre el tipo de sistema que desea construir.

Para responder a su pregunta:

  • Construir un servidor API. Sirve un JSON, por ejemplo, una interfaz REST.

    api.mydomain/client1/users.json 
    
  • Cree un servidor de frontend. Consume el servicio API, por ejemplo, usando typhoeus, y sirve las páginas finales. Utiliza un subdominio o nombre de dominio para la identificación de diferentes clientes.

    client1.mydomain/users 
    
1

Tenemos una "plataforma" similar.

Lo que hicimos:

  1. construir una aplicación API maestro (REST + Push)
  2. construir un complemento del núcleo para los carriles que tiene todo el código compartido
  3. construir un raíles aplicación separada para cada cliente que tiene todo el código específico del cliente

Estamos utilizando esta configuración desde hace 3 años y estoy muy contento con ella.

Cuestiones relacionadas