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?
on 2010-02-01 22:38
on 2010-02-02 00:22
Iwan Buetti 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 Ruggiero 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 ;)
on 2010-02-02 07:42
Il 01 febbraio 2010 22.38, Iwan Buetti <iwan.buetti@mac.com> 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
on 2010-02-02 10:00
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
Please log in before posting. Registration is free and takes only a minute.
Existing account
(Switch to SSL-encrypted connection)
NEW: Do you have a Google/GoogleMail or Yahoo account? No registration required!
Log in with Google account | Log in with Yahoo account
Log in with Google account | Log in with Yahoo account
No account? Register here.