我正在尝试将 Fontawesome 包含在 Rails 4 应用程序中,但是这些资产并未进入资产管道。但是,字体并没有在生产中出现,我不知道为什么。
文件结构组织
我所有的资产都存储在其中,/assets/components
以便 Fontawesome 出现在:(/assets/components/font-awesome
它们位于不同的目录中,因为我使用的是 Bower)。
CSS清单文件:
# application.css.scss
/* ...
*= require bootstrap/dist/css/bootstrap
*= require font-awesome/css/font-awesome
*= require_self
*= require_tree .
*/
资产管道设置为预编译字体
# Version of your assets, change this if you want to expire all your assets
config.assets.version = '1.0'
config.assets.paths << Rails.root.join('vendor', 'assets', 'components')
# Adding Webfonts to the Asset Pipeline
config.assets.precompile << Proc.new { |path|
if path =~ /\.(eot|svg|ttf|woff|otf)\z/
true
end
}
我添加了预编译指令,以便根据这个问题对字体进行预编译
包括 Heroku 12 因子宝石
#gemfile
group :production do
gem "rails_12factor"
end
所以有什么问题?
当我推送到 Heroku 时,它显示应用程序正在请求文件但它们没有加载:
看看日志,这似乎是一个路由问题——我原以为可以提供字体,/assets/fonts
但它显然是在寻找/fonts
app[web.1]: Started GET "/fonts/fontawesome-webfont.ttf?v=4.0.1" for 86.161.231.181 at 2013-10-29 15:53:01 +0000
app[web.1]: Started GET "/fonts/fontawesome-webfont.ttf?v=4.0.1" for 86.161.231.181 at 2013-10-29 15:53:01 +0000
app[web.1]:
app[web.1]: ActionController::RoutingError (No route matches [GET] "/fonts/fontawesome-webfont.ttf"):
为什么资产没有得到服务
我对这一切有点困惑。为什么不提供这些字体?