Вызов Rubygem tmail от Dreamhost CRONjob - PullRequest
0 голосов
/ 30 августа 2009

У меня есть задание cron для запуска сценария Ruby, который отлично работает в командной строке (от пользователя "user"), но cron завершается ошибкой, потому что не может найти рубиновый гем TMail. Я вручную установил гем tmail в мой ~ / .gems / dir, на который указывал мой скрипт ~ / .bashrc, как предложил Нейт .

При вызове вручную из оболочки (на сервере deadpool)

. / Дом / пользователь / site.com / AppDir / testbalances.sh

работает нормально, но из веб-интерфейса CRONtab (та же команда) я получаю почту:

/ usr / local / lib / site_ruby / 1.8 / rubygems / custom_require.rb: 31: в gem_original_require': no such file to load -- tmail (LoadError) from /usr/local/lib/site_ruby/1.8/rubygems/custom_require.rb:31:in require ' от afschriftmonitor / Statement_monitor.rb: 7

Строки 6 и 7 файла afschriftmonitor / Statement_monitor.rb: 7 имеют значение

требуется 'rubygems' требуется 'tmail'

Кажется, что CRON запущен с другого сервера или он игнорирует файл ~ / .bashrc? Как я могу это исправить? Кажется, это проблема хостинга Dreamhost, потому что скрипт отлично работает локально на моем Mac и, как уже было сказано, отлично с моей учетной записи оболочки на Dreamhost. Я озадачен.

Ответы [ 2 ]

1 голос
/ 30 августа 2009

Исправил это сам: оказалось, что это / была проблема с 2 частями:

  • Dreamhost запускает свой CRON (как и любой другой CRON AFAIK) из оболочки sh, тогда как мое тестирование консоли проводилось из оболочки Bash.
  • CRON загружает параметры среды, отличные от вашей консольной оболочки, как указал Гленн.

Сочетая их, мне удалось решить проблему:

  1. Дублирование моего ~ / .bashrc в файл ~ / .shrc (для chmod + x)
  2. Добавление следующей строки в начало моего bash-скрипта, воспламеняемого из CRON:

    . ~ / .Shrc

Проверить правильность среды просто, добавив вызов к env внутри скрипта.

1 голос
/ 30 августа 2009

Проблемы такого рода неизменно являются несовпадением между вашей оболочкой и средой cron. См. Эту страницу для различных предложений: Работает ли ваш скрипт cron в оболочке bash, но не во время работы под crontab?

...