我在Heroku收到以下错误:
ActionController::RoutingError (No route matches [GET] "/fonts/glyphicons-halflings-regular.ttf)
当服务器尝试从供应商资产中找到Bootstrap的halflings images时:
当我在本地使用Puma和Foreman运行应用程序时,它会正常工作,因为这些半身像会出现。
Heroku日志如下所示:
2015-02-24T06:15:45.302830+00:00 app[web.1]: source=rack-timeout id=983308e6-3d6f-494b-b8e1-f37b39b14d42 wait=11ms timeout=20000ms service=2ms state=completed
2015-02-24T06:15:45.302416+00:00 app[web.1]: vendor/bundle/ruby/2.0.0/gems/puma-2.11.1/lib/puma/server.rb:375:in `process_client'
2015-02-24T06:15:45.304253+00:00 heroku[router]: at=info method=GET path="/fonts/glyphicons-halflings-regular.woff" host=fathomless-sands-8666.herokuapp.comrequest_id=983308e6-3d6f-494b-b8e1-f37b39b14d42 fwd="212.149.201.185" dyno=web.1 connect=6ms service=6ms status=404 bytes=1531
2015-02-24T06:15:45.506425+00:00 heroku[router]: at=info method=GET path="/fonts/glyphicons-halflings-regular.ttf" host=fathomless-sands-8666.herokuapp.comrequest_id=41275bad-2ed7-4cfd-89c5-d223b6063d62 fwd="212.149.201.185" dyno=web.1 connect=28ms service=37ms status=404 bytes=1531
2015-02-24T06:15:45.476848+00:00 app[web.1]: Started GET "/fonts/glyphicons-halflings-regular.ttf" for 212.149.201.185 at 2015-02-24 06:15:45 +0000
2015-02-24T06:15:45.478340+00:00 app[web.1]:
2015-02-24T06:15:45.478344+00:00 app[web.1]: ActionController::RoutingError (No route matches [GET] "/fonts/glyphicons-halflings-regular.ttf"):
2015-02-24T06:15:45.478347+00:00 app[web.1]: vendor/bundle/ruby/2.0.0/gems/actionpack-4.0.2/lib/action_dispatch/middleware/debug_exceptions.rb:21:in `call'
2015-02-24T06:15:45.471994+00:00 app[web.1]: source=rack-timeout id=41275bad-2ed7-4cfd-89c5-d223b6063d62 wait=33ms timeout=20000ms state=ready
2015-02-24T06:15:45.478349+00:00 app[web.1]: vendor/bundle/ruby/2.0.0/gems/actionpack-4.0.2/lib/action_dispatch/middleware/show_exceptions.rb:30:in `call'
2015-02-24T06:15:45.478351+00:00 app[web.1]: vendor/bundle/ruby/2.0.0/gems/railties-4.0.2/lib/rails/rack/logger.rb:38:in `call_app'
2015-02-24T06:15:45.478353+00:00 app[web.1]: vendor/bundle/ruby/2.0.0/gems/railties-4.0.2/lib/rails/rack/logger.rb:20:in `block in call'
2015-02-24T06:15:45.478355+00:00 app[web.1]: vendor/bundle/ruby/2.0.0/gems/activesupport-4.0.2/lib/active_support/tagged_logging.rb:67:in `block in tagged'
application.css 文件
/*
* This is a manifest file that'll be compiled into application.css, which will include all the files
* listed below.
*
* Any CSS and SCSS file within this directory, lib/assets/stylesheets, vendor/assets/stylesheets,
* or vendor/assets/stylesheets of plugins, if any, can be referenced here using a relative path.
*
* You're free to add application-wide styles to this file and they'll appear at the top of the
* compiled file, but it's generally better to create a new file per style scope.
*= require bootstrap/dist/css/bootstrap
*= require_self
*= require_tree .
*/
.bower.json 档案:
{
"name": "bootstrap",
"description": "The most popular front-end framework for developing responsive, mobile first projects on the web.",
"version": "3.3.2",
"keywords": [
"css",
"js",
"less",
"mobile-first",
"responsive",
"front-end",
"framework",
"web"
],
"homepage": "http://getbootstrap.com",
"main": [
"less/bootstrap.less",
"dist/css/bootstrap.css",
"dist/js/bootstrap.js",
"dist/fonts/glyphicons-halflings-regular.eot",
"dist/fonts/glyphicons-halflings-regular.svg",
"dist/fonts/glyphicons-halflings-regular.ttf",
"dist/fonts/glyphicons-halflings-regular.woff"
],
"ignore": [
"/.*",
"_config.yml",
"CNAME",
"composer.json",
"CONTRIBUTING.md",
"docs",
"js/tests",
"test-infra"
],
"dependencies": {
"jquery": ">= 1.9.1"
},
"_release": "3.3.2",
"_resolution": {
"type": "version",
"tag": "v3.3.2",
"commit": "bcf7dd38b5ab180256e2e4fb5da0369551b3f082"
},
"_source": "git://github.com/twbs/bootstrap.git",
"_target": "~3.3.2",
"_originalSource": "bootstrap",
"_direct": true
}
在我的项目中,可以在两个文件夹中找到这些半身人: vendor/assets/bower_components/bootstrap/dist/fonts vendor/assets/bower_components/bootstrap/fonts
除了那些半身像,该应用程序工作正常:
我之前删除了public/assets
目录已提交并重新部署到Heroku,这解决了我的旧问题https://stackoverflow.com/a/28681947/2048391,感谢史蒂夫。旧版本中的错误消息(当导航栏未显示时)与此版本非常相似,因此此问题也可能与资产有关。
如果您觉得这个问题很熟悉,那么请放弃一行。非常感谢: - )
可以在GitHub
找到部署到Heroku的代码答案 0 :(得分:8)
这里有几个问题。
<强>解决方案强>:
使用官方的bootstrap-sass bower包,它将使用正确的字体路径编译bootstrap。
安装bower-sass并删除vanilla bootstrap:
bower uninstall bootstrap --save
bower install bootstrap-sass --save
将application.css
移至application.css.scss
。在mainfest部分之后添加以下行。
$icon-font-path: "bootstrap-sass/assets/fonts/bootstrap/";
@import "bootstrap-sass/assets/stylesheets/bootstrap-sprockets";
@import "bootstrap-sass/assets/stylesheets/bootstrap";
你必须确保删除此行,因为删除了非sass版本的bootstrap。
*= require bootstrap/dist/css/bootstrap
将vendored assets路径添加到application.rb,以便rails可以编译并提供它们。
您还需要更新application.rb,以便Rails知道资产的位置。根据官方bootstrap-sass文档(https://github.com/twbs/bootstrap-sass#c-bower):
# Bower asset paths
root.join('vendor', 'assets', 'bower_components').to_s.tap do |bower_path|
config.sass.load_paths << bower_path
config.assets.paths << bower_path
end
# Precompile Bootstrap fonts
config.assets.precompile << %r(bootstrap-sass/assets/fonts/bootstrap/[\w-]+\.(?:eot|svg|ttf|woff2?)$)
# Minimum Sass number precision required by bootstrap-sass
::Sass::Script::Number.precision = [8, ::Sass::Script::Number.precision].max
这应该可以解决问题,现在应该加载你的字形。