Problemi con il require

Ciao,
per organizzare un po’ meglio le mie classi ho deciso di spostarne un
paio all’interno di una directory utils, nel seguente modo:

analizer.rb - nella root
mux.rb - nella cartella utils
service.rb - nella cartella utils

da analizer.rb richiamo la classe Mux con: require ‘utils/mux’
da mux.rb richiamo la classe Service con: require ‘service’

naturalmente essendo mux.rb e service.rb nella stessa cartella, nel
require ometto la parte ‘utils/.’ e anche l’autocomposizione
dell’editor mi suggerisce che devo includere direttamente ‘service’.
ma in fase di esecuzione esce l’errore:
./util/mux.rb:1:in `require’: no such file to load – service
(LoadError)
from ./util/mux.rb:1
from analizer.rb:2
ovvero mi dice che non trova service

Se invece lascio i tre file nella stessa cartella (naturalmente in
questo caso il require di analizer.rb sarà solo di ‘mux’) tutto funziona
perfettamente e mux.rb trova service
Qualcuno sa spiegarmi come mai organizzando in cartelle si genera questo
errore.
Grazie

Ma che cacchio e’ vero!! anche io ho questo problema. E poi mi lamentavo
dei classpath/sourcepath di java.

Risolvi cosi’:
metti nella prima riga di analizer.rb: $:<<‘util’

Comunque come di ce Diego Abatantuono: “Su Pepplessu”

Dimmi se ti funziona

e poi dicono che la programmazione è una questione di logica :smiley:

cmq ora tutto funziona, ma il cosa “sto dicendo di fare” con questa
istruzione?

Antonio Di Fluri wrote:

Ma che cacchio e’ vero!! anche io ho questo problema. E poi mi lamentavo
dei classpath/sourcepath di java.

Risolvi cosi’:
metti nella prima riga di analizer.rb: $:<<‘util’

Comunque come di ce Diego Abatantuono: “Su Pepplessu”

Dimmi se ti funziona

— Diego C. [email protected] wrote:

    from ./util/mux.rb:1
    from analizer.rb:2

ovvero mi dice che non trova service

i require sono sempre relativi alla cartella iniziale,
per cui quando fai
require ‘service’

cerca sempre in dir/service.rb, sia che tu lo faccia
da dir/file.rb che da dir/subdir/file.rb.

$:, ovvero $LOAD_PATH è la lista delle directory in
cui ruby va a cercare il file passato a require.
Aggiungendo “util” a questa lista non devi specificare
il path completo.

HTH


Goto 10: http://www.goto10.it
blog it: http://riffraff.blogsome.com
blog en: http://www.riffraff.info

  ___________________________________________________________

Want ideas for reducing your carbon footprint? Visit Yahoo! For Good
http://uk.promotions.yahoo.com/forgood/environment.html

ciao

Grazie sia ad Antonio che a Gabriele per le spiegazioni
Almeno ora so quando riutilizzarlo ;-D

Si aggiungo che puoi usare in alternativa l’opzione ruby -I
<directory/subdirectory…>
il comando aggiunge il percorso specificato sempre alla variabile
globale $LOAD_PATH (o anche $:)
alla fine sempre $LOAD_PATH devi andare a toccare

Ciao