2014-02-11 100 views
1

使用Rails 4自定义字体不能在heroku中工作

我读过很多关于如何让我的自定义字体在heroku中工作的线程。他们以开发模式在本地工作,但是当推到heroku时,他们没有出现。

我@字体面位于主样式表

@font-face { 
    font-family: 'caviar_dreamsregular'; 
    src: font-url('caviardreams-webfont.eot'); 
    src: font-url('caviardreams-webfont.eot?#iefix') format('embedded-opentype'), 
     font-url('caviardreams-webfont.woff') format('woff'), 
     font-url('caviardreams-webfont.ttf') format('truetype'), 
     font-url('caviardreams-webfont.svg#caviar_dreamsregular') format('svg'); 
    font-weight: normal; 
    font-style: normal; 

} 

application.rb中

config.assets.paths << "#{Rails.root}/app/assets/fonts" 

我已经预编译资产

rake assets:precompile 

在Heroku的日志中没有错误。

无法理解这一点,有没有人有任何建议?

UPDATE:

访问我的手机上的网站和字体的作品...清除缓存的计算机上,仍不能正常工作的计算机上。

回答

6

这可能归结为几个问题;最值得注意的是,我会建议你不使用动态资产路径:


指纹

Rails使用asset fingerprinting当您预编译的资产

这样做的原因是为了让每个资产被单独分配给系统,从而提供更强大的结构(或某物)。基本上,它增加了一个MD5哈希您的资产文件名末尾:

global-908e25f4bf641868d8683022a5b62f54.css 

路径

由于动态指纹使所有预编译的资产有不同的名称,你需要使用Rails的动态路径助手:

#app/assets/stylesheets/application.css.scss 
@font-face { 
    font-family: 'caviar_dreamsregular'; 
    src: asset-url('caviardreams-webfont.eot'); 
    src: asset-url('caviardreams-webfont.eot?#iefix') format('embedded-opentype'), 
     asset-url('caviardreams-webfont.woff') format('woff'), 
     asset-url('caviardreams-webfont.ttf') format('truetype'), 
     asset-url('caviardreams-webfont.svg#caviar_dreamsregular') format('svg'); 
    font-weight: normal; 
    font-style: normal; 
} 

您需要使用动态样式表引擎,如SASS来处理dy namic路径

+1

这工作大声笑。 – Seal

+1

我的问题是我有供应商/资产/字体中的字体(甚至添加了'config.assets.paths << Rails.root.join('vendor','assets','fonts')'我无法让它工作)。一旦我将字体移动到应用程序/资产/字体并重新部署,他们开始使用Heroku! – Nick