带有Rails资产管道和S3主机的SVG字体

我有一个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 

结束

好吧,(un)幸运的是 – 它现在正常工作,我所做的就是bundle exec rake assets:precompile (再次)并推送到Heroku(再次)。 bundle exec rake assets:precompile清除了旧编译的css / js / font文件,并构建了新的。 我之前做过这一步并没有得到这些结果,所以我不确定它是如何工作的。

这可能是用户错误 – 我不知道这实际上是如何工作的。 另一个令人困惑的事情是跑步

 irb(main):001:0> Rails.application.config.assets.paths 

回报

 => ["/app/app/assets/fonts", "/app/app/assets/images", "/app/app/assets/javascripts", "/app/app/assets/stylesheets" 

我不确定/app/app/assets是如何在生产vs /app/assets/开发中创建的,但它确实有效。