【问题标题】:Using .slugignore with Heroku and S3 isn't working在 Heroku 和 S3 中使用 .slugignore 不起作用
【发布时间】:2015-01-27 22:21:20
【问题描述】:

背景

我有一个对 Heroku 来说太大的 repo,大约 500mb。这是因为app/assets/images 文件夹中有很多图像。我最近尝试将我的图像同步到 S3,而不是将它们存储在我的存储库中。

我使用 gem asset_sync 同步文件并使用 .slugignore 文件强制 Heroku 忽略资产文件,所以现在 repo 大约是 70mb,但仍然存在问题。现在这些文件不在 Heroku 的 repo 中,这意味着 image_path 找不到该文件,因此将 image_path "image.png" 链接到 /images/image.png 而不是 /assets/image.png,这是一个在 S3 中不存在的文件.

如何解决这个问题?

总结

使用 .slugignore 从 Heroku 中删除所有资产并将所有图像指向 S3 会导致 image_path "f.png" 链接到 http://s3.com/images/f.png 而不是 http://s3.com/assets/f.png

请注意,使用绝对路径是有效的。 image_path "/assets/f.png",但是 rails 没有在文件后添加摘要。

体面

  • 导轨4.0.11
  • asset_sync 1.1.0

文件

更新

我目前正在使用这个快速修复来强制 rails 使用我的图像的绝对路径。

# app/helpers/application_helper.rb
module ApplicationHelper

  def image_tag(path, *args)
    if path[0] != "/" and path !~ /^http/
      path = File.join("/assets", path)
    end

    super(path, *args)
  end
end

【问题讨论】:

  • 为什么这被否决了?

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


【解决方案1】:

这与您忽略 heroku 上的资产文件夹无关。问题是asset_sync 默认映射到您的存储桶的根目录,但是您的资产位于存储桶中的资产子文件夹下。要解决这个问题,请在您的 production.rb 中添加资产前缀。

config.assets.prefix = "/assets"

【讨论】:

    猜你喜欢
    • 2012-10-20
    • 2011-12-23
    • 1970-01-01
    • 2021-03-19
    • 1970-01-01
    • 1970-01-01
    • 2021-01-20
    • 2014-05-15
    • 2011-06-01
    相关资源
    最近更新 更多