Ruby on Rails 4 中没有摘要的字体资源
Posted
技术标签:
【中文标题】Ruby on Rails 4 中没有摘要的字体资源【英文标题】:Font asset without digest in Ruby on Rails 4 【发布时间】:2013-10-21 07:05:57 【问题描述】:我遇到了一个问题,即我的字体资源在生产中没有摘要就被提供了。 一旦我 rake assets:precompile 我得到:
5futurebit-webfont-c133dbefd9e1ca208741ed53c7396062.eot
我试图将它与 scss 中的 font-face 与 assets-url、asset-path、font-url 和 font-path 链接,但它们最终都输出路径:
/assets/5futurebit-webfont.eot
现在我将资产从 /app/assets/fonts 直接复制到 /public/assets/ ,但感觉不是这样。
【问题讨论】:
我相信这个问题可能是相关的***.com/questions/10905905/… 【参考方案1】:我一直在研究类似的问题,目前正在使用 non-stupid-digest-assets gem:https://github.com/alexspeller/non-stupid-digest-assets
有关如何使用它的更多信息,请参见此处。 Correct use of non-stupid-digest-assets gem
话虽如此,Chris 提供的链接(特别是 https://***.com/a/17367264/291640)似乎可以与没有 gem 本身的 gem 完成相同的操作。我知道我需要进一步调查。
【讨论】:
+1 表示非愚蠢的摘要资产 gem。 Rails 应该有这样的选项。【参考方案2】:确保您在 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
【讨论】:
【参考方案3】:这是我们的解决方案,部分基于 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
【讨论】:
以上是关于Ruby on Rails 4 中没有摘要的字体资源的主要内容,如果未能解决你的问题,请参考以下文章
时至 2023 年,为什么我们还要使用 Ruby on Rails?
Ruby on Rails Rake在将rails项目从4.1.9更新到4.2.0后抛出“不正确的表名”错误
应用程序错误:Heroku,Ruby on Rails 4,警告:rails_12factor,vendor / bundle,no Procfile
思考Ruby On Rails的底层代码(Ruby on Rails 開發秘籍 | Ruby on Rails 快速入門)
Ruby on Rails - 在 OSX 上使用 Ruby 2.4.4 而不是 rails 5.1.6 的配置问题/异常