Cómo crear un trabajo de inicio automático que configure la versión de Ruby para usar

0

Me gustaría ejecutar un script ruby automáticamente una o dos veces al día en mi MacBook con OS X Yosemite.

El problema es que actualmente tengo tres versiones de Ruby en mi sistema, incluidas 1.8.7 y 2.2.1, ninguna de las cuales se ejecutará con el script. Así que digo rvm use system que cambia a una versión diferente, aunque no sé cómo descubrir cuál (como rvm current solo responde al "sistema"). Y luego puedo ejecutar el script felizmente.

Sin embargo, cuando creo este pequeño script:

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

No se ejecutará desde el shell, diciendo:

  

RVM no es una función, la selección de rubies con 'rvm use ...' no funcionará.   Debe cambiar las preferencias de su emulador de terminal para permitir el inicio de sesión del shell.   A veces se requiere usar /bin/bash --login como comando.

Sé cómo crear y configurar trabajos básicos de launchd; pero no sé cómo configurar la versión ruby para el proceso creado si no puedo incluirlo en un script de esta manera. Estoy seguro de que debe ser posible, aunque ...

    
pregunta JGC 21.05.2015 - 17:17

1 respuesta

1

Esto no se ha probado (ya que no uso rvm ), pero debería haber dos formas simples de solucionarlo.

  1. La fuente rvm en su secuencia de comandos (que probablemente haga de todos modos en su .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
    

    Esa nueva línea es una forma más corta de decir

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

    -s se usa para devolver “ Verdadero si existe FILE y tiene un tamaño mayor que cero ".

  2. Y probablemente te reirás de lo fácil que fue arreglarlo, simplemente haz lo que dice el mensaje y usa /bin/bash --login , así:

    #!/bin/bash --login
    rvm use system
    /Users/jonathan/Library/Scripts/slogger/slogger
    
respondido por el user137369 02.12.2015 - 20:11

Lea otras preguntas en las etiquetas