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 )
aconfig/initializers/assets.rb
y reinicie su servidorapp / 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.