В Redmine 0.8.2 я хочу, чтобы информация о наборе изменений извлекалась автоматически, а не только тогда, когда кто-то просматривает вкладку «Репозиторий» соответствующего проекта. (Мне это нужно, чтобы сообщения фиксации, содержащие «refs # 42» или «closes # 42», вступили в силу как можно скорее.)
В crontab пользователя, от имени которого работает Redmine, есть следующая запись:
# m h dom mon dow command */5 * * * * ruby /var/www/redmine/script/runner Repository.fetch_changesets -e production
Раньше это работало до миграции сервера, и оно работает из командной строки (как пользователь Redmine), но не работает из cron. Я вижу в системном журнале, что команда запущена:
Feb 15 14:05:01 turing /USR/SBIN/CRON[24119]: (www-data) CMD (ruby /var/www/redmine/script/runner Repository.fetch_changesets -e production)
но база данных не обновляется. В журналах Redmine нет записей.
Я получил этот фрагмент из Redmine FAQ. Я вижу, что предложенная команда была изменена на:
rake -f /path/to/redmine/Rakefile redmine:fetch_changesets
но когда я запускаю его из командной строки, он не принимает конфигурацию и, таким образом, получает «отказано в доступе» при доступе к базе данных.
В какой переулок мне пойти? Что очевидного я забываю проверить?
Возможно, что ruby находится в $ PATH пользователя Redmine, но не в cron. Попробуйте указать полный путь в записи crontab.
*/5 * * * * /path/to/ruby /var/www/redmine/script/runner Repository.fetch_changesets -e production
Кроме того, было бы полезно, если бы вы указали, какие сообщения об ошибках или записи журнала вы получаете, вместо того, чтобы просто сказать «не работает». Дополнительная информация поможет диагностировать проблему.