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 :)

È stato utile?

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.

Autorizzato sotto: CC-BY-SA insieme a attribuzione
Non affiliato a StackOverflow
scroll top