7

我的字体资产在生产中没有摘要就被提供了一个问题。一旦我 rake assets:precompile 我得到:

 5futurebit-webfont-c133dbefd9e1ca208741ed53c7396062.eot

我试图将它与 scss 中的 font-face 与asset-url、asset-path、font-url 和 font-path 链接,但它们最终都输出了路径:

 /assets/5futurebit-webfont.eot

现在我将资产从 /app/assets/fonts 直接复制到 /public/assets/ 但感觉不是这样做的方法。

4

3 回答 3

2

我一直在研究类似的问题,目前正在使用 non-stupid-digest-assets gem:https ://github.com/alexspeller/non-stupid-digest-assets

有关如何使用它的更多信息,请参见此处。 正确使用 non-stupid-digest-assets gem

话虽如此,Chris 提供的链接(特别是https://stackoverflow.com/a/17367264/291640)似乎与没有 gem 本身的 gem 一样。我知道我需要进一步调查。

于 2014-04-23T01:33:26.613 回答
1

确保您在 font-url 声明中具有确切的文件名和字体的扩展名,例如:

正确的:

@font-face{
  font-family: 'Sawasdee';
  src: font-url('Sawasdee.ttf') format('truetype');
}

错误的:

@font-face{
  font-family: 'Sewasdee';
  src: font-url('Sewasdee') format('truetype');
}

我的字体文件夹:

fonts
 |_ Sewasdee.ttf
 |_ Otherfont.ttf
于 2014-03-31T05:03:44.937 回答
0

这是我们的解决方案,部分基于 Sprocets 的功能。它正在使用 Rails4。config.assets.precompile在预编译完成后,它会自动为列出的所有资产生成一个非摘要版本。

# lib/tasks/assets_nondigest.rake
require 'fileutils'

namespace "assets:precompile" do
  desc "Create nondigest versions of defined assets"
  task :nondigest => :environment do
    sprocket_task = Sprockets::Rails::Task.new ::Rails.application
    assets = ::Rails.application.config.assets.precompile

    paths = sprocket_task.index.each_logical_path(assets).to_a +
      assets.select { |asset| Pathname.new(asset).absolute? if asset.is_a?(String)}

    paths.each do |path|
      if asset = sprocket_task.index.find_asset(path)
        copy_target = File.join(sprocket_task.output, asset.digest_path)
        target = File.join(sprocket_task.output, asset.logical_path)

        sprocket_task.logger.info "Writing #{target}"
        asset.write_to target
        asset.write_to "#{target}.gz" if asset.is_a?(Sprockets::BundledAsset)
      end
    end
  end
end

Rake::Task['assets:precompile'].enhance do
  Rake::Task['assets:precompile:nondigest'].invoke
end
于 2015-10-28T10:18:57.180 回答