【发布时间】:2023-03-15 15:44:01
【问题描述】:
似乎我终于想出了如何设置 Rails + Paperclip + AWS CDN + Heroku。
一切似乎都在工作。 CSS 和 js 文件都从 cdn 加载,以及图像。
不幸的是,共享功能被破坏了。打开图形无法解析图像 url。我认为这是因为链接采用这种格式https:////drex16ydhdd8s.cloudfront.net/...rest_of_url
原来,很久以前,我将CDN链接配置为//drex16ydhdd8s.cloudfront.net。我知道我需要删除链接前面的斜杠,改为drex16ydhdd8s.cloudfront.net。
问题是,如果我这样做,Heroku 会给我应用程序错误。 (显示他们的静态页面) 日志没有显示任何有用的信息,除了它似乎立即超过了内存限制。
我已联系 Heroku 支持,但他们的回复是
您不需要任何斜杠,它应该只是一个主机名。 (如 config.action_controller.asset_host 的文档中所见。) 如果删除斜线会导致错误,您需要调试这些错误。
我尝试在本地进行,一切似乎都按预期工作。
environments/production.rb
config.action_controller.asset_host = ENV.fetch("ASSET_HOST", ENV.fetch("APPLICATION_HOST"))
config.paperclip_defaults = {
storage: :s3,
s3_protocol: :https,
s3_region: ENV["AWS_REGION"],
url: ":s3_alias_url",
path: "/:class/:attachment/:id_partition/:style/:filename",
s3_host_alias: ENV.fetch("ASSET_HOST"),
s3_credentials: {
bucket: ENV["S3_BUCKET_NAME"],
access_key_id: ENV["AWS_ACCESS_KEY_ID"],
secret_access_key: ENV["AWS_SECRET_ACCESS_KEY"]
},
default_url: "https://s3.amazonaws.com/ezpoisk/missing-small.png"
}
环境变量
ASSET_HOST = //drex16ydhdd8s.cloudfront.net
在 CDN 上我有 2 个行为
- /assets/* - 指向域名
- 默认 (*) - 指向 s3 存储桶
有人有什么想法吗?
【问题讨论】:
标签: ruby-on-rails heroku paperclip cdn