0

시나리오 : 런타임/고가에 이미지를 자산 파이프 라인에 추가 할 수 있습니까?

  • 지금 사용자 작업의 결과로, 우리는 새로운 이미지를 가지고 우리가이되고 싶어요 ...

    • 이미 레일 3.2 응용 프로그램을 배포 한, 그리고 자산 파이프 라인 흐름을 실행 캐시 파열과 같은 이점을위한 자산 파이프 라인의 일부 (사용자가 업로드 한 이미지는 매번 고유 한 파일 이름이 부여되어 논점이됩니다.)
    • 할 수있는 방법이 있습니까? 새로운 이미지에 대해이 시점에서 자산 파이프 라인을 사용하는 것이 좋습니다.

    나는 이것이 어리석은 질문이라고 생각합니다.

  • 답변

    1

    자산을 컴파일하는 것은 단지 레이크 작업 일 뿐이므로 언제든지 작업을 호출 할 수 있습니다. 작업은 bundle exec rake assets:precompile입니다. 자세한 내용은 http://guides.rubyonrails.org/asset_pipeline.html을 참조하십시오.

    그러나 사용자가 업로드 한 이미지는 컴파일 할 자산으로 취급하지 않습니다. 나는 그렇게하는 것이 나쁜 생각 일 것이라고 생각한다.

    대신 사용자가 직접 터치 한 것처럼 사용자가 업로드 한 이미지에 고유 한 이름을 지정하십시오. 새로운 이미지가 업로드/대체되면 새로운 이름이 생성됩니다. 이 작업의 예는 paperclip gem에서 찾을 수 있습니다. 이미지를 디스크에 기록하고 레코드/참조를 데이터베이스에 저장합니다. 이러한 이미지는 데이터베이스에 ID가 있으며 URL에는 해당 ID가 포함됩니다. 따라서 /photos/4/nothing.png/photos/2/yes.png이됩니다. 여기서 2와 4는 메타 데이터/이미지와의 관계가있는 데이터베이스 레코드를 가리 킵니다.

    또한, image_tag 레일스 도우미를 사용하면 이미지의 URL에 캐시 버스터가 자동으로 추가됩니다. 캐시 버스터는 쿼리 문자열로 수행되므로 image_tag('test.png')/images/test.png?1234567890이됩니다. 때로는 특정 프록시가 쿼리 문자열 캐시를 '상실'하지 않지만 소수 인 경우가 있습니다.

    +0

    "그러나 사용자가 업로드 한 이미지는 컴파일 할 자산으로 취급하지 않습니다. 나는 이렇게하는 것이 나쁜 생각이라고 생각한다. "아주 잘 할 수 있습니다. 내 직감은 아마도 그것이 옳다고 말합니다. 그러나 그것이 잘못된 길일 수있는 이유를 생각해 내시겠습니까? –

    +0

    나는 왜 당신이이 자산들을 컴파일하기를 원하는지 스스로에게 물어볼 필요가 있다고 생각합니까? 어떤 이점을 얻고, 그와 관련된 비용은 얼마입니까? rake assets 실행하기 : 누군가가 이미지를 업로드 할 때마다 사전 컴파일 작업이 매우 비쌉니다! image_tag 도우미로 할 수없는 이미지와 관련하여 자산 파이프 라인에서 무엇을 얻을 수 있습니까? 이미지 애셋을 컴파일하는 데 미묘한 이점이 있습니다. 그러나 프로젝트의 요구 사항이 아니라면 지정되지 않은/실현되지 않은 게인에 대해 너무 많은 복잡성이 도입 될 수 있습니다. – Ryan

    관련 문제