好像我终于想出了如何设置Rails + Paperclip + AWS CDN + Heroku。
一切似乎都在起作用。 CSS和js文件都从cdn和图像加载。
不幸的是,共享功能被破坏打开图表无法解析图片网址。我认为这是因为链接采用这种格式https:////drex16ydhdd8s.cloudfront.net/...rest_of_url
最初,很久以前,我已将CDN链接配置为//drex16ydhdd8s.cloudfront.net
。我知道我需要删除链接前面的斜杠,改为drex16ydhdd8s.cloudfront.net
。
问题是,如果我这样做,Heroku会给我应用程序错误。 (显示静态页面) 日志不会显示任何有用的信息,除了它似乎立即超出内存限制。
我已经联系过Heroku支持,但他们的反应是
你不应该需要任何斜杠,它应该只是一个主机名。 (如config.action_controller.asset_host的文档中所示。) 如果删除斜杠会导致错误,那么您将要调试这些错误。
我尝试在本地进行,一切似乎按预期工作。
环境/ 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"
}
env变量
ASSET_HOST = //drex16ydhdd8s.cloudfront.net
有没有人有任何想法?
答案 0 :(得分:0)
解。
我有生产.rb
config.assets.compile = true
我对这里的细节不太了解,我只记得我在这一行上做了一个注释,可能在切换到cdn时删除它。 经过this answer挖掘后,我决定尝试一下。所以我
/drex16ydhdd8s.cloudfront.net
,但几秒后它现在似乎
一切都很好。