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
$:.push File.expand_path(File.dirname(__FILE__) + '/../surfcompstuff')
Eso significa que cuando haya surfer.rb
dicho , en ese directorio, puede require "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 la LolCatz::Moar
clase 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 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.