2014-04-04 19 views
6

Ho installato un tema bootstrap e tutto funziona bene a livello locale. Tuttavia, quando sono andato a spingere su heroku, la mia app non ha trovato i caratteri. Ho precompilato le risorse e premuto su heroku, ma senza icone.app rails non trova icone fontawesome su heroku

Così, ho fatto il mio ambiente di sviluppo come Heroku con quanto segue in development.rb:

config.assets.debug = true 

    # Disable Rails's static asset server (Apache or nginx will already do this). 
    config.serve_static_assets = true 

    # Compress JavaScripts and CSS. 
    config.assets.js_compressor = :uglifier 
    # config.assets.css_compressor = :sass 

    # Do not fallback to assets pipeline if a precompiled asset is missed. 
    config.assets.compile = false 

    # Generate digests for assets URLs. 
    config.assets.digest = true 

ora, il mio ambiente dev non riesce a trovare i file di font. I file di font sono in due sedi:

app/assets/fonts/fontawesome-webfont.* 
public/assets/fontawesome-webfont.* 

tuttavia, ottengo questo errore:

ActionController::RoutingError (No route matches [GET] "/assets/fontawesome-webfont.svg"): 

ecco come essi vengono caricati dal file css precomplied (application-xxxxxxxxx.css):

@font-face { 
    font-family: 'FontAwesome'; 
    src: url('fontawesome-webfont.eot?v=4.0.3'); 
    src: url('fontawesome-webfont.eot?#iefix&v=4.0.3') format('embedded-opentype'), url('fontawesome-webfont.woff?v=4.0.3') format('woff'), url('fontawesome-webfont.ttf?v=4.0.3') format('truetype'), url('fontawesome-webfont.svg?v=4.0.3#fontawesomeregular') format('svg'); 
    font-weight: normal; 
    font-style: normal; 
} 

cosa sto facendo di sbagliato?

risposta

3

Mantiene l'ambiente di sviluppo come era. Abbiamo bisogno di precompilare gli asset solo in modalità produzione.

qui, spero è necessario aggiungere:

Application.rb

# Enable the asset pipeline 
config.assets.enabled = true 
config.assets.paths << "#{Rails.root}/app/assets/fonts" 

e aggiornamento:

@font-face { 
    font-family: 'FontAwesome'; 
    src: url('/assets/fontawesome-webfont.eot?v=4.0.3'); 
    src: url('/assets/fontawesome-webfont.eot?#iefix&v=4.0.3') format('embedded-opentype'), 
    url('/assets/fontawesome-webfont.woff?v=4.0.3') format('woff'), 
    url('/assets/fontawesome-webfont.ttf?v=4.0.3') format('truetype'), 
    url('/assets/fontawesome-webfont.svg?v=4.0.3#fontawesomeregular') format('svg'); 
    font-weight: normal; 
    font-style: normal; 
} 

Quindi eseguire rake assets:precompile e spingerlo a heroku. Che possa andare bene.

+0

ho aggiunto quella riga di codice e precompilato di nuovo. Non sembra che faccia nulla. Ottengo sempre lo stesso errore. –

+0

sei sicuro che dovrei puntare alla cartella app/assets e non alla cartella public/assets? –

+0

Ehi la riga sopra in application.rb serve per includere i caratteri nei percorsi degli asset per poterli prendere per la precompilazione in modalità produzione. Quando si precompilano gli asset in produzione, tutti andranno alla cartella "public/assets". È possibile modificare il percorso predefinito utilizzando l'opzione config.assets.prefix. –

2

Ho provato ad utilizzare asset-url, invece di URL mettere file appropriati in attività/font e ha funzionato:

@font-face{ 
    font-family: 'Font-Awesome'; 
    src: asset-url('font-awesome.eot'); 
    src: asset-url('font-awesome.eot?#iefix') format('embedded-opentype'), 
    asset-url('font-awesome.svg') format('svg'), 
    asset-url('font-awesome.woff') format('woff'); 
    font-weight: normal; 
    font-style: normal; 
} 
12

La soluzione più semplice per me era utilizzare il CDN descritto su Font Awesome "get started" page.

Eliminare qualsiasi copia locale dei file di fogli di stile e di carattere, e appena messo questo nella testa:

<link href="//maxcdn.bootstrapcdn.com/font-awesome/4.1.0/css/font-awesome.min.css" rel="stylesheet"> 

(aggiornata al 2014/07/07, vedi link qui sopra per la maggior parte di rilascio recente)

0

fare a seguito delle modifiche

@font-face{ 
    font-family:'FontAwesome'; 
    src:font_url('font/fontawesome-webfont.eot?v=3.0.1'); 
    src:font_url('font/fontawesome-webfont.eot?#iefix&v=3.0.1') format('embedded-opentype'), 
    font_url('font/fontawesome-webfont.woff?v=3.0.1') format('woff'), 
    font_url('font/fontawesome-webfont.ttf?v=3.0.1') format('truetype'); 
    font-weight:normal; 
    font-style:normal 

}

il lavoro per me

2

Ho semplicemente ripulito la mia cartella public/assets e ho precompilato di nuovo le risorse. Spinto a heroku ed et voilà! Ha funzionato è piaciuto un fascino.C'erano molti file ripetitivi e le risorse non erano state aggiornate. Quindi ha dovuto pulire. Ho provato questo quando nessuno dei metodi sopra sembrava funzionare per me.

Nota: Sono su, Rails - 4.1.6 rubino - 2.1.3 di font-awesome-rails - 4.2.0.0

Speranza che aiuta chi viene a cercare la correzione giusta!

+0

si signore sono fantastici! –

+0

Contento che abbia funzionato anche per te. – Ritikesh

1

Ho avuto lo stesso identico problema con Rails 4.2 e Font Awesome gem 'font-awesome-rails'.

Ho dovuto usare asset-path (dato che sto usando sass, ma presumo che anche asset-url funzioni) nella dichiarazione @ font-face.

Assicurarsi che si compila per la produzione e non di sviluppo o di qualche altro ambiente:

RAILS_ENV=production bundle exec rake assets:precompile 

Ecco le risorse che mi hanno aiutato:

http://anotheruiguy.roughdraft.io/7379570-custom-web-fonts-and-the-rails-asset-pipeline

https://github.com/concerto/concerto/issues/518 (Il commento di augustf)