Test delle gemme Ruby prima della distribuzione
Domanda
Sto creando una gemma che ha
- diversi script nella directory bin
- le classi di utilità nella directory lib
- e diversi test nella directory dei test
supertool bin toolA toolB lib supertool supertool.rb helper.rb test tc_main.rb tc_etc.rb
Ora, per eseguire i test prima ancora di installare la gemma, ho il seguente frammento nella parte superiore dei miei test:
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
Questo sembra noioso, specialmente se devo metterli anche negli script nella directory bin. Esiste un modo migliore di impostare l'ambiente in modo che possiamo testare le gemme prima che vengano installate? Sono sicuro che è qualcosa di semplice che non riesco proprio a trovare. Un semplice link nel posto giusto sarebbe di grande aiuto :)
Soluzione
Non sono sicuro di ciò che stai cercando di ottenere con quello script. Non sembra avere nulla a che fare con le gemme ...
È così che puoi eseguire ruby ??tc_main.rb
dalla directory test (o ruby ??test / tc_main.rb
dalla directory base), e averlo impostare il percorso di caricamento in modo appropriato? In tal caso, ecco un modo molto più bello:
Nella tua directory di test, crea un file test_helper.rb
. In quel file, metti questo
$LOAD_PATH << File.expand_path( File.dirname(__FILE__) + '/../lib' )
E in tutti i tuoi file di test, imposta la prima riga su
require 'test_helper'
Se hai directory secondarie all'interno della tua directory di test, i file in quelle directory secondarie possono semplicemente fare
require '../test_helper'
Altri suggerimenti
Dai un'occhiata alla gemma della zappa, è un aiuto per altre gemme.