2017-09-08 6 views
1

Rails + Paperclip + AWS CDN + Heroku를 설치하는 방법을 마침내 생각한 것 같습니다. 모든 것이 효과가있는 것처럼 보입니다. CSS와 js 파일은 이미지뿐만 아니라 cdn에서도로드됩니다. 불행히도 공유 기능이 손상되었습니다. 열린 그래프가 이미지 URL을 구문 분석 할 수 없습니다. 링크가이 형식으로되어 있기 때문이라고 생각합니다. https:////drex16ydhdd8s.cloudfront.net/...rest_of_urlRails + Paperclip + AWS CDN + Heroku를 올바르게 설정하는 방법

원래 오래 전, 나는 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" 
    } 

내가 2 befaviors

이 CDN에 ASSET_HOST = //drex16ydhdd8s.cloudfront.net

ENV 변수

  • /자산/* - 해당 도메인 이름
  • 기본 포인트 (*) - s3 버킷을 가리 킵니다.

누구에게 아이디어가 있습니까?

답변

0

솔루션. 나는, 내가 여기에 세부 사항에 강력한 아니에요 production.rb config.assets.compile = true

에 있었다 난 그냥 CDN로 전환 할 때 나는 가능성을 제거하려면이 줄에 메모를 한 것으로 기억한다. this answer을 파헤친 후 사용해보기로 결정했습니다. 그래서

  • 모두 잘 작동
  • 배포, 줄 지어 제거.
  • 그런 다음 cdn 링크를 업데이트하려고 시도했습니다.
  • 처음에는 동일한 문제가 지속되었는데 어떤 이유로 URL이 /drex16ydhdd8s.cloudfront.net 이었지만 몇 초 후에는 이 모두 양호한 것 같습니다.