Un progetto Ruby normalmente ha una sua struttura.
Se parliamo di GEM, è convenzione una cartella di progetto con all'interno almeno due cartelle:
- lib contenente le librerie
- test contenente gli unit test per le librerie
Allo stesso modo, un progetto Rails ha una sua struttura e così via.
L'uso di strutture convenzionate aiuta a semplificare le cose.
Ad esempio, per una GEM la cartella /lib è aggiunta automaticamente al $LOAD_PATH limitando problemi derivanti dalle inclusioni di file dipendenti poiché puoi sempre fare riferimento al percorso a partire da lib.
Nel tuo caso, dove non c'è una vera e propria struttura, ti consiglio in qualche modo di creartela.
Identifica inanzi tutto la cartella principale del progetto, ad esempio /home/lallacat/workspace/A.
Assicurati di includere il percorso corrente nel load path
codice:
$:.unshift(File.dirname(__FILE__))
Ora, ogni libreria inclusa potrà a sua volta usare un percorso relativo rispetto al $LOAD_PATH.
codice:
# /home/lallacat/workspace/A/file.rb include /home/lallacat/workspace/A/B/ruby.rb
require 'B/ruby'
# /home/lallacat/workspace/C/otherfile.rb include /home/lallacat/workspace/A/B/ruby.rb
require 'B/ruby'
Vorrei sapere se posso sostituire /home/lallacat/workspace/A con qualche variabile globale
Elimina dal RubyVocabolario la parola variabile globale.
Assicurati inoltre di seguire le convenzioni di sintassi. Ad esempio, è norma creare le sottocartelle per i namespace di oggetto. In questo modo l'interprete potrà caricare in automatico i file quando non inclusi.