Forum: Italian Ruby user group Rake e le variabili d'am-biente

Posted by Iwan B. (1w4n)
on 2010-02-01 22:38
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?
Posted by Duilio Ruggiero (sinetris)
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 ;)
Posted by Pietro Giorgianni (giorgian)
on 2010-02-02 07:42
(Received via mailing list)
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
Posted by Paolo Montrasio (pmontrasio)
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
No account? Register here.