2

我有一个使用 web-app-theme gem 的基于 Rails 3.2.6 的应用程序。在生产中部署后,我在/var/log/apache2/error.log.

[Wed Jul 18 23:00:14 2012] [error] [client 50.53.58.188] Premature end of script headers: fonts, referer: https://xxx.xxx.xx.xxx
[ pid=8920 thr=139857209571072 file=ext/apache2/Hooks.cpp:819 time=2012-07-18 23:00:14.743 ]: The backend application (process 9474) did not send a valid HTTP response; instead, it sent nothing at all. It is possible that it has crashed; please check whether there are crashing bugs in this application.
[ pid=9474 thr=9488700 file=utils.rb:176 time=2012-07-18 23:00:14.744 ]: *** Exception ActionController::RoutingError in application (No route matches [GET] "/assets/fonts/museosans_500-webfont.svg") (process 9474, thread #<Thread:0x00000001219278>):
    from /usr/lib/ruby/gems/1.9.1/gems/actionpack-3.1.3/lib/action_dispatch/middleware/show_exceptions.rb:53:in `call'
    from /usr/lib/ruby/gems/1.9.1/gems/railties-3.1.3/lib/rails/rack/logger.rb:13:in `call'
    from /usr/lib/ruby/gems/1.9.1/gems/rack-1.3.6/lib/rack/methodoverride.rb:24:in `call'
    from /usr/lib/ruby/gems/1.9.1/gems/rack-1.3.6/lib/rack/runtime.rb:17:in `call'
    from /usr/lib/ruby/gems/1.9.1/gems/activesupport-3.1.3/lib/active_support/cache/strategy/local_cache.rb:72:in `call'
.....

我已将提到的文件museosans_500-webfont.svg放在app/assets/fonts/目录中。但是为什么我还是这个错误。对于其他资产,我也看到类似的错误,例如/assets/fonts/museosans_500-webfont.ttf等。

非常感谢任何反馈。谢谢。
——阿塔朗普

4

3 回答 3

0

我在集成 Katex 库时遇到了同样的问题。

问题是 Rails 的 Asset Pipeline 将资产编译到目录中,public/assets而不保留fontsor目录。imagesjavascript

所以当你在寻找的时候/assets/fonts/museosans_500-webfont.svg,它并不存在,那个字体已经被编译成/assets/museosans_500-webfont.svg.

要解决此问题,您有两种选择:

  1. 更新 CSS 或 JS 中的路径:

    /assets/fonts/museosans_500-webfont.svg

    变成

    /assets/museosans_500-webfont.svg

  2. 将字体放在fonts子目录中:

    如果您不想(或不能)更新 CSS 或 JS(例如,它是一个缩小的第三方库),那么您可以使用以下方法来确保存在一个public/assets/fonts包含所有字体的目录。

    只需将您的字体放在以下路径中:

    /assets/fonts/fonts/museosans_500-webfont.svg

    现在您的public/assets目录将包含一个fonts目录,并且您的 GET 请求会很高兴。

有关更多详细信息,请参阅此答案

于 2015-04-06T17:07:43.953 回答
0

您的 CSS / HTML 中的 url 似乎是错误的:

/assets/fonts/museosans_500-webfont.svg

您应该将其更改为:

/assets/museosans_500-webfont.svg

但是文件保留在app/assets/fonts目录中。

于 2013-07-26T14:14:54.870 回答
0

尝试将字体目录添加到 environment.rb 中的资产路径:

config.assets.enabled = true
config.assets.paths << "#{Rails.root}/app/assets/fonts"
于 2012-07-19T08:51:53.200 回答