the rails present not images asset ruby-on-rails ruby-on-rails-3 production-environment asset-pipeline sprockets

ruby-on-rails - rails - the asset is not present in the asset pipeline



"Require_tree argument debe ser un directorio" carriles 3.1.1 precompilar activos (2)

He estado dando vueltas y vueltas aquí tratando de hacer que los activos se compilen previamente en mi servidor de producción (instalación simple de ubuntu con ruby ​​1.9.2 y Rails 3.1.1, y probado 3.1.2RC con los nuevos piñones 2.10 también) .

"El argumento require_tree debe ser un directorio". He visto otros problemas relacionados con esto en la pila, pero la situación no es exactamente la misma y ninguna de las soluciones propuestas me ha ayudado, como crear un archivo de resguardo en la subcarpeta y, a continuación, hacer referencia relativamente solo en ese momento. Sin suerte.

Y para colmo, por supuesto, esto funciona perfectamente en todas las máquinas de desarrollo (mac, pero con configuraciones idénticas, incluso la gema correspondiente para la gema), en el entorno de producción.

Aquí está mi /app/assets/javascript/application.js:

//= require ../../views/app/manifest //= require_self

No hay mucho para eso. Básicamente solo apuntando al archivo manifiesto real para el área de la aplicación (sí, no exactamente en caja, vails Rails pero ...)

Aquí está mi stub manifiesto en mis vistas / admin (/views/app/manifest.coffee.js):

# = require ./app # = require_tree ./models # = require_directory ./views <- or using require_directory, either would work fine.

Como dije, en dev env, no hay problemas en absoluto. El inventario de activos se compila sobre la marcha y todo es genial. Ejecución de activos de rake: precompilación en la máquina de desarrollo, sin problemas.

Lo envío a la máquina de producción y ejecuto exactamente el mismo código y obtengo:

El argumento require_tree debe ser un directorio

Tiene que haber alguna pequeña diferencia que no estoy viendo. ¡Cualquier ayuda sería muy apreciada!


Me encontré con este mismo problema exacto que describiste. Mi servidor de producción era Heroku (pila de cedro). En mi caso, el problema era que uno de mis:

require_tree ./mobile

Estaba apuntando a un directorio legítimo, pero este directorio no tenía archivos. En dev no importaba, pero algo sobre la configuración de producción estaba dando como resultado el error, "require_tree argument debe ser un directorio".

Espero que eso ayude.


require_tree debe tener una carpeta existente, pero git no almacena las carpetas vacías, por lo tanto, cuando implemente en heroku, esas carpetas vacías no existen.

Un truco es agregar un archivo .keep vacío a las carpetas que desea conservar.