Ruby on rails 不带md5指纹的预编译特定资产

Ruby on rails 不带md5指纹的预编译特定资产,ruby-on-rails,assets,precompile,Ruby On Rails,Assets,Precompile,在我的Rails4项目中,css使用字体文件。因此,还需要对它们进行预编译 我通过在config/environments/production.rb中添加以下行来实现这一点 # Add the fonts path config.assets.paths << Rails.root.join('vendor', 'assets', 'fonts','fonts') # # # Precompile additional assets config.assets.

在我的Rails4项目中,css使用字体文件。因此,还需要对它们进行预编译

我通过在config/environments/production.rb中添加以下行来实现这一点

  # Add the fonts path
  config.assets.paths << Rails.root.join('vendor', 'assets', 'fonts','fonts')
  #
  # # Precompile additional assets
  config.assets.precompile += %w( *.svg *.eot *.woff *.ttf )
css文件指的是没有这个md5指纹的字体文件

如何预编译资产,以便在没有md5指纹的情况下生成它们?或者在这种情况下,我应该将它们放在public/font/文件夹中吗?

按照以下步骤操作

  • 您的字体必须位于
    app/assets/font
  • 将您的字体添加到资产路径(就像您那样),但更喜欢
    config/application.rb
  • 在你的CSS中声明你的字体时,使用a
    @font-face
    。你会发现
  • 如果不使用SCS,则必须具有嵌入式css,如
    application.css.erb
    ,并使用
    asset\u path()
    helper在字体面声明中实现字体路径
没有SCSS的示例:

@font-face {
  font-family: 'MyFont';
  src:url('<%= asset_path("myfont.eot")%>');
  src:url('<%= asset_path("myfont.eot?#iefix")%>') format('embedded-opentype'),
    url('<%= asset_path("myfont.svg#myfont")%>') format('svg'),
    url('<%= asset_path("myfont.woff")%>') format('woff'),
    url('<%= asset_path("myfont.ttf")%>') format('truetype');
  font-weight: normal;
  font-style: normal;
}
@font-face{
字体系列:“MyFont”;
src:url(“”);
src:url(“”)格式('embedded-opentype'),
url(“”)格式('svg'),
url(“”)格式('woff'),
url(“”)格式('truetype');
字体大小:正常;
字体风格:普通;
}

您解决了吗?我也有同样的问题。我的答案有效吗?问题不在于如何创建字体,而在于如何使用md5 fingerprint为生产字体创建预编译资产。但在网络控制台中出现fontawesome-webfont-62877.woff 404错误后。看起来rails在publick/assets fontawesome-webfont-62877-e70f92449ebfddadadad3d455eb44542655.woff中看不到预编译资产,但当我在没有md5的情况下添加文件fontawesome-webfont-62877.woff时,工作正常。如何创建rails在生产模式下查看字体的预编译。@SergeyChechaev使用我的方法,所有内容都在生产模式下工作。对于rails3,我遇到了一些问题,解决方案是复制public/assets/中的字体目录。如果您不想预编译字体,为什么要将它们添加到系统中?这有点奇怪:)我不知道如何在生产模式下预编译资产,这很好,我有404错误。@SergeyChechaev仔细阅读了答案-您需要更改CSS文件的扩展名为.erb,以便在预编译时,包含指纹字体文件路径,而不是原始文件名。
@font-face {
  font-family: 'MyFont';
  src:url('<%= asset_path("myfont.eot")%>');
  src:url('<%= asset_path("myfont.eot?#iefix")%>') format('embedded-opentype'),
    url('<%= asset_path("myfont.svg#myfont")%>') format('svg'),
    url('<%= asset_path("myfont.woff")%>') format('woff'),
    url('<%= asset_path("myfont.ttf")%>') format('truetype');
  font-weight: normal;
  font-style: normal;
}