我使用基于Rails 3.2.6的应用程序使用web-app-theme gem。在生产中部署之后,我在/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
等其他资产的类似错误。
非常感谢任何反馈。谢谢。
- Atarangp
答案 0 :(得分:0)
尝试将fonts dir添加到environment.rb中的资源路径:
config.assets.enabled = true
config.assets.paths << "#{Rails.root}/app/assets/fonts"
答案 1 :(得分:0)
CSS / HTML中的网址似乎有误:
/assets/fonts/museosans_500-webfont.svg
您应该将其更改为:
/assets/museosans_500-webfont.svg
但保留该文件位于app/assets/fonts
目录。
答案 2 :(得分:0)
在集成Katex库时遇到了同样的问题。
问题是Rails的Asset Pipeline将资产编译到public/assets
目录中,而不保留fonts
或images
或javascript
目录。
因此,当您查找/assets/fonts/museosans_500-webfont.svg
时,它不存在,该字体已编译为/assets/museosans_500-webfont.svg
。
要解决此问题,您有两种选择:
更新CSS或JS中的路径:
/assets/fonts/museosans_500-webfont.svg
成为
/assets/museosans_500-webfont.svg
将字体放在fonts
子目录中
如果您不想(或不能)更新CSS或JS(例如,它是一个缩小的第三方库),那么您可以使用以下方法来确保有{{1包含所有字体的目录。
只需将您的字体放在以下路径中:
public/assets/fonts
现在,您的/assets/fonts/fonts/museosans_500-webfont.svg
目录将包含public/assets
目录,您的GET请求将会很满意。
有关详细信息,请参阅this answer。