Mejores prácticas al incluir modelos de Rails en otra aplicación

Estoy desarrollando una aplicación de Ruby que utiliza los modelos y datos de otra aplicación web de Ruby on Rails como fuente de datos principal.

Los modelos de Rails se incluyeron en esta aplicación al incluir el environment.rb archivo en el archivo principal como este:

# Require Rails
 require_relative "../../RailsApp/config/environment.rb"

Esto funciona, pero hay dependencias no inicializadas cuando se cargan modelos que usan gemas definidas en Rails Gemfile. (Por ejemplo, acts_as_taggable_on, rack-pjax, devise, Etc)

Las dependencias de esta aplicación Ruby también se administran a través de Bundler, por lo que, por el momento, la única forma de hacer que la aplicación funcione es copiar y pegar el contenido del Gemfile de Rails en el Gemfile de la aplicación Ruby.

Obviamente, este enfoque no es óptimo ya que se duplican los requisitos de gemas.

¿Hay alguna forma mejor de incluir Rails y las dependencias que requieren sus modelos en otra aplicación? ¿Hay alguna manera de incluir un Gemfile en otro?

preguntado el 12 de junio de 12 a las 21:06

2 Respuestas

Aquí hay algunas opciones, en orden de simplicidad.

  1. Solo mantén todo en una aplicación, muchas cosas son más fáciles de esta manera
  2. Use complementos para compartir código común
  3. Usar servicios web para compartir datos

respondido 21 nov., 12:19

Finalmente, opté por el número 3, creamos un directorio en /vendor/app_name y logramos deshacernos de los archivos gemfile duplicados y creamos tareas de rake bajo rieles que requieren el entorno, por lo que ya no necesito incluir los modelos de rieles. Gracias - bruno077

Puede extraer los modelos y el código de RailsAppA en una gema. RailsAppA luego incluye esa gema y la usa.

La gema puede permanecer en un repositorio privado y no necesita ser publicada.

Ambas aplicaciones harían algo como:

gem "yourapp-modelage", git: "http://github.com/you/yourapp-modelage.git"

Entonces, App2 también usaría esa gema... La cantidad que se gaste en la gema dependerá de la cantidad que necesite reutilizar.

Respondido el 12 de junio de 12 a las 21:06

No es la respuesta que estás buscando? Examinar otras preguntas etiquetadas or haz tu propia pregunta.