¿Existe un sistema estándar o convencional para organizar los programas Ruby de varios archivos? Me he embarcado en mi primer gran "proyecto" en Ruby, un programa de búsqueda que está lógicamente organizado en múltiples archivos y directorios. Yo he descrito a mi potencial estructura:Sistema para organizar programas de Ruby de varios archivos?
- 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 resultados de búsqueda. directorio
- Protocolos
- Contiene un archivo por cada protocolo para la búsqueda.
- Feeds Directorio
- Parte del propósito del programa es buscar canales de noticias archivados. Los archivos para esta característica van en esta carpeta.
Sin embargo, el código tiene actualmente una clase (vamos a llamarlo buscador) que clase de búsqueda de cada protocolo hereda de (GoogleSearcher < buscador). Para gestionar esto, necesito incluir el archivo principal en estos archivos de protocolo (¿no?), Lo que no parece posible dada mi estructura ideal.
Aparte de mi ejemplo específico, me preguntaba si hay convenciones, como "más archivos en lugar de menos", o "la estructuración lógica de los archivos es innecesaria". ¿Es común tener un archivo de funciones de "ayuda" (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 como un complemento, también quiero que funcione de manera independiente). No sé si esto afectaría a la organización.
Sé que esta es una pregunta bastante abierta, pero es porque agradecería cualquier consejo que sea remotamente relevante. Gracias por adelantado.
hay algunas herramientas geniales de generación de gemas: newgem, Jeweler, bones. Utilicé newgem para un proyecto (que en realidad NO estaba destinado a ser lanzado como una gema) y funcionó bastante bien – RyanWilcox
Esto es bueno, y solo deja una pregunta sin respuesta (en retrospectiva, esta pregunta era definitivamente demasiado amplia). ¿Hay alguna pregunta? una forma de tener herencia de clases en varios archivos, donde la clase principal se encuentra en el archivo principal y las clases que heredan de ella están en archivos de la periferia en un subdirectorio? ¿O es una organización al revés? –
Ruby es bastante indulgente en lo que respecta a la herencia. Si entiendo tu pregunta correctamente, definitivamente sería posible configurarla como describes. Sin conocer detalles de su proyecto, probablemente haga lo mismo cuando una "clase principal" esté en el directorio lib/foo/y las clases que hereden de la clase principal estén en lib/foo/bar, lib/foo/baz y así. Echa un vistazo a gemas como Nokogiri para ver ejemplos en vivo de este tipo de configuración. – vonconrad