预编译没有md5指纹的特定资产

Pav*_* K. 6 assets ruby-on-rails precompile

在我的rails 4项目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 )
Run Code Online (Sandbox Code Playgroud)

并运行rake资产:在生产中预编译.

但结果如下:

I, [2013-10-10T19:27:51.931963 #16052]  INFO -- : Writing /var/lib/openshift/521e19c85004460a8e000107/app-root/runtime/repo/public/assets/fonts/glyphicons-halflings-regular-ab2f6984951c07fd89e6afdefabd93c7.eot
I, [2013-10-10T19:27:51.940615 #16052]  INFO -- : Writing /var/lib/openshift/521e19c85004460a8e000107/app-root/runtime/repo/public/assets/fonts/glyphicons-halflings-regular-24dfb40c91db789b8b8faba6886ac1ef.svg
I, [2013-10-10T19:27:51.950685 #16052]  INFO -- : Writing /var/lib/openshift/521e19c85004460a8e000107/app-root/runtime/repo/public/assets/fonts/glyphicons-halflings-regular-4b2130768da98222338d1519f9179528.ttf
I, [2013-10-10T19:27:51.983230 #16052]  INFO -- : Writing /var/lib/openshift/521e19c85004460a8e000107/app-root/runtime/repo/public/assets/fonts/glyphicons-halflings-regular-7a07f26f72466361ac9671de2d33fd1c.woff
Run Code Online (Sandbox Code Playgroud)

和css文件引用没有此md5指纹的字体文件.

我怎样才能预编译资产,以便在没有md5指纹的情况下生成资产?或者我应该在这种情况下将它们放到public/fonts /文件夹中?

Lud*_*vic 2

按着这些次序

\n\n
    \n
  • 您的字体必须是app/assets/fonts
  • \n
  • 将您的字体添加到资产路径(就像您所做的那样)但更喜欢config/application.rb
  • \n
  • 使用 \xc3\xa0 在 CSS 中声明你的字体@font-face。您会在这里找到一些帮助
  • \n
  • 如果您不使用 SCSS,则必须嵌入 css,例如application.css.erb并使用asset_path()helper 在 font-face 声明中实现字体路径。
  • \n
\n\n

没有 SCSS 的示例:

\n\n
@font-face {\n  font-family: \'MyFont\';\n  src:url(\'<%= asset_path("myfont.eot")%>\');\n  src:url(\'<%= asset_path("myfont.eot?#iefix")%>\') format(\'embedded-opentype\'),\n    url(\'<%= asset_path("myfont.svg#myfont")%>\') format(\'svg\'),\n    url(\'<%= asset_path("myfont.woff")%>\') format(\'woff\'),\n    url(\'<%= asset_path("myfont.ttf")%>\') format(\'truetype\');\n  font-weight: normal;\n  font-style: normal;\n}\n
Run Code Online (Sandbox Code Playgroud)\n

  • 问题不在于如何创建字体,问题在于当您为生产字体创建预编译资源时,而是使用 md5 指纹。但在网络控制台后出现 fontawesome-webfont-62877.woff 404 错误。看起来 Rails 在 publick/assets fontawesome-webfont-62877-e70f92449ebfddada3d455eb44542655.woff 中看不到预编译资产,但是当我添加没有 md5 的文件 fontawesome-webfont-62877.woff 时,它工作正常。如何创建预编译以使 Rails 在生产中看到字体。 (2认同)