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
$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
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.
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
This forum is not affiliated to the Ruby language, Ruby on Rails framework, nor any Ruby applications discussed here.