2014-01-06 2 views
5

Я пытаюсь запустить простой скрипт ruby ​​на моей старой машине PPC с 10,5 в среде RVM.Gem не найден в Ruby cron job в RVM env

Поиск по SO, я следил за выбранным ответом из этого post.

Это линия в хронах в результате:

SHELL=/bin/bash 
00 * * * * BASH_ENV=~/.bash_profile && /bin/bash -c '~/deggy/onlineGW.rb' 

Эта команда прекрасно работает в Bash в корне пользователя Сэма.

Вот Выступ часть моего сценария:

#!/usr/bin/env ruby 
require 'open-uri' 
require 'nokogiri' 
... 

Вот вывод ошибки из хрон:

X-Cron-Env: <SHELL=/bin/bash> 
X-Cron-Env: <PATH=/usr/bin:/bin> 
X-Cron-Env: <LOGNAME=sam> 
X-Cron-Env: <USER=sam> 
X-Cron-Env: <HOME=/Users/sam> 
Date: Mon, 6 Jan 2014 03:15:00 -0600 (CST) 
/Users/sam/deggy/onlineGW.rb:3:in `require': no such file to load -- nokogiri (LoadError) 

ОК, так как я бегу RVM Я установил мой по умолчанию рубин в 1.9.3 и, как я уже упоминал выше, команда выполняется в терминале, но не в cron. Есть ли другая среда в игре?

Так ясно, есть кое-что, что я пропускаю. Помогите мне это увидеть, sam

ответ

7

Я настроил несколько различных операционных систем для работы с несколькими ароматами CRON и RVM.

Я сначала попробовал RVM's official решение проблемы, но не работало под FreeBSD и Gentoo. Я должен был вручную добавить все соответствующие пути, как показано сильфона, но первый тип crontab -e для того, чтобы запустить кронтаб редактора [1]:

# atmat's crontab configuration 
SHELL=/bin/bash 
PATH=/home/atma/.rvm/gems/ruby-1.9.3-p0/bin:/home/atma/.rvm/gems/[email protected]/bin:/home/atma/.rvm/rubies/ruby-1.9.3-p0/bin:/home/atma/.rvm/bin:/usr/local/bin:/usr/bin:/bin:/opt/bin:/usr/i486-pc-linux-gnu/gcc-bin/4.5.3 
RUBYLIB=/home/atma/.rvm/rubies/ruby-1.9.3-p0/lib/ruby/1.9.1 
GEM_HOME='/home/atma/.rvm/gems/ruby-1.9.3-p0' 
GEM_PATH='/home/atma/.rvm/gems/ruby-1.9.3-p0:/home/atma/.rvm/gems/[email protected]' 
RUBYOPT=rubygems 

%nightly,mail(no) * 8-9 /home/atma/.rvm/rubies/ruby-1.9.3-p0/bin/ruby /usr/local/bin/morula -s username update 

Приведенный выше пример работает под Gentoo GNU/Linux с помощью fcron более гибкий, красивый и мощное решение для стандартного cron, но будет работать с любым cron.

[1] Эта команда откроет crontab с вашим системным редактором по умолчанию.

+0

Одна из вещей, которые я не читал, это WHERE, для конфигурации crontab. Где я могу обновить конфигурацию? – sam452

+0

Я считаю, что эквивалент ваших строк конфигурации вставлен в верхней части crontab.Я немного подхожу, когда моя ошибка возвращает 'read_nonblock ': соединение сброшено на peer. Конечно, в терминале с использованием BASH_ENV = ~/.bash_profile &&/bin/bash -c '~/.rvm/rubies/ruby-1.9.3-p0/bin/ruby ​​~/deggy/onlineGW.rb' работает, так что это не вероятно, удаленный сервер блокирует его. – sam452

+0

Я добавил запрошенную информацию. –

0

Чтобы загрузить среду RVM ruby ​​для рабочих заданий cron, вот что я настроил для пользовательского режима RVM, предположим, что пользователь ohho, домашняя папка /home/ohho. Для редактирования, введите crontab -e в командной строке:

MAILTO="" 
SHELL=/bin/bash 
BASH_ENV=/home/ohho/.bash_profile 
HOME=/home/ohho 

* * * * * rails -v > /home/ohho/env.txt 

Последняя строка для тестирования rails (если он установлен), может быть использовано должным образом. Вы также должны проверить, загружает ли ~/.bash_profile среду RVM (которая по умолчанию используется для bash).

Подробное описание SHELL и BASH_ENV можно найти в Daniel's answer.

28

Или вы можете просто попробовать

rvm cron setup # let RVM do your cron settings

, который работал для меня. через https://coderwall.com/p/vhv8aw

+0

Что мне нужно! Благодаря! – Vetal4eg

+1

безумный, как эта команда не упоминается чаще –

+2

ПРЕДУПРЕЖДЕНИЕ: это перезаписывает существующие записи crontab – hagope

Смежные вопросы