在Heroku和S3中使用.slugignore是不行的

时间:2014-11-29 12:56:46

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

背景

我的回购对于Heroku来说太大了,大约500mb。这是由于app/assets/images文件夹中的大量图像造成的。我最近尝试将我的图像同步到S3,而不是将它们存储在我的仓库中。

我使用gem asset_sync来同步文件和.slugignore文件以强制Heroku忽略资源文件,所以现在回购约为70mb,但仍然存在问题。现在文件不在Heroku的回购中,这意味着image_path无法找到该文件,因此将image_path "image.png"/images/image.png关联而不是{{1}一个在S3中不存在的文件。

如何解决这个问题?

总结

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

请注意,使用绝对路径有效。 http://s3.com/assets/f.png,但是rails并没有在文件后面添加摘要。

Decencies

  • rails image_path "/assets/f.png"
  • asset_sync 4.0.11

文件

更新

我目前正在使用此快速修复程序强制rails使用我的图像的绝对路径。

config/environments/production.rb

1 个答案:

答案 0 :(得分:1)

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

config.assets.prefix = "/assets"