web-dev-qa-db-fra.com

Ajouter un nouveau chemin d'accès aux ressources dans Rails 3.1

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.

78
Andrew

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

74
Jason L Perry

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"
43
Peter Ehrlich

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)

8
ocodo

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

3
montrealmike

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.

2
ragaskar

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);
}
1
S.M.Mousavi