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.rbdicho , 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
LolCatzmódulo y laLolCatz::Moarclase 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
appnameespacio 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
libagregarse automáticamente a la ruta de carga. ¿Es una cosa 1.9? ¿Se requiere alguna configuración especial para que suceda?bundle gem gem_nameVea 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_namele 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_nameprimero)fuente