2009-03-10 17 views
13

Recibo el siguiente error al reiniciar mi aplicación de rieles. He tenido este problema antes, en otro servidor con otra aplicación, pero no recuerdo cuál fue el problema ni cómo lo resolví.Rieles: no se puede acceder al archivo de registro

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. 

estoy desplegar a un grupo mestizo con Capistrano en Ubuntu.

Cuando hago ls -l /apps/staging/releases/20090310162127/log/staging.log

el resultado es:

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

El directorio de registro es un link a/apps/puesta en escena/shared/log.

¿Qué está pasando?

Respuesta

26

Resultó ser una sutil carriles de errores:

Cuando se produce una excepción en estas dos líneas

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

rieles asume que no puede encontrar el archivo de registro. Sin embargo, el error real ocurrió en la segunda línea: un NameError porque la constante es incorrecta. La razón es que había un nivel de registro legado en mi fichero de configuración:

config.log_level = Logger::INFO 

Rails 2.2 utiliza su propio registrador, y no entiende la línea anterior.

Solución: eliminar la línea, o utilizar:

config.log_level = :info 
+0

Bueno saber. Creo que me he topado con este problema algunas veces. –

+0

Me encontré con esto cuando cambié mis comandos de correo y logger: config.log_level =: sendmail D'oh! – wesgarrison

+0

Gracias por esto, seguí pensando que era un error de VirtualBox. –

0

¿Los raíles funcionan como me? Si no, ¿con qué usuario se está ejecutando? ¿Es ese usuario jail 'ed? ¿Tiene el usuario permisos de desplazamiento para todos los componentes de /apps/staging/shared/log y todos los componentes de /apps/staging/releases/20090310162127/log?

+0

Sí, se está ejecutando como "yo", ni idea de lo que significa jail'ed sin embargo. Sí, todos los componentes dir son transitables. releases/20090310162127 es probable que se acceda a través de un enlace (llamado actual). –

+2

@Michiel, encarcelado significa que/está reasignado a un directorio especial por razones de seguridad. ¿Puede confirmar que si 'su-me' y 'touch /apps/staging/releases/20090310162127/log/staging.log' no obtiene un error, ¿correcto? – vladr

+0

Interesante - Debería investigar eso. Sin embargo, el mensaje de error fue completamente engañoso: nada que ver con el archivo de registro. –

Cuestiones relacionadas