the rails present not logo from asset application ruby-on-rails-3.1 asset-pipeline

ruby-on-rails-3.1 - rails - the asset logo png is not present in the asset pipeline



Rieles 3.1: determinar si el activo existe (4)

¿Hay una forma integrada de determinar si un activo existe sin recurrir a File.exists?(File.join(Rails.root, "foo", "bar", "baz")) y que busca en las rutas de los activos.

Mi aplicación va y recupera imágenes de un servidor remoto en una cola de Resque; hasta que tengamos la imagen descargada quiero servir una imagen de marcador de posición. Actualmente estoy usando File.exists ... pero esto significa codificar de forma rígida una ruta, lo que apesta, o mirar a través de las rutas de activos configuradas. Parece que esto ya debería estar allí, pero no puedo encontrarlo en los documentos.



Dada una imagen en app/assets/images/lolshirts/theme/bg-header.png ,

Rails.application.assets.find_asset ''lolshirts/theme/bg-header.png'' => #> Sprockets::StaticAsset:0x80c388ec pathname="/Users/joevandyk/projects/tanga/sites/lolshirts/app/assets/images/lolshirts/theme/bg-header.png", mtime=2011-10-07 12:34:48 -0700, digest="a63cc84aca38e2172ae25de3d837c71a"> Rails.application.assets.find_asset ''notthere.png'' => nil


Dado que esta sigue siendo la pregunta principal cuando se busca en Google, y como la respuesta aceptada no funciona correctamente en la producción (al menos en algunos casos), aquí está la solución que me funciona (Rails 4.2.5.1):

def asset_exist?(path) if Rails.configuration.assets.compile Rails.application.precompiled_assets.include? path else Rails.application.assets_manifest.assets[path].present? end end

Esto se copia de este problema github


Ver esta respuesta: https://.com/a/8217598/549252

= Rails.application.assets.find_asset("my_asset.css").nil?