the rails present not images asset ruby-on-rails ruby asset-pipeline sprockets

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



Después de la actualización de gema: error de prueba con "El activo no se declaró precompilado en producción" (3)

Aunque la gente ha dado respuestas largas, sugiero una respuesta muy simple y concisa. Solo dirígete a

config / initializers / assets.rb y

Agregue la siguiente línea

Rails.application.config.assets.precompile + =% w ( style.css )

donde style.css puede ser reemplazado por cualquier nombre de archivo para css

Desde que actualicé varias gemas, todas las pruebas fallan con el error:

ActionView :: Template :: Error: el activo no se declaró precompilado en producción.

Agregue Rails.application.config.assets.precompile += %w( favicons/manifest.json.erb ) a config/initializers/assets.rb y reinicie su servidor

app / views / layouts / _faviconsheader.html.erb: 14: en _app_views_layouts__faviconsheader_html_erb__1320

app / views / layouts / application.html.erb: 21: en _app_views_layouts_application_html_erb__4340

El error parece referirse al _faviconsheader.html.erb parcial que incluye la línea:

<%= content_tag :link, nil, rel: :manifest, href: image_path("favicons/manifest.json.erb") %>

Este parcial se carga en application.html.erb : <%= render partial: ''layouts/faviconsheader'' %> .

¿Alguna idea de qué está causando este error y qué hacer? Antes de la actualización de gema pasaron todas las pruebas.

Yo uso Rails 4.2.5. Una de las gemas actualizadas fue sprockets (piñones actualizados a la versión 3.5.2). Leí algo en github sobre los piñones 4 que tienen un problema, pero no estoy usando la versión 4.

PD Incluso si agrego Rails.application.config.assets.precompile += %w( favicons/manifest.json.erb ) a config/initializers/assets.rb el error persiste. Pero incluso si eso hubiera funcionado, hubiera querido entender por qué ha surgido este problema, sin ningún cambio, excepto la actualización de algunas gemas.


Tengo un error similar. No modifiqué assets.rb ni nada, simplemente reinicie mi servidor y ya no haya ningún error.

ActionView :: Template :: Error (No se declaró que el activo estaba precompilado en producción. Agregue Rails.application.config.assets.precompile += %w( rails.png ) a config/initializers/assets.rb y reinicie su servidor) : 10: <% = link_to "¡Regístrese ahora!", "#", Clase: "btn btn-lg btn-primary"%> 11: 12: 13: <% = link_to image_tag ("rails.png", alt : "Rails logo"), 14: '' http://rubyonrails.org/ > app / views / static_pages / home.html.erb: 13: en `_app_views_static_pages_home_html_erb___1806898863626708249_70312070486240 ''


Larga respuesta + explicación

Creo que la solución correcta es agregar el archivo a los recursos precompilados, tal como lo recomienda el mensaje de error. Quizás eso no solucione el problema, ya que tiene un archivo erb que debe procesarse en tiempo de ejecución. Me imagino que si el archivo era un archivo json estático, entonces aún no experimentaría el problema después de agregarlo a los recursos precompilados.

Cuando utiliza el asistente de image_path , Sprockets está asumiendo que tiene un activo estático. El hecho de que su aplicación no generó errores antes de sprockets-rails 3.0 es algo sorprendente. Esta nueva versión está haciendo un mejor trabajo, al parecer, en la aplicación de los estándares. (También parece que hay otros problemas con 3.0 que podrían actualizarse en breve)

Si necesita tener erb dentro del manifiesto, sería una buena práctica usar un helper de ruta en lugar de image_path o asset_path para obtener el url. Esto requeriría que agregue una ruta de manifiesto a su archivo config/routes.rb y renderice el archivo json a través de una acción de controlador. El archivo de vista sería su manifiesto .erb .

Respuesta corta

Esto comenzó a bundler update después de hacer una bundler update que cambió mi versión de bundler update sprockets-rails de 2.3.3 a 3.0.0. Una solución simple es revertir los sprockets-rails a la versión 2.3.3 en su Gemfile y ejecutar la bundle install nuevamente:

gem ''sprockets-rails'', ''2.3.3''

Como comentario aparte: estaba experimentando este problema en el entorno de desarrollo y pude arreglarlo allí ejecutando rake assets:precompile . Lamentablemente, no pasó mi prueba.