Редактировать: Я просто заметил, что пользователь ответил на свой собственный пост, но я оставлю это на случай, если кто-то споткнется здесь с подобной проблемой. Я нашел, что это полезно для некоторых.
Я столкнулся с этим и обнаружил, что это решение для скриптов Ruby.
Ruby необходимо выполнить в конкретной среде. RVM обрабатывает это путем поиска файла среды ruby для конкретной версии ruby, которая задает все необходимые переменные среды. Например, если у вас есть рубин 1.9.3 патч 448, вы можете посмотреть на файл среды, выполняющиеся:
cat /usr/local/rvm/environments/ruby-1.9.3-p484
export PATH="/usr/local/rvm/gems/ruby-1.9.3-p484/bin:/usr/local/rvm/gems/ruby[email protected]/bin:/usr/local/rvm/rubies/ruby-1.9.3-p484/bin:$PATH"
export GEM_HOME='/usr/local/rvm/gems/ruby-1.9.3-p484'
export GEM_PATH='/usr/local/rvm/gems/ruby-1.9.3-p484:/usr/local/rvm/gems/[email protected]'
export IRBRC='/usr/local/rvm/rubies/ruby-1.9.3-p484/.irbrc'
unset MAGLEV_HOME
unset RBXOPT
(Примечание:. Моя установка РВМ была под /usr/local/..
, но ваш может быть в другом месте Используйте which ruby
на рисунок где установлен ваш рубин)
Здесь вы можете увидеть, что он устанавливает PATH
и некоторые другие важные переменные среды. Когда вы набираете rvm use ruby-1.9.3-p448
, rvm фактически передает этот файл в фоновом режиме.
Выполнение Cron - это неинтерактивные сеансы, что означает, что у них нет «живого» пользователя во время сеанса перед сеансом. Когда вы делаете это вручную и запускаете интерактивный сеанс, все это заботится о вас, но для неинтерактивного сеанса он не знает, что такое оболочка или где находится путь к среде. Может быть, кто-то с большим количеством знаний может дать техническое объяснение, почему.
В любом случае, чтобы обойти это, добавьте это в верхнюю части кронтаба:
SHELL=/bin/bash
BASH_ENV=/home/gigawatt/.bashrc
* * * * * /home/gigawatt/.rvm/rubies/ruby-2.0.0-p247/bin/ruby /home/gigawatt/drbronnersbot/drbronnersbot.rb
Это говорит пользователю неинтерактивную хрон, какая оболочка использовать, а затем дать его источник файла .bashrc
. Что находится в файле .bashrc
? Хороший вопрос, вы должны добавить эту строку -
source /usr/local/rvm/environments/ruby-1.9.3-p484
(Опять же, замените свой собственный путь рубина) В основном вы вручную поиске файлов среда, которая РВМ бы источников для вас. Это способ заставить cron использовать определенную среду драгоценных камней или gemset.
Он должен работать с этими двумя изменениями.
если вы используете RVM вам могут понадобиться для начальной загрузки вашего кронтаба с РВМ установки хрон – bjhaid
/home/gigawatt/.rvm/rubies/ruby- 2.0.0-p247/bin/ruby, который также находится в верхней части моего рубинового файла '#!/Home/gigawatt/.rvm/rubies/ruby-2.0.0-p247/bin/ruby' –