ruby-on-rails - rails - the asset is not present in the asset pipeline
Agregue una nueva ruta de activo en Rails 3.1 (6)
Al crear app/assets/images
y app/assets/fonts
se agregarán automáticamente a la ruta de los activos.
Abra la consola de rieles después de crearlos y verifique con:
y Rails.application.config.assets.paths
( y
es un atajo para el método yaml
)
¿Alguien sabe cómo agregar otra carpeta a la canalización de activos en Rails 3.1?
Me gustaría servir app/assets/fonts
la misma manera en que se sirve app/assets/images
.
Actualización: 5-7-2013
Solo para agregar algunas aclaraciones para las personas futuras que encuentren esta pregunta para agregar explícitamente una ruta de recursos, en su archivo application.rb:
config.assets.paths << "#{Rails.root}/app/assets/fonts"
Sin embargo, dado que la ruta anterior se encuentra en app/assets
, no tiene que agregarla explícitamente, solo necesita reiniciar su aplicación de rieles para que Sprockets pueda recogerla.
Tendrá que agregar rutas explícitamente fuera de la app/assets
, lib/assets
o vendor/assets
, y solo recuerde que mientras Sprockets toma nuevos archivos en carpetas que estaban presentes cuando la aplicación se cargó, en mi experiencia no lo hace recoger nuevas carpetas en las rutas de los activos sin un reinicio.
Andrew, app/assets/fonts
ya está en su ruta de carga de activos, junto con las images
. De modo que puede apuntar al activo de la misma manera: <%= asset_path(''/Ubuntu/Ubuntu-R-webfont.eot'') %>
[1] o como quiera que esté haciendo referencia a sus imágenes.
Me tomó un tiempo para entender esto también. Todavía no sé qué sucede si hay un archivo con el mismo nombre en la app/assets/fonts
y app/assets/images
.
[1] Suponiendo que tienes una fuente en la app/assets/fonts/Ubuntu/Ubuntu-R-webfont.eot
Andrew, Jason, estuvo de acuerdo. FWIW puse esto en mi config / application.rb junto a
# Enable the asset pipeline
config.assets.enabled = true
config.assets.paths << "#{Rails.root}/app/assets/fonts"
Cree la carpeta assets/fonts
y agregue alguna fuente y use el tema en su archivo css de la siguiente manera
@font-face {
font-family: Sawasdee;
src: url(Sawasdee.ttf);
}
Funciona sin agregar la ruta, pero tenga cuidado de que esté utilizando un nombre de archivo válido para el activo.
url("#{asset_path ''fontawesome-webfont.eot''}?#iefix") format(''embedded-opentype''),
...
url("#{asset_path ''fontawesome-webfont.svg''}#FontAwesome") format(''svg'');
Por ejemplo, en este caso, deje ?#iefix
fuera del nombre del archivo de fuente
Puedo confirmar que funciona sin agregar las nuevas rutas a la configuración en Rails 3.1.0.rc4 (y presumiblemente más alto). Reboté mi servidor, podrías hacer lo mismo.