Всякий раз, когда PATH в файле crontab для rails 3 ubuntu

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

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

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

Принимая во внимание, что рубиновый путь - /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 ответа

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

env :PATH, ENV['PATH']

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

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

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

Я думаю, что если вы добавите /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"

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

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

# BEGIN Whenever generated tasks for:

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

Другие вопросы по тегам