我有一个 Rails 项目,托管在 Heroku 上,我刚刚将我的资产托管移动到 S3。除了一些自定义字体(来自 icomoon 的 SVG 字体)之外,这一切都很顺利。它们不工作,当我查看我的网络源时,我可以看到我的 S3 存储桶没有显示:
@font-face{font-family:'Starter-Icons';src:url(https://.s3.amazonaws.com/fonts/Starter-Icons.eot);src:url(https://.s3.amazonaws.com/fonts/Starter-Icons.eot?#iefix)
等等。但是,使用 S3 托管的其他资产(图像、样式表等)确实包含正确的存储桶名称。
我的font-face
声明在 .less 文件中(这不需要是 .less.erb 文件吗?)
@font-face {
font-family: 'Starter-Icons';
src:font-url("Starter-Icons.eot");
src:font-url("Starter-Icons.eot?#iefix") format('embedded-opentype'),
font-url("Starter-Icons.woff") format('woff'),
font-url("Starter-Icons.ttf") format('truetype'),
font-url("Starter-Icons.svg#Starter-Icons") format('svg');
font-weight: normal;
font-style: normal;
}
我所有的字体都在/app/assets/fonts
. 我已经按照此处接受的答案中的步骤进行了操作,但是我的存储桶名称没有显示在字体中这一事实让我相信这是一个不同的问题。
编辑
我为此使用了asset_sync gem,它的配置如下:
if defined?(AssetSync)
AssetSync.configure do |config|
config.fog_provider = 'AWS'
config.fog_directory = 'starterapp'
config.aws_access_key_id = ENV['STARTER_AWS_ACCESS_KEY_ID']
config.aws_secret_access_key = ENV['STARTER_AWS_SECRET_ACCESS_KEY']
# Don't delete files from the store
config.existing_remote_files = 'keep'
# Automatically replace files with their equivalent gzip compressed version
config.gzip_compression = true
end
结尾