生产环境下Rails 4找不到字体

6
场景: 我有一个使用Rails 4.0.0开发的应用程序,使用capistrano进行部署,并在生产服务器上预编译我的资源。 问题:我尝试添加字体并使用@font-face。 它在本地工作,但在生产中不起作用。 错误信息:“无法加载资源:服务器响应状态为404(未找到)”
我的字体位置在app/assets/fonts/ 相关文件:

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/application.rb:

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

我在多个SO帖子和其他来源中寻找答案,但似乎无法得到正确的结果。顺便说一下,我没有部署在Heroku上。请问我错过了什么?感谢你的帮助。

编辑:在生产环境中,我在这里找到了字体:my-rails-app/current/public/@assets/fonts


这是真正的文件扩展名吗 -> app/assets/stylesheets/application.css.scss.css?它应该只是.css.scss。 - Severin
哦,抱歉,不是正常的.css文件,而是.css.scss文件(已编辑)。 - Majoren
我在想,这是否与编译后添加到文件名中的MD5哈希有关呢?因为在控制台中,它似乎尝试查找没有该扩展名的文件,就像在本地运行时一样。 - Majoren
@Majoren 你找到解决方案了吗? - Tony Beninate
1个回答

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
font-url已不再可用。http://guides.rubyonrails.org/asset_pipeline.html#coding-links-to-assets - Chloe

网页内容由stack overflow 提供, 点击上面的
可以查看英文原文,
原文链接