rails examples example application ruby-on-rails ruby project code-organization project-organization

ruby on rails - examples - ¿Sistema para organizar programas de múltiples archivos de Ruby?



ruby on rails database (5)

¿Existe un sistema estándar o convencional para organizar programas Ruby de varios archivos? Me he embarcado en mi primer "proyecto" grande en Ruby, un programa de búsqueda que está lógicamente organizado en múltiples archivos y directorios. He esbozado a continuación mi estructura potencial:

  • El archivo principal . Este archivo implementa la clase de búsqueda y el protocolo de búsqueda general.
  • El archivo de análisis algorítmico . Este archivo implementa funciones que interpretan los resultados de búsqueda.
  • Directorio de protocolos
    • Contiene un archivo por protocolo para buscar.
  • Directorio de feeds
    • Parte del propósito del programa es buscar fuentes de noticias archivadas. Los archivos para esta característica van en esta carpeta.

Sin embargo, el código actualmente tiene una clase (llamémosla Buscador) que hereda la clase de búsqueda de cada protocolo (GoogleSearcher <Buscador). Para poder gestionar esto, necesito incluir el archivo principal en estos archivos de protocolo (¿verdad?) Que no parece posible dada mi estructura ideal.

Aparte de mi ejemplo específico, me preguntaba si hay alguna convención, como "más archivos en lugar de menos", o "la estructura lógica de los archivos no es necesaria". ¿Es común tener un archivo de funciones "auxiliares" (como en Rails?) ¿Qué nivel de abstracción se considera apropiado?

Finalmente, estoy planeando integrar esto en Rails algún día como una biblioteca (no un complemento; también quiero que funcione de forma independiente). No sé si esto afectaría a la organización.

Sé que esta es una pregunta bastante abierta, pero eso es porque agradecería cualquier consejo que sea remotamente relevante. Gracias por adelantado.


Además de los enlaces recomendados en la Respuesta de vonconrad, puede consultar la sección "Organizar su fuente" en el Capítulo 16 de Programing Ruby 1.9 por Dave Thomas et al. Hay una muestra gratuita en PDF de esa parte del libro .

El capítulo menciona:

16.1 Espacios de nombres Ya hemos encontrado una manera en que Ruby le ayuda a administrar los nombres de las cosas en sus programas. Si define métodos o constantes en una clase, Ruby se asegura de que sus nombres solo puedan usarse en el contexto de esa clase

16.2 Organizando su fuente Los scripts pequeños y autocontenidos pueden estar en un solo archivo ... los programas más grandes deben considerar el sistema RubyGems

anagram/ <- top-level bin/ <- command-line interface goes here lib/ <- three library files go here test/ <- test files go here


Es posible que desee considerar la creación de una gema para su biblioteca. Esto facilitaría el uso de la biblioteca tanto de forma independiente como con Rails, así como simplificaría la implementación / actualizaciones.

Además, como las gemas normalmente siguen una estructura de directorio específica, también resuelve el problema de no saber cómo organizar la biblioteca.

Hay mucha documentación disponible para crear gemas. Here un poco más de información sobre la estructura del archivo, así como otros consejos útiles.



Sé que esta pregunta es bastante antigua, pero espero que sea de utilidad para aquellos que vienen después ...

Estoy de acuerdo con lo que se ha dicho anteriormente: las gemas son una excelente manera de organizar y reutilizar el código. Además de los enlaces anteriores, puedo recomendar el uso de Bundler para crear gemas como se describe en este Ryan Bates RailsCast: http://railscasts.com/episodes/245-new-gem-with-bundler

Me parece que Bundler hace que la creación y mantenimiento de gemas sea muy sencillo.

Con respecto a la herencia, verifique cómo se pueden usar los mixins de Ruby para encapsular y reutilizar el código en jerarquías de clases dispares. http://ruby-doc.org/docs/ProgrammingRuby/html/tut_modules.html