2013-12-09 37 views
6

Mam aplikację Rails 4.0.0, wdrażającą za pomocą capistrano, która prekompiluje moje zasoby na moim serwerze produkcyjnym.Szyny 4 nie mogą znaleźć czcionek w produkcji

Problem: Próbuję dodać czcionkę i używać jej z @ font-face. Działa lokalnie, ale nie w produkcji.

Komunikat o błędzie: "Nie udało się załadować zasób: serwer odpowiedział ze statusem 404 (nie znaleziono)"

Moi czcionki znajdują się w app/aktywów/czcionki/

Moi odpowiednie pliki:

app/assets/StyleSheets/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/environment.rb:

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

Szukałem odpowiedzi na kilka stanowisk SO i inne źródła, ale nie wydaje się uzyskać to prawo. Btw, nie wdrażam na Heroku. czego mi brakuje? Doceniam twoją pomoc.

EDIT: W produkcji znajdę fonty gdzie zakładają powinny one być: moi szynach-app/aktualne/public/@ aktywa/czcionek

+0

Czy to jest prawdziwe rozszerzenie pliku -> app/assets/stylesheets/application.css.scss.css? To powinno być tylko .css.scss – Severin

+0

Och, przepraszam, nie, to tylko .css.scss (edytowane) – Majoren

+0

Zastanawiam się, czy to może mieć coś wspólnego z hash MD5, który jest dodawany do nazw plików po kompilacji? Ponieważ w konsoli wygląda na to, że próbuje znaleźć plik bez tego rozszerzenia, tak jak podczas uruchamiania lokalnie. – Majoren

Odpowiedz

2

Właśnie niedawno ustalone podobny problem raz Zrozumiałem, że mój plik font-awesome.css nie został załadowany do produkcji. Musiałem zrobić

*= require font-awesome.css 

zamiast

@import "font-awsome.css"; 

w moim application.css.scss oczywistego.

Ponadto, jak dla mieszania MD5, że zostanie dodana do nazwy pliku, nie jestem pewien, czy to jest problem czy nie, ale skończyło się robi:

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

zamiast

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

Więc jeśli to był nawet problem, jestem dość pewny, że używając font-url zrobię to poprawnie.

+1

Ten facet wie, o czym mówi! – jeffdill2

+0

'font-url' nie jest już dostępny. http://guides.rubyonrails.org/asset_pipeline.html#coding-links-to-assets – Chloe