2013-07-11 45 views
1

我有一个Rails项目,在Heroku上托管,我刚搬到托管我的资产到S3。除了一些自定义字体(来自icomoon的SVG字体)之外,这一切都很流畅。他们不工作,当我查看我的网页源,我可以看到我的S3存储不会显示出来:SVG字体与Rails资产管道和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。我已经按照the accepted answer here中的步骤操作,但事实是我的存储桶名称没有显示出字体,这让我相信这是一个不同的问题。

编辑

我使用这个asset_sync宝石,它的配置低于:

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 

+0

编译之后,您是否使用任何gem将资源置于S3中?你可以附加它的配置吗?文件是在桶里还是根本没有? –

+0

是的,更新问题。这些文件位于存储桶中(但它们不在子文件夹中 - 所有字体,css,js都只在我在config中指定的主存储区中) – jbnunn

+0

,如果您使用asset-url helper(不确定名称)? –

回答

0

嘛,(联合国)幸运 - 现在的工作,而我确实是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/的发展创造,但是,它的工作原理。