Come creare un lavoro launchd automatico che imposta la versione di Ruby da utilizzare

0

Mi piacerebbe eseguire uno script ruby automaticamente una o due volte al giorno sul mio MacBook con OS X Yosemite.

Il problema è che al momento ho tre versioni di Ruby sul mio sistema che includono 1.8.7 e 2.2.1, nessuna delle due con cui verrà eseguito lo script. Quindi dico rvm use system che passa a una versione diversa, anche se non so come scoprire quale (come rvm current risponde semplicemente a "sistema"). E poi posso gestire lo script felicemente.

Tuttavia, quando creo questo piccolo script:

#!/bin/bash
rvm use system
/Users/jonathan/Library/Scripts/slogger/slogger

Non verrà eseguito dalla shell, dicendo:

RVM is not a function, selecting rubies with 'rvm use ...' will not work. You need to change your terminal emulator preferences to allow login shell. Sometimes it is required to use /bin/bash --login as the command.

So come creare e impostare i lavori launchd di base; ma non so come impostare la versione ruby per il processo creato se non riesco a includerlo in uno script in questo modo. Sono sicuro che deve essere possibile, anche se ...

    
posta JGC 21.05.2015 - 17:17
fonte

1 risposta

1

Questo non è testato (perché non uso rvm ), ma ci dovrebbero essere due semplici modi per risolvere questo problema.

  1. Fonte rvm nel tuo script (che probabilmente farai comunque con .profile o .bashrc o equivalente):

    #!/bin/bash
    [[ -s "${HOME}/.rvm/scripts/rvm" ]] && source "${HOME}/.rvm/scripts/rvm"
    rvm use system
    /Users/jonathan/Library/Scripts/slogger/slogger
    

    Questa nuova linea è un modo più breve per dire

    if [[ -s "${HOME}/.rvm/scripts/rvm" ]]; then
      source "${HOME}/.rvm/scripts/rvm"
    fi
    

    -s viene utilizzato per restituire " True se FILE esiste e ha una dimensione maggiore di zero ".

  2. E probabilmente riderai quanto è stato facile risolvere, semplicemente fai ciò che dice il messaggio e usa /bin/bash --login , in questo modo:

    #!/bin/bash --login
    rvm use system
    /Users/jonathan/Library/Scripts/slogger/slogger
    
risposta data 02.12.2015 - 20:11
fonte

Leggi altre domande sui tag