Estructura ideal del proyecto Ruby.

Busco una descripción general / aclaración de la estructura ideal del proyecto para un proyecto ruby ​​(non-rails / merb / etc). Supongo que sigue en la línea de:

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 me he perdido?

Creo que eso es bastante acertado. De forma predeterminada, Rubygems agregará el directorio lib a la ruta de carga, pero puede insertar cualquier directorio que desee en ese usando la variable $ :. es decir

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

Eso significa que cuando haya surfer.rb , 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 están en el espacio de nombres de appname .

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

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 

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

Si usa Bundler, ejecutar este comando bundle gem app_name le dará la misma estructura de directorios.

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

Intereting Posts