Estoy buscando una descripción general / aclaración de la estructura ideal del proyecto para un proyecto de rubí (sin rieles / merb / etc.). Supongo que sigue
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?
ruby
project-structure
dylanfm
fuente
fuente
Respuestas:
Creo que eso es bastante acertado. De manera predeterminada, Rubygems agregará el directorio lib a la ruta de carga, pero puede insertar cualquier directorio que desee utilizando la variable $:. es decir
Eso significa que cuando haya
surfer.rb
dicho , en ese directorio, puederequire "surfer"
hacerlo en cualquier lugar y se encontrará el archivo.Además, como convención, las clases y los singletons obtienen un archivo y los módulos obtienen un directorio. Por ejemplo, si tuviera el
LolCatz
módulo y laLolCatz::Moar
clase que se vería así:Es por eso que hay una carpeta lib / appname porque la mayoría de las bibliotecas están en el
appname
espacio de nombres.Además, si intenta ejecutar el comando
newgem --simple [projectname]
que generará rápidamente un andamio para usted con lo esencial para un proyecto Ruby (y, por extensión, una Gema 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.fuente
lib
agregarse automáticamente a la ruta de carga. ¿Es una cosa 1.9? ¿Se requiere alguna configuración especial para que suceda?bundle gem gem_name
Vea el siguiente ejemplo de http://guides.rubygems.org/what-is-a-gem/
fuente
Intento imitar la estructura del proyecto Rails porque mi equipo, que generalmente se ocupa de Rails, comprenderá la estructura mejor que otra configuración. Convención sobre configuración: sangrado de rieles.
fuente
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
(solo asegúrese de hacerlocd app_name
primero)fuente