ruby-on-rails module

Ruby on Rails: ¿dónde debo guardar los módulos?



ruby-on-rails module (1)

Soy nuevo en Ruby on Rails y mis preguntas son sobre el diseño de la aplicación, basado en Rails 3. Hay muchos datos en Internet sobre la creación de sitios web estándar (como blogs) en Rails, pero mi aplicación requiere más que solo " publica y lee "y no estoy seguro de cómo implementar eso.

La idea:

  1. El modelo "Ruta" incluye varios módulos de aerolíneas: "Ryanair", "easyJet", etc.
  2. El método "Route.Update" llama a los "UpdateRoutes" en cada módulo de línea aérea (por ejemplo, "Ryanair.UpdateRoutes", "easyJet.UpdateRoutes")
  3. Debería funcionar de la misma manera con más modelos (como "Flight.find") y más aerolíneas ("Delta.FindFlights")

Las preguntas:

  1. ¿Dónde debo guardar todos los módulos? No veo ninguna carpeta de aplicaciones / módulos en Rails.
  2. Si mis módulos requieren gemas, ¿debería incluirlos en los módulos o en los modelos (donde se utilizan)?
  3. Quiero hacer mi aplicación escalable. Por ejemplo, quiero agregar una nueva línea aérea operativa (módulo) sin cambiar ningún código en "Ruta", "Vuelo" o cualquier otro modelo. Me imagino algo como el método "IncludeAirlines" que pasaría por los módulos / airlines / name .rb, incluir todos los módulos y llamar al método necesario (como el nombre .UpdateRoutes). ¿Hay alguna forma mejor de implementarlo en Ruby on Rails?

Como sabrás, los módulos se usan generalmente como espacios de nombres o como mixins.

El lugar donde coloque un módulo depende de cuán estrechamente acoplado esté un módulo con el directorio de aplicaciones. Algunos patrones en los módulos de almacenamiento:

  1. El directorio / lib, si el módulo no ''interactúa'' en particular o concierne a la aplicación / y usted trata al módulo como un complemento interno.

  2. El directorio de aplicaciones / modelos sería un lugar apropiado si su módulo es fundamental para la lógica de su negocio. Un caso de uso popular aquí es que utiliza un módulo como una mezcla para SECAR sus modelos / controladores.

  3. 37 Las señales introdujeron un patrón para tratarlas como "preocupaciones" y almacenarlas en la aplicación / preocupaciones.

Si su módulo usa una gema, es posible que necesite la gema en el módulo (a veces no es necesario un requisito).

Tu tercera pregunta no está clara. Lo siento por eso. No estoy seguro de lo que estás tratando de hacer.