rubí rubi proyecto planta peru moquegua ruby project-structure

ruby - rubi - Estructura ideal del proyecto de rubí



planta rubí (4)

Estoy buscando una visión general / aclaración de la estructura ideal del proyecto para un proyecto ruby ​​(non-rails / merb / etc). Supongo que sigue las siguientes líneas:

app/ bin/ #Files for command-line execution lib/ appname.rb appname/ #Classes and so on Rakefile #Running tests README test,spec,features/ #Whichever means of testing you go for appname.gemspec #If it''s a gem

¿Tengo algo mal? ¿Qué partes he perdido?


Creo que es bastante acertado. Por defecto, Rubygems agregará el directorio lib a la ruta de carga, pero puede insertar cualquier directorio al que quiera utilizando la variable $ :. es decir

$:.push File.expand_path(File.dirname(__FILE__) + ''/../surfcompstuff'')

Eso significa que cuando diga, surfer.rb en ese directorio, puede require "surfer" cualquier lugar y se encontrará el archivo.

Además, como una convención, las clases y los singletons obtienen un archivo y los módulos obtienen un directorio. Por ejemplo, si tuviera el módulo LolCatz y la clase LolCatz::Moar que se vería así:

lib/ appname.rb lolcatz/ moar.rb

Es por eso que hay una carpeta lib / appname porque la mayoría de las bibliotecas se encuentran en el espacio de nombre de nombre de aplicación.

Además, si intenta ejecutar el comando newgem --simple [projectname] que generará rápidamente un andamio para usted con los elementos esenciales para un proyecto de Ruby (y por extensión, una gema de Ruby). Hay otras herramientas que hacen esto, lo sé, pero newgem es bastante común. Por lo general, me deshago del archivo TODO y todas las cosas del script.


Intento imitar la estructura del proyecto Rails porque mi equipo, que generalmente se ocupa de Rails, comprenderá mejor la estructura que otra configuración. Convención sobre configuración: desbordamiento de Rails.


Si usas bundler, ejecutar este comando bundle gem app_name te dará la misma estructura de directorio.

Si desea utilizar rspec en lugar de pruebas unitarias, puede ejecutar este comando rspec --init (solo asegúrese de que cd app_name primero)


Vea el siguiente ejemplo de http://guides.rubygems.org/what-is-a-gem/

% tree freewill freewill/ ├── bin/ │ └── freewill ├── lib/ │ └── freewill.rb ├── test/ │ └── test_freewill.rb ├── README ├── Rakefile └── freewill.gemspec