【问题标题】:Rails 4 vendor asset images not being referenced from css files Heroku and S3未从 CSS 文件 Heroku 和 S3 引用 Rails 4 供应商资产图像
【发布时间】:2014-02-17 00:57:44
【问题描述】:

我在供应商 css 文件中引用的供应商文件夹下有很多供应商图像。

我正在使用 Heroku 和 S3 进行生产,而像 background-image: url("../images/sprite.png"); 这样的东西正在开发中,但不是在生产中,因为图像 url 指向 S3 url。

它也没有被预编译,所以不确定我是否应该将其作为资产预编译的一部分,但我想远离这个,因为我需要手动将所有图像文件复制到 assets/images 文件夹并更改通过将css 文件中的引用更改为scssasset_url(这似乎工作正常)

有没有办法只从供应商 css 文件中引用 S3 url

我也在使用asset_sync gem 上传到 S3

【问题讨论】:

    标签: ruby-on-rails ruby heroku amazon-s3 ruby-on-rails-4


    【解决方案1】:

    预编译资产

    您似乎遇到了asset fingerprinting 的问题,这个问题可以通过precompiling 您的资产解决:

    Heroku Tutorial on the subject

    #config/environments/production.rb
    config.assets.compile = true
    config.assets.digest = true
    
    #cmd
    rake assets:precompile RAILS_ENV=production
    git add. 
    git commit -a -m "Your Commit"
    git push heroku master
    heroku run rake assets:precompile --app your_heroku_app
    

    这将预编译您的所有资产(并且应该正确同步它们)


    资产同步

    asset_sync gem 与Rails 和Heroku 一起使用后,我们发现您必须在Heroku 本身上运行precompile 命令(以上几点的最后一步)

    检查的唯一方法是查看您的 Amazon 存储桶——如果设置正确,如果您在 Heroku 上预编译,它应该填充资产

    【讨论】:

    • 谢谢。例如,app/assets/images 文件夹下的任何东西似乎都在工作,但在 vendor/assets/lib/something/images 中却没有。所以我想知道是否可以添加它们进行预编译,而不是我必须手动将这些图像复制到 app/assets/images 目录中
    • 为什么不试试这个:config.assets.precompile += ['your/dir']。我不确定它是否适用于资产管道之外的项目 (/assets),但这是您完成这项工作所需要的。这里有一个很好的参考:stackoverflow.com/questions/10097993/…
    • @RichPeck 每次向我的项目添加新资产时我都应该这样做,对吗?
    猜你喜欢
    • 2012-12-21
    • 2016-08-17
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 2013-10-12
    • 2015-06-26
    • 1970-01-01
    • 2011-09-27
    相关资源
    最近更新 更多