Heroku Rails asset pipeline ne parvient pas à précompiler après avoir ajouté une police

j'essaie d'ajouter une police à mon application Rails c'est ce que j'ai fait:

ajouté des polices de caractères à:

-app
--assets
---fonts

SCSS:

@font-face {
  font-family: LigatureSymbols;

  src: font-url('LigatureSymbols211.eot');
  src: local('LigatureSymbols'),
       font-url('LigatureSymbols211.eot?#iefix') format('embedded-opentype'),
       font-url('LigatureSymbols211.woff') format('woff'),
       font-url('LigatureSymbols211.ttf') format('truetype'),
       font-url('LigatureSymbols211.svg#LigatureSymbols') format('svg');

  font-weight: normal;
  font-style: normal;
}

production.rb :

config.assets.paths << Rails.root.join('app', 'assets', 'fonts')
config.assets.precompile += %w( .svg .eot .woff .ttf )

mais quand j'appuie sur mon serveur de production Heroku je reçois ceci:

-----> Preparing app for Rails asset pipeline
       Running: rake assets:precompile
       I, [2013-05-06T06:21:07.804043 #2036]  INFO -- : Writing /tmp/build_2snusxy9gm4d7/public/assets/LigatureSymbols211-c5b7db18fa0fcd910e92fee751776047.eot
       I, [2013-05-06T06:21:07.809822 #2036]  INFO -- : Writing /tmp/build_2snusxy9gm4d7/public/assets/LigatureSymbols211-09ff8be41a6bee98c834e9a278bb8b28.otf
       I, [2013-05-06T06:21:07.812685 #2036]  INFO -- : Writing /tmp/build_2snusxy9gm4d7/public/assets/LigatureSymbols211-1f682b1be252dbf6182d606a185b603f.svg
       I, [2013-05-06T06:21:07.819262 #2036]  INFO -- : Writing /tmp/build_2snusxy9gm4d7/public/assets/LigatureSymbols211-9e88765b872185b22e519da056cba9f0.ttf
       I, [2013-05-06T06:21:07.829518 #2036]  INFO -- : Writing /tmp/build_2snusxy9gm4d7/public/assets/LigatureSymbols211-a2d90ca6deff46bfcf9cade63d4902ce.woff
       I, [2013-05-06T06:21:07.838351 #2036]  INFO -- : Writing /tmp/build_2snusxy9gm4d7/public/assets/rails-5f9b3f343d9831cbf50b9bc980faf39b.png
       I, [2013-05-06T06:21:17.072501 #2036]  INFO -- : Writing /tmp/build_2snusxy9gm4d7/public/assets/application-6af5b81b9fcc820f1d43b4135f00317e.js
       rake aborted!
       undefined method `[]' for nil:NilClass
       (in /tmp/build_2snusxy9gm4d7/app/assets/stylesheets/application.css)

j'ai essayé d'ajouter une ligne required dans mon application.css mais ça ne marcherait pas non plus.

EDIT:

je peux accéder à localhost:5000/assets/LigatureSymbols-2.11.eot sur ma machine dev lors de l'exécution du serveur. Je ne sais pas si cela pourrait aider à réduire ce qui va mal

EDIT 2:

le code fonctionne avec la police SCSS commentée, y a-t-il une erreur de syntaxe?

EDIT 3:

C'est au sommet de la pile de traces:

.../sprockets-2.9.2/lib/sprockets/sass_functions.rb:63:in `sprockets_context'
.../sprockets-2.9.2/lib/sprockets/sass_functions.rb:42:in `font_url'

y a-t-il un problème avec mes appels font-url ?

EDIT 4:

supprime les tirets des noms de fichiers de police et change scss pour refléter, mais la même erreur persiste

EDIT 5:

CSS généré sur la machine locale:

@font-face {
  font-family: LigatureSymbols;
  src: font-url("LigatureSymbols211.eot");
  src: local("LigatureSymbols"), font-url("LigatureSymbols211.eot?#iefix") format("embedded-opentype"), font-url("LigatureSymbols211.woff") format("woff"), font-url("LigatureSymbols211.ttf") format("truetype"), font-url("LigatureSymbols211.svg#LigatureSymbols") format("svg");
  font-weight: normal;
  font-style: normal; }
5
demandé sur Michael Johnston 2013-05-06 08:06:58

4 réponses

je l'ai trouvé! Chose la plus étrange... peut-être un bug dans le SASS.

si je mets le code directement dans le fichier home.css.scss qui était requis dans mon application.css , l'erreur se produirait.

de plus, si je place la police SCSS dans un fichier séparé ( font.scss ) et @import "font" , cela soulèvera également une erreur.

Seulement si je font.scss fichier dans mon application.css est-ce que le pipeline de l'actif passerait.

il n'a pas d'importance si j'ai utilisé font-url(...) vs asset-url(...,font) vs url(asset-path(...,font)) ils fonctionnent tous quand la police a été incluse via un =require dans le application.css

"
4
répondu Michael Johnston 2013-05-08 05:28:32

supprimer les tirets. Le pipeline assets utilise des traits d'Union pour prendre les empreintes digitales des actifs et le fait d'avoir des traits d'Union dans les chemins de police cause des problèmes.

2
répondu John 2013-05-06 06:11:46

j'ai exactement la même erreur quand j'ai oublié de changer l'extension du fichier de .les css .scss. Qu'il fixe pour moi.

2
répondu Peter Loomans 2016-01-22 19:21:17

ajoutez ceci à votre config/application.rb

config.assets.initialize_on_precompile = false

J'ai eu des problèmes similaires avec Heroku et cela a aidé parfois. Il vaut la peine d'essayer. Laissez-moi savoir si cela a aidé.

0
répondu fontno 2013-05-06 05:32:07