2012-03-13 4 views
1

1) 변경되지 않은 것으로 알려진 이미지 (비자 로고)는 한 서버에 3 가지 버전이 있고 다른 버전에는 4 가지 버전이있는 이유는 무엇입니까? 이 두 서버는 서로 다른 환경에 있습니다.레일스 자산 파이프 라인 고유 해시에 대한 질문

ls -la public/a/visa-* 
-rw-r--r-- 1 rails rails 1506 2012-03-04 06:33 public/a/visa-2c267b881e96647fbf8297637daf7132.gif 
-rw-r--r-- 1 rails rails 1506 2012-01-14 02:33 public/a/visa-603d00ea229b0cb010f2cd1a0a486769.gif 
-rw-r--r-- 1 rails rails 1506 2012-03-13 18:34 public/a/visa-fe533b87916500d8ab2ce4a72f45b942.gif 

$ ls -la public/a/visa-* 
-rw-r--r-- 1 rails rails 1506 2011-12-24 19:35 public/a/visa-4506288212ff5ef40a1af89abd829294.gif 
-rw-r--r-- 1 rails rails 1506 2012-03-13 01:19 public/a/visa-4559e644c6dc9eccb35fc06cf3696bef.gif 
-rw-r--r-- 1 rails rails 1506 2011-09-18 15:11 public/a/visa-873a9dddb6815e34ddc6049cfb3ec7d8.gif 
-rw-r--r-- 1 rails rails 1506 2012-02-26 01:23 public/a/visa-9678ba047d426c775771509f364e8590.gif 

...이 패턴은 내가 가진 모든 자산에 해당됩니다. 그 생각은 파일 이름이 그 파일의 내용을 기반으로하는 것이라고 생각했습니다.

2) 파일 이름이 파일 내용을 기반으로하는 경우 레일스는 해시가 포함 된 자산화된 경로에 < % = image_tag 'foo.png'%>을 어떻게 매핑합니까?

3) 파일 이름은 내가 이 배포 과정에서 내 자산 내가 배포 할 때마다 '미리 컴파일'나는 왜 파일의 내용을 기반으로하는을 가정 경우 - 그것은 지금 6 분 컴파일합니다 내 앱 VM의 자산 배포하는 동안. 나머지 배포에는 30 초 정도 걸립니다. - 배포하기 전에 자산을 컴파일하고 소스 제어에 체크인하고 배포하는 데 권장되는 패턴이 아닌 이유는 무엇입니까?

답변

1

1) Sprockets의 초기 버전에 Rails (및 Sprockets) 버전을 사용하고있는 버그가 있다고 생각합니다.

2) 레일즈는 사전 컴파일시 생성 된 manifest.yml 파일을 기반으로 자산을 해시 된 이름으로 매핑합니다. Sprockets는 매핑의 해시를 다시 Rails에 전달하여 공개/자산에 저장합니다. Rails가 부팅되면 빠른 액세스를 위해이 파일을 메모리에로드합니다.

3) 로컬에서 컴파일하고 커밋 할 수 있습니다. 유일한주의 사항은 개발 모드에서 이러한 정적 자산을 제공하지 않도록 development.rb의 자산 경로 접두어를 변경해야한다는 것입니다.

+0

포인트 3 (자산 사전 컴파일 성능)에서 최신 버전의 Rails (3.2 이상)에서 성능이 크게 향상되었음을 확인할 수 있습니다. 이는 초기 버전에서 큰 어려움이었습니다. 이것은 그것이 빠르다고 말하는 것이 아닙니다 :-). http://stackoverflow.com/questions/7537474/rake-assetsprecompile-is-slow –

+1

내 [블로그 게시물] (http://richardhulse.blogspot.co.nz/2012/03/rails-how-to- compile-and-commit-assets.html)에서 로컬로 컴파일 할 때의 함정을 피하는 방법에 대해 자세히 설명합니다. –

+0

3.2.2에 있습니다. 내 보석도 최신 정보인지 확실히 확인하십시오. # 1을 확인하기 위해 다음 배포시 자산을 관리 할 것입니다. – jsharpe

관련 문제