всякий раз, когда PATH в файле crontab для rails 3 ubuntu - PullRequest
3 голосов
/ 18 апреля 2011

Я использую всякий раз, когда gem с рельсами 3. На моем рабочем сервере (Ubuntu) задача запуска не запускается. Я попытался установить :set job_template, чтобы получить -l -i, как указано в в этом билете github . Однако это не решает проблему.

Проблема в этом конкретном производственном Ubuntu заключается в том, что в echo $PATH нет пути к ruby:

echo $PATH
/usr/local/sbin:/usr/local/bin:/usr/sbin:/usr/bin:/sbin:/bin:/usr/games

Принимая во внимание, что путь к ruby ​​/var/rails/myapp/shared/bundle/ruby/1.8/bin

Так что, если я вручную отредактирую файл crontab и добавлю PATH=/var/rails/myapp/shared/bundle/ruby/1.8/bin: /usr/local/sbin:/usr/local/bin:/usr/sbin:/usr/bin:/sbin:/bin:/usr/games в файл crontab, задача бегуна будет выполнена правильно.

Однако каждый раз, когда я выполняю развертывание, мне нужно вручную редактировать файл crontab, чтобы добавить к нему оператор PATH.

Есть ли способ добавить эту строку PATH в файл crontab, чтобы не потребовалось делать это вручную после каждого развертывания?

Спасибо

Ответы [ 4 ]

3 голосов
/ 15 апреля 2013

Я не использую RVM и не добавляю приведенный ниже код в файл config / schedule.rb (место, где вы пишете всякий раз, когда код, связанный с гемом), работал для меня.

env :PATH, ENV['PATH']
1 голос
/ 04 декабря 2011

Ответ от idlefingers выглядит в основном правильно, но, основываясь на комментарии ami, я бы изменил эту строку следующим образом:

env :PATH, "#{ENV["PATH"]}:/var/rails/myapp/shared/bundle/ruby/1.8/bin"

Обратите внимание на интерполяцию строки для ключа среды для PATH.Я не проверял это, но на основании комментария Ами, это должно полностью развернуть строку пути в файле crontab, как и ожидалось.

1 голос
/ 18 апреля 2011

Я думаю, что если вы добавите /var/rails/myapp/shared/bundle/ruby/1.8/bin к PATH того пользователя, на котором запущен cron, на сервере, то его следует выбрать. Или вы можете добавить его в всякий раз, когда schedule.rb:

env :PATH, "$PATH:/var/rails/myapp/shared/bundle/ruby/1.8/bin"

То, что должно сделать свое дело, но я не проверял это.

0 голосов
/ 03 июля 2011

Добавьте оператор PATH в начало файла crontab перед строкой, которая начинается

# BEGIN Whenever generated tasks for:

и вам не нужно каждый раз вручную редактировать файл crontab

...