Quelqu'un sait-il comment ajouter un autre dossier au pipeline d'actifs dans Rails 3.1?
J'aimerais servir app/assets/fonts
de la même façon app/assets/images
est servi.
Mise à jour: 5-7-201
Juste pour ajouter quelques précisions aux futures personnes qui trouveront cette question pour ajouter explicitement un chemin d'accès aux ressources, dans votre fichier application.rb:
config.assets.paths << "#{Rails.root}/app/assets/fonts"
Cependant, puisque le chemin ci-dessus est sous app/assets
vous n'avez pas besoin de l'ajouter explicitement, il vous suffit de redémarrer votre application Rails pour que Sprockets puisse la récupérer.
Vous devrez ajouter explicitement des chemins extérieurs à app/assets
, lib/assets
, ou vendor/assets
, et rappelez-vous simplement que si Sprockets récupère de nouveaux fichiers dans des dossiers qui étaient présents lors du chargement de votre application, d'après mon expérience, il ne récupère pas de nouveaux dossiers dans les chemins d'accès aux actifs sans redémarrage.
Andrew, app/assets/fonts
Est en fait déjà dans votre chemin de chargement des actifs, avec images
. Vous pouvez donc simplement pointer vers l'élément de la même manière: <%= asset_path('/Ubuntu/Ubuntu-R-webfont.eot') %>
[1] ou comment vous référencez vos images.
Il m'a fallu un certain temps pour envelopper ma tête aussi. Je ne sais toujours pas ce qui se passe s'il y a un fichier du même nom dans app/assets/fonts
Et app/assets/images
.
[1] En supposant que vous avez une police à app/assets/fonts/Ubuntu/Ubuntu-R-webfont.eot
Andrew et Jason sont d'accord. FWIW J'ai mis cela dans ma config/application.rb à côté de
# Enable the asset pipeline
config.assets.enabled = true
config.assets.paths << "#{Rails.root}/app/assets/fonts"
En créant app/assets/images
et app/assets/fonts
ils seront automatiquement ajoutés au chemin des ressources.
Ouvrez Rails console après les avoir créés et vérifiez avec:
y Rails.application.config.assets.paths
(y
est un raccourci pour la méthode yaml
)
Cela fonctionne sans ajouter le chemin d'accès, mais veillez à utiliser un nom de fichier valide pour l'actif.
url("#{asset_path 'fontawesome-webfont.eot'}?#iefix") format('embedded-opentype'),
...
url("#{asset_path 'fontawesome-webfont.svg'}#FontAwesome") format('svg');
Par exemple, dans ce cas, laissez ?#iefix
en dehors du nom du fichier de police
Je peux confirmer que cela fonctionne sans ajouter les nouveaux chemins d'accès à la configuration dans Rails 3.1.0.rc4 (et probablement supérieur). J'ai rebondi sur mon serveur, vous pourriez faire de même.
Créer assets/fonts
dossier et ajoutez une police dessus et utilisez le thème sur votre fichier css comme suit
@font-face {
font-family: Sawasdee;
src: url(Sawasdee.ttf);
}