2013-12-09 46 views
6

场景:我有一个Rails 4.0.0应用程序,使用capistrano进行部署,它将我的资产预编译在我的生产服务器上。Rails 4无法在生产中找到字体

问题:我正在尝试添加字体并将其与@ font-face一起使用。它适用于本地,但不适用于生产。

错误消息: “无法加载资源:服务器与404状态(未找到)回答”

我的字体位于应用程序/资产/字体/

我的相关文件:

应用程序/资产/样式表/ 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") 

我一直在寻求答案的几个SO帖子和其他来源,但我似乎无法得到它的权利。顺便说一句,我没有在Heroku上部署。我错过了什么?我感谢您的帮助。

编辑:在生产中,我发现,我认为他们应该是字体:我-Rails的应用/电流/公/ @资产/字体

+0

这是真正的文件扩展名 - > app/assets/stylesheets/application.css.scss.css?它应该只是.css.scss – Severin

+0

哦,对不起,不,它只是.css.scss(编辑) – Majoren

+0

我想知道,编译后可以与添加到文件名称的MD5哈希有什么关系?因为在控制台中它看上去像试图找到没有扩展名的文件,就像在本地运行一样。 – Majoren

回答

2

我最近刚刚修正了类似的问题,一旦我意识到我的font-awesome.css文件实际上并未在生产中加载。我不得不这样做

*= require font-awesome.css 

,而不是

@import "font-awsome.css"; 

在我application.css.scss清单。

此外,作为该被添加到文件名MD5哈希值,我不知道这是一个问题或没有,但我落得这样做:

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

而不是

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

所以,如果这是一个问题,我相当肯定使用font-url将妥善处理它。

+1

这个人知道他在说什么! – jeffdill2

+0

'font-url'不再可用。 http://guides.rubyonrails.org/asset_pipeline.html#coding-links-to-assets – Chloe