bootstrap 3 rails 4 glyphicons没有在生产中被拾取

时间:2014-08-16 18:14:54

标签: ruby-on-rails heroku ruby-on-rails-4 twitter-bootstrap-3 asset-pipeline

我没有使用sass而且我没有使用bootstrap gem。

在我的bootstrap.css中我有

@font-face {
  font-family: 'Glyphicons Halflings';
  src: url('/fonts/glyphicons-halflings-regular.eot');
  src: url('/fonts/glyphicons-halflings-regular.eot?#iefix') format('embedded-opentype'), url('/fonts/glyphicons-halflings-regular.woff') format('woff'), url('/fonts/glyphicons-halflings-regular.ttf') format('truetype'), url('/fonts/glyphicons-halflings-regular.svg#glyphicons_halflingsregular') format('svg');
}

我预先编译并提交(RAILS_ENV=production bundle exec rake assets:precompile

预编译的资产最终出现在:public / assets / fonts / glyphicons-halflings -...

但我得到了404 for domain.com/fonts/glyphicons-halflings-regular.ttf

如何让bootstrap.css获取正确的预编译资产?我不想为生产设置e precompile = true

1 个答案:

答案 0 :(得分:4)

我必须采取措施解决问题:

  1. 覆盖我的bootstrap.css文件,将字体声明移动到新的application.css.scss文件,并使用asset_path而不是常规路径:
  2. bootstrap.css.scss

    @font-face {
      font-family: 'Glyphicons Halflings';
      src: url(asset_path('glyphicons-halflings-regular.eot'));
      src: url(asset_path('glyphicons-halflings-regular.eot?#iefix')) format('embedded-opentype'), 
      url(asset_path('glyphicons-halflings-regular.woff')) format('woff'), url(asset_path('glyphicons-halflings-regular.ttf')) format('truetype'),
      url(asset_path('glyphicons-halflings-regular.svg#glyphicons_halflingsregular')) format('svg');
    }
    
    1. 我必须在我的application.rb中添加:config.assets.precompile += %w( *.eot *.svg *.ttf *.woff *.otf)。从另一个答案我读到,如果字体在供应商/资产中,则需要这样做,否则它们不会被预先编译

    2. RAILS_ENV=production bundle exec rake assets:precompile和推送