【发布时间】: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
文件
-
.slugignorehttps://gist.github.com/oleander/2699ce91be6cfbf8b90a -
config/environments/production.rbhttps://gist.github.com/oleander/39e1ddeb60e5f697e6b1
更新
我目前正在使用这个快速修复来强制 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