¿Alguien sabe cómo agregar otra carpeta a la canalización de activos en Rails 3.1?
Me gustaría servir de app/assets/fonts
la misma forma que app/assets/images
se sirve.
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 activos, en su archivo application.rb:
config.assets.paths << "#{Rails.root}/app/assets/fonts"
Sin embargo, dado que el camino anterior está bajo app/assets
, no tiene que agregarla explícitamente, solo necesita reiniciar su aplicación de rieles para que Sprockets pueda recogerla.
Tendrá que agregar explícitamente rutas que estén fuera de app/assets
, lib/assets
o vendor/assets
, y solo recuerde que, si bien Sprockets recoge nuevos archivos en carpetas que estaban presentes cuando se cargó su aplicación, en mi experiencia no recoge nuevas carpetas en las rutas de activos sin un reinicio.
config.assets.paths << "#{Rails.root}/app/assets/active_admin"
no está funcionando para mí. Sigo recibiendo un error al intentar ver una determinada página después de la implementación en la etapa de prueba de que el.js
archivo en esa carpeta no está compilado.Respuestas:
Andrew, en
app/assets/fonts
realidad ya está en su ruta de carga de activos, junto conimages
. Por lo tanto, puede apuntar al activo de la misma manera:<%= asset_path('/Ubuntu/Ubuntu-R-webfont.eot') %>
[1] o como quiera que haga referencia a sus imágenes.Me tomó un tiempo asimilar esto también. Sigo sin saber qué sucede si hay un archivo con el mismo nombre en
app/assets/fonts
yapp/assets/images
.[1] Suponiendo que tienes una fuente en
app/assets/fonts/Ubuntu/Ubuntu-R-webfont.eot
fuente
config.assets.paths << "#{Rails.root}/app/assets/fonts"
y funcionó. Creo que tiene razón en que/assets
se supone que todo lo que aparece a continuación se incluye automáticamente, pero por alguna razón para mí estaba dando 404 hasta que agregué la línea de arriba a miapplication.rb
archivo. Sin embargo, voy a aceptar su respuesta, porque creo que será correcta cuando se finalice el lanzamiento, y porque con este comentario agregado a cualquiera que lo lea puede resolverlo :)config.assets.paths
matriz es el archivo que se elige. Esto se puede evitar utilizando elasset_path()
asistente y especificando el directorio.Andrew, Jason, estuvieron 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"
fuente
Rails.root.join('app', 'assets', 'fonts')
Rails.root.join
debe ser la forma en que lo haga, para ser flexible en todas las plataformas.Creando
app/assets/images
yapp/assets/fonts
que se añadirá automáticamente a la ruta activos.Abra la consola de rieles después de crearlos y verifique con:
(
y
es un atajo para elyaml
método)fuente
Funciona sin agregar la ruta, pero tenga cuidado de usar 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 fuentefuente
Puedo confirmar que funciona sin agregar las nuevas rutas a la configuración en Rails 3.1.0.rc4 (y supuestamente superior). Reboté mi servidor, tú podrías hacer lo mismo.
fuente
Cree una
assets/fonts
carpeta y agregue alguna fuente en ella y use el tema en su archivo css de la siguiente manera@font-face { font-family: Sawasdee; src: url(Sawasdee.ttf); }
fuente