Rake e le variabili d'am-biente

Perché se faccio eseguire un rake da BackgroundJob non vede un
eseguibile che sta in /usr/local/bin/ mentre se il rake lo eseguo da
linea di comando me lo vede?
Sembrerebbe che eseguito da BJ non accedesse alle stesse variabili
d’am-biente dell’utente che esegue direttamente il rake.

L’eseguibile inoltre è visibile ed accessibile senza problemi da linea
di comando, da irb e da console (Rails).
La piattaforma è Linux e sto usando Rails.

Per la cronaca ho creato una cartella in lib/executables/merlin/ con
all’interno cartelle suddivise per am-biente (macosx/ e linux/) dove in
ognuna metto l’eseguibile adatto a ciascuna piattaforma.
Tuttavia se l’eseguibile è stato installato a livello di sistema (nel
mio caso in /usr/local/bin/) viene fatta una verifica come segue:

def command_exists?(command)
if system(“which #{command}”)
true
else
false
end
end

Ma risulta sempre negativa.

Qualche suggerimento?

Grazie mille.
Aloha,
iwan

PS: perché non posso usare am-bien senza il trattino? dice che il mio
post contiene spam… E’ possibile aggirare questo fastidioso limite?

Iwan B. wrote:

Perché se faccio eseguire un rake da BackgroundJob non vede un
eseguibile che sta in /usr/local/bin/ mentre se il rake lo eseguo da
linea di comando me lo vede?
Sembrerebbe che eseguito da BJ non accedesse alle stesse variabili
d’am-biente dell’utente che esegue direttamente il rake.

In che file metti il path?

$HOME/.bash_profile
oppure
/etc/profile
vengono letti solo quando si fa il login nella shell.

devi inserire
export PATH=/usr/local/bin:$PATH
oppure il comando giusto per la tua shell (ad esempio “setenv”) da
qualche parte che sia accessibile anche ai programmi non interattivi
( daemon vari, BackgroundJob, etc) lo puoi mettere in un file che
richiami da init.d per esempio (uno creato appositamente).

Grazie mille.
Aloha,
iwan

Di nulla
Duilio R.

PS: sapere che distribuzione linux usi e che versione (anche dei
programmi) può sempre essere utile, quindi ti consiglio di
inserire più dati la prossima volta. Ti farà avere risposte più
dettagliate e in tempi più brevi :wink:

Il 01 febbraio 2010 22.38, Iwan B. [email protected] ha scritto:

Perché se faccio eseguire un rake da BackgroundJob non vede un
eseguibile che sta in /usr/local/bin/ mentre se il rake lo eseguo da
linea di comando me lo vede?
Sembrerebbe che eseguito da BJ non accedesse alle stesse variabili
d’am-biente dell’utente che esegue direttamente il rake.

per toglierti ogni dubbio infila un

puts ENV[‘PATH’]

da qualche parte nel codice, così vedi qual è il path.

pietro

Per togliere qualsiasi dipendenza da fattori esterni potresti anche
impostare il PATH da dentro il tuo programma ruby, sostituendo il valore
iniziale con quello che vuoi tu. In questo modo sei anche al sicuro
dagli effetti collaterali di future modifiche fatte ai file di
inizializzazione della shell.

Paolo