Problema del pasajero: “no hay tal archivo para cargar” – / config / environment

He estado investigando este y encontré referencias a problemas similares aquí y allá, pero ninguno de ellos ha llevado a una solución todavía. Instalé pasajero (2.2.11) y nginx (0.7.64) y cuando comienzo las cosas y encuentro una URL de Rails, aparece una página de error que me informa de un error de carga:

no hay tal archivo para cargar – / ruta / a / app / config / environment

Por lo que he encontrado en línea, esto parece ser una especie de error de usuario / permisos, pero he probado todas las soluciones lógicas: me he asegurado de que /config/environment.rb no sea propiedad de root, sino de un usuario de webapp. He intentado configurar passenger_default_user, he intentado desactivar passenger_user_switching off. Incluso he intentado configurar el usuario nginx, aunque eso no debería importar mucho. He obtenido algunos resultados diferentes, pero nada ha funcionado. Espero que alguien tenga la combinación mágica de configuraciones y permisos para esto. Puedo intentar retroceder a una versión anterior de Passenger, porque nunca he tenido este problema antes; Ha pasado un poco desde que configuré el Pasajero.

Gracias por cualquier sugerencia.

EDITADO: Vea a continuación la respuesta que encontré.

Naturalmente, solo me llevó a publicar la pregunta para encontrar la respuesta. Con el fin de proporcionar información para cualquier persona que busque este problema, publicaré algunos detalles aquí.

Las líneas relevantes del nginx.conf:

usuario www-data; # para que nginx no se ejecute como root

user_default_user www-data; # igualmente para el pasajero

root / opt / foo / app / current / public;

La clave en este punto es asegurarse de que los archivos de la aplicación sean propiedad de www-data, en particular config / environment.rb porque, aparentemente, Passenger mira a su propietario para determinar a quién ejecutar. Esto podría significar que la entrada passenger_default_user es irrelevante? Pero es bueno tenerlo allí como documentación de la intención de todos modos, tal vez.

Finalmente, asegúrese de que todos los directorios principales de su aplicación sean accesibles a través de www-data; en mi caso, la configuración predeterminada del sistema dejó un directorio 0700, que no pude ver.

Pasajero moderno prefiere Rack to Rails. Si tiene un config.ru en su aplicación Rails, Passenger intentará cargarlo como una aplicación de Rack. Esto puede estar causando problemas. En particular, su mensaje de error se refiere a config/environment – note la falta de la extensión .rb típica en una aplicación de Rails.

Intente mover config.ru fuera del camino si existe.