Prueba de gema de rubí antes del despliegue
Pregunta
Estoy creando una gema que tiene
- varios scripts en el directorio bin
- las clases de utilidad en el directorio lib
- y varias pruebas en el directorio de prueba
supertool bin toolA toolB lib supertool supertool.rb helper.rb test tc_main.rb tc_etc.rb
Ahora, para ejecutar las pruebas antes de instalar la gema, tengo el siguiente fragmento de código en la parte superior de mis pruebas:
base = File.basename(Dir.pwd)
if base == 'test' || base =~ /supertool/
Dir.chdir('..') if base == 'test'
$LOAD_PATH.unshift(Dir.pwd + '/lib')
Dir.chdir('test') if base =~ /supertool/
end
Sin embargo, esto parece tedioso, especialmente si tengo que poner esto en los scripts en el directorio bin también. ¿Hay una mejor manera de configurar el entorno para que podamos probar las gemas antes de que se instalen? Estoy seguro de que es algo simple que simplemente no puedo encontrar. Un simple enlace al lugar correcto ayudaría mucho :)
Solución
No estoy seguro de lo que intentas lograr con ese script. No parece tener nada que ver con gemas ...
Es para que pueda ejecutar ruby ??tc_main.rb
desde el directorio de prueba (o ruby ??test / tc_main.rb
desde el directorio base), y tenerlo establecer la ruta de carga adecuadamente? Si es así, aquí hay una manera mucho mejor:
En su directorio de prueba, cree un archivo test_helper.rb
. En ese archivo, pon esto
$LOAD_PATH << File.expand_path( File.dirname(__FILE__) + '/../lib' )
Y en todos sus archivos de prueba, establezca la primera línea en
require 'test_helper'
Si tiene subdirectorios dentro de su directorio de prueba, entonces los archivos en esos subdirectorios solo pueden hacerlo
require '../test_helper'
Otros consejos
Echa un vistazo a la gema de azada, es una ayuda para otras gemas.