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