Как создать автоматически запускаемое задание, которое устанавливает версию Ruby для использования

0

Я хотел бы запускать скрипт ruby ​​один или два раза в день на моем MacBook под управлением OS X Yosemite.

Проблема в том, что у меня в настоящее время есть три версии Ruby в моей системе, включая 1.8.7 и 2.2.1, ни с одной из которых не будет работать скрипт. Так я и говорю rvm use system которая переключается на другую версию, хотя я не знаю, как узнать, какая из них (как rvm current просто отвечает «система»). И тогда я смогу запустить сценарий счастливо.

Однако, когда я создаю этот маленький скрипт:

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

Он не побежит из раковины, говоря:

RVM не является функцией, выбор рубинов с помощью 'rvm use ...' не будет работать.   Вам нужно изменить настройки эмулятора терминала, чтобы разрешить вход в оболочку.   Иногда требуется использовать /bin/bash --login как команда.

Я знаю, как создавать и задавать основные запущенные задания; но я не знаю, как установить версию ruby ​​для созданного процесса, если я не могу включить ее в скрипт таким образом. Я уверен, что это должно быть возможно, хотя ...

JGC
источник
Почему бы не использовать полный путь к нужному ruby ​​или создать ruby18 runby22 в качестве сценариев для вызова правильного ruby
Mark

Ответы:

1

Это не проверено (так как я не использую rvm ), но должно быть два простых способа это исправить.

  1. Источник rvm в вашем сценарии (что вы, вероятно, в любом случае делаете в вашем .profile, или же .bashrc, или эквивалент):

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

    Эта новая линия - более короткий способ сказать

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

    -s используется для возврата « Правда если FILE существует и имеет размер больше нуля ».

  2. И вы, вероятно, будете смеяться над тем, как легко это было исправить, просто делайте то, что говорится в сообщении, и используйте /bin/bash --login, вот так:

    #!/bin/bash --login
    rvm use system
    /Users/jonathan/Library/Scripts/slogger/slogger
    
user137369
источник