2013-12-09 16 views
6

Scenario: Ho un'applicazione Rails 4.0.0, distribuita con capistrano, che precompila le mie risorse sul mio server di produzione.Rails 4 non trova i caratteri nella produzione

Problema: Sto cercando di aggiungere un font e usarlo con @ font-face. Funziona localmente, ma non in produzione.

Messaggio di errore: "Impossibile caricare risorsa: il server ha risposto con uno stato di 404 (non trovato)"

I miei caratteri sono situati in app/attività/fonts/

I miei file rilevanti:

app/attività/fogli di stile/application.css.scss:

/* 
* This is a manifest file yada yada yada... 
* 
*= require bootstrap 
*= require_self 
*= require_tree . 
*/ 

@font-face { 
    font-family: 'stone_sansregular'; 
    src: url(font-path('stone_sans_regular-webfont.eot') + "?#iefix") format('embedded-opentype'), 
    url(font-path('stone_sans_regular-webfont.woff')) format('woff'), 
    url(font-path('stone_sans_regular-webfont.ttf')) format('truetype'), 
    url(font-path('stone_sans_regular-webfont.svg') + "#stone_sansregular") format('svg'); 
} 

config/application.rb:

config.assets.paths << Rails.root.join("app", "assets", "fonts") 

ho cercato risposte in diversi SO post e altre fonti, ma io non riesco a farlo bene. A proposito, non sto schierando su Heroku. Cosa mi manca? Apprezzo il vostro aiuto.

EDIT: Nella produzione, trovo i caratteri in cui presumo che dovrebbero essere: my-rails-app/corrente/public/@ attività/font

+0

È questa la vera estensione del file -> app/assets/stylesheets/application.css.scss.css? Dovrebbe essere solo .css.scss – Severin

+0

Oh scusa, no è solo .css.scss (modificato) – Majoren

+0

Mi chiedo, potrebbe avere qualcosa a che fare con l'hash MD5 che viene aggiunto ai nomi dei file dopo la compilazione? Perché nella console sembra un po 'come se cercasse di trovare il file senza quell'estensione, proprio come quando è in esecuzione localmente. – Majoren

risposta

2

Ho da poco fissato un problema simile una volta Mi sono reso conto che il mio file font-awesome.css non veniva effettivamente caricato nella produzione. Ho dovuto fare

*= require font-awesome.css 

invece di

@import "font-awsome.css"; 

nel mio application.css.scss manifesto.

Inoltre, come per il MD5 hash che viene aggiunto ai nomi dei file su, non sono sicuro se questo è un problema o no, ma ho finito per fare:

font-url('fontawesome-webfont.eot'); 

piuttosto che

url(font-path('fontawesome-webfont.eot') 

Quindi, se questo fosse un problema, sono abbastanza sicuro che l'uso di font-url lo gestirà correttamente.

+1

Questo ragazzo sa di cosa sta parlando! – jeffdill2

+0

'font-url' non è più disponibile. http://guides.rubyonrails.org/asset_pipeline.html#coding-links-to-assets – Chloe

Problemi correlati