2012-10-16 2 views
3

TL : DR : Running assets : 사전 컴파일은 프로덕션 자산 호스트를 비 프로덕션 환경의 생성 된 자산으로 삽입합니다.레일 배치 - 애셋 실행 : 배포 된 환경마다 한 번 또는 빌드 당 한 번만 프리 컴파일?

배경 : 우리는 우리의 레일 응용 프로그램을 배포하는 현재의 방법은 CI 서버가 타르볼로 통합 ENV 각 성공적으로 빌드를 배포한다는 것입니다. 그리고이 타볼 (tarball)은 찌르 게되었던 env에 줄곧 나아가게하게된다. 우리는 서로 다른 환경에 홍보 할 수있는 응용 프로그램을 타르도 전에이 명령이 tarring 전에 실행되면하지만, 우리가

rake assets:precompile 

을 실행, 우리는 타르의 일부로 컴파일 된 자산 결국 이것은 개인 배포 시간을 절약 환경 (프리 D 파일은 sloow 임).

문제 : 우리가 생산 환경에서 asset_host 속성을 도입 할 때까지 이 배열은 괜찮 았는데. 애셋 : 사전 컴파일은 기본적으로 프로덕션 환경에서 실행되며 sass 파일은 image-url 태그를 사용하여 이미지 애셋을 참조하므로 애셋 호스트가 사전 컴파일에 의해 선택되기 시작하고 생성 된 애셋이 프로덕션에 대한 직접 URL 참조를 시작하기 시작했습니다. asset_host의 서버. 분명히 이것은 받아 들일 수 없다. 인터넷에 검색

내가 데 문제의 아주 가까이 설명입니다이 Github Issue되었다. 보석 유지자의 반응을 보면, 자산을 운영하는 것처럼 보입니다. 한 번 PER 환경 대신 모든 환경에 대해 한 번 프리 컴파일하면 좋지 않은 생각처럼 보입니다. 그러나 느린 프리 컴파일 시간을 감안할 때, 이것이 우리를위한 유일한 방법 인 것처럼 보입니다.

그럼 다른 레일 배포는 어떻게이 문제를 해결합니까?

답변

0

아주 비슷한 문제를 해결하고있었습니다. 우리의 솔루션은 모든 개인 환경 (예 : 준비 및 프로덕션 환경)에 대해 사전 컴파일을 실행하는 것입니다. 그 이유는 다른 자산 주인들도 마찬가지였습니다.

가 필요하며 자산이 정말 어디에 필요한 위치를, 전용 환경에서 사전 컴파일을 실행 할 수 있습니다.

우리는 capistrano-ext 보석과 함께 배포 할 카피 스트라 노를 사용하고 있습니다. 이것은 우리가 다른 스테이지를 지정하고 각 스테이지의 설정과 스테이지 (또는 환경이 stage == 인 환경)에 대해 지정합니다.

0

public/assets/manifest.yml을 소스 컨트롤로 점검하십시오.

관련 문제