Rails: невозможно получить доступ к файлу журнала

При перезагрузке моего приложения rails появляется следующая ошибка. У меня была эта проблема раньше, на другом сервере с другим приложением, но я не могу вспомнить, в чем проблема, или как я ее решил.

Rails Error: Unable to access log file. Please ensure that /apps/staging/releases/20090310162127/log/staging.log exists and is chmod 0666. The log level has been raised to WARN and the output directed to STDERR until the problem is fixed.

Я использую кластер mongrel с capistrano на Ubuntu.

Когда я делаю ls -l /apps/staging/releases/20090310162127/log/staging.log

результат:

-rw-rw-rw- 1 me grp 51 Mar 10 16:07 /apps/staging/releases/20090310162127/log/staging.log

Лог dir - это link to/apps/промежуточная/общая/журнал.

Что происходит?

Ответы

Ответ 1

Оказалось, что это тонкая ошибка рельсов:

Когда в этих двух строках возникает исключение

logger = ActiveSupport::BufferedLogger.new(configuration.log_path)
logger.level = ActiveSupport::BufferedLogger.const_get(configuration.log_level.to_s.upcase)

rails предполагает, что он не может найти файл журнала. Однако фактическая ошибка произошла во второй строке: NameError, потому что константа неверна. Причина в том, что в моем файле конфигурации был уровень устаревших журналов:

config.log_level = Logger::INFO

Rails 2.2 использует свой собственный регистратор и не понимает вышеприведенную строку.

Решение: удалите строку или используйте:

config.log_level = :info

Ответ 2

Работает ли Rails как me? Если нет, то какой пользователь работает? Этот пользователь jail 'ed? Имеет ли пользователь разрешения на перемещение для всех компонентов /apps/staging/shared/log, а также все компоненты /apps/staging/releases/20090310162127/log?