with rails precompiling initialize_on_precompile failed create compile asset app asset-pipeline ruby-on-rails-3.2

asset-pipeline - precompiling - rails 5 asset pipeline heroku



¿Por qué Rails no encuentra mis activos? (2)

Investigaciones adicionales sobre este tema dieron como resultado este artículo de SO:

application.css no se sirve como un activo

Parece

config.serve_static_assets = false

Es una configuración incorrecta siempre que mi aplicación Rails no se esté ejecutando detrás de Apache o nginx

Cuando se encuentra en modo de producción, parece que los rieles no pueden encontrar ningún activo precompilado del flujo de activos.

Estoy usando los rieles 3.2.0 y ruby ​​1.9.3 corriendo dentro de RVM en CentOS. Ningún servidor web adicional se está ejecutando junto con esta aplicación. La aplicación solo se actualizó recientemente para utilizar el flujo de activos, ya que originalmente era una aplicación de Rails 3.0.

despues de correr

rake assets:clean rake assets:precompile

Veo el contenido hash en público / activos, como es de esperar. Los hashes al final de los archivos coinciden con los que veo en la fuente de la página.

Sin embargo, en el tiempo de ejecución, esto es lo que veo para cada activo que Rails intenta atender:

Started GET "/assets/application-892c6227e631daf9a8e041b1d4d002ec.css" for 75.149.58.169 at 2012-03-14 11:42:43 -0700 ActionController::RoutingError (No route matches [GET] "/assets/application-892c6227e631daf9a8e041b1d4d002ec.css"):

No me refiero a la carpeta en la que se encuentra cada activo; Todas las referencias a los activos se parecen a estos:

//css: .class { background: url(asset.png) no-repeat; } //erb: <%= image_tag "asset.png" %> <%= link_to "page", :class => "class" %>

Configuración pertinente de la tubería de activos en production.rb:

config.serve_static_assets = false config.assets.enabled = true config.assets.compress = true config.assets.debug = false config.assets.compile = false config.assets.digest = true

Y por último, la configuración de activos de config / application.rb:

config.assets.enabled = true config.assets.version = ''1.0''

El usuario que inicia el proceso del servidor de rieles tiene permisos de lectura, escritura y ejecución en públicos / activos, por lo que no creo que sea un problema de permisos. ¿Me he perdido un paso de configuración?

Editar

Noté que no hay errores que indiquen que los activos no están precompilados, así que intenté acceder a una hoja de estilo desde la página web agregando "/assets/application-892c6227e631daf9a8e041b1d4d002ec.css" al final de la ruta del host:

http://www.myapp.com"/assets/application-892c6227e631daf9a8e041b1d4d002ec.css"

Esto funcionó y la hoja de estilo se abrió.


Tuve el mismo problema, pero observo que su hoja de estilo apunta a la versión de los archivos sin huellas dactilares ni caché. Si está utilizando la canalización de activos, para poder aprovecharla, debe utilizar los ayudantes que apuntan a la versión de los archivos con huellas dactilares y en caché. Para hacer esto, deberás incrustar erb en tu archivo css, o usar sass.

Incorrecto:

.class { background: url(asset.png) no-repeat; }

Correcto (usa sass):

.class background: image-url(''asset.png'') no-repeat

Para obtener más información, consulte aquí: http://guides.rubyonrails.org/asset_pipeline.html#coding-links-to-assets

Si no le importan los problemas de rendimiento, puede utilizar las versiones no almacenadas en caché hasta que actualice a Rails 4 o Rails 3.2.16, porque esas versiones introducen cambios de última hora que lo obligan a usar el canal de activos (y su correspondiente sintaxis). Si no usa la nueva sintaxis, las versiones no almacenadas en caché no funcionarán en absoluto en la producción.