我的字体资产在生产中没有摘要的情况下出现问题。 我一耙资产:我得到预编译:
5futurebit-webfont-c133dbefd9e1ca208741ed53c7396062.eot
我试图将它与scss中的font-face链接到asset-url,asset-path,font-url和font-path,但所有这些都最终输出路径:
/assets/5futurebit-webfont.eot
现在我将资源从/ app / assets / fonts直接复制到/ public / assets /但是感觉不是这样做的。
答案 0 :(得分:2)
我一直在研究类似的问题,目前正在使用非愚蠢的消化资产宝石:https://github.com/alexspeller/non-stupid-digest-assets
有关如何使用它的更多信息,请参阅此处。 Correct use of non-stupid-digest-assets gem
现在有人说,Chris提供的链接(特别是https://stackoverflow.com/a/17367264/291640)似乎可以完成与没有gem本身的gem相同的链接。我知道我需要进一步研究它。
答案 1 :(得分:0)
确保您在font-url声明中具有确切的文件名WITH字体的扩展名,例如:
正确:
@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
答案 2 :(得分: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