2014-02-28 2 views
6

분명히 뭔가 잘못하고 있습니다. 자산 파이프 라인과 씨름하고 있습니다 (다시). 맞춤 글꼴이있어서 제대로 컴파일하기 위해 모든 것을 얻으려는 것 같습니다. asset_path()을 여러 곳에서 사용해야하지만 예기치 않은 효과가 있습니다. @import "<%= asset_path("my-font.css") %>"; 레일 4 개 자산 - 서로 다른 두 개의 다이제스트가 생성됨

my-font.css의 소스 파일이 app/assets/stylesheets/my-font.css.erb (이것은 필요가있다 가 .erb I 때문에 수 :

나는이 작업을 수행하는 방법에는 여러 가지가 있습니다 실현,하지만 여기에 내가 현재 가지고있는 작업은 다음과 같습니다

application.css.scss.erb에서 또한 asset_path()을 사용하고 있습니다.)

application.rb에서 나는 사전 컴파일 목록에 my-font.css을 추가하고 있습니다. config.assets.precompile << 'my-font.css'

내가 public/assets을 청소하고 rake assets:precompile 모든의를 다이제스트로 컴파일하기 실행되지만 다이제스트는 실제 파일에 적용 다이제스트가 계산 application.css에 넣어 동일하지 않습니다.

결과 파일이 public/assets/my-font-2f25682a1ea904a866ef9f44101a5a2e.css하지만 public/assets/application-bba2edaee36771f4bdb5c89b8ec90aaf.css에 대한 참조는 다음과 같습니다 @import url(/assets/my-font-ed843d3b174ca427edf963e473ad9e9b.css);

나는 아마 내가해야보다 asset_path() 이상을 사용하고, 또한 URL을 통해 파일을 가져있어 실현() 대신을 요구하는 ,하지만 이것은 내가 일하는 것이 가장 가깝다.

전에 요약본 중 하나가 ERB를 거치며에 도달했음을 의심해 봅니다. 다른 하나는 나중에 왜 그런지 또는 어떻게 수정해야하는지 이해할 수 없습니다.

제안 사항?

+0

'depend_on_asset' 지시어를 사용할 수 있습니까? http://stackoverflow.com/a/19688338/1066093 –

답변

6

나는 단지 public/assets을 비워서 자산을 정리하고 있다고 생각합니다. 그만큼 충분하지 않으므로 tmp/cache/assets을 비우거나 rake assets:clobber을 실행하여 두 가지를 모두 수행해야합니다.

+0

OMG! 너는 내 점심 시간을 오늘 저장했다 !! – Nabheet

+0

선생님, 저에게도 저축 해 주셔서 감사합니다! – Sija

0

번들하려는 애셋의 원시 콘텐츠를 application.scss.erb과 같은 복합 애셋에 삽입하여 이러한 종류의 의존성을 해결했습니다.

application.scss.erb : 당신은 (my-fonts.css 원인의 변화가 application.css의 재생성되도록) 다음의 내용을 주입 명시 적으로 의존성을 선언 할 필요가

이 작업을 수행하는 방법
// Should be at Top of File 
//= depend_on_asset my-fonts.css 

//... wherever in the file you want the contents injected: 
<%= environment['my-fonts.css'] %> 

? 자산 파이프 라인 컴파일 중에 여기 환경에는 미리 컴파일 된 모든 자산 내용의 해시가 있습니다. 이렇게하면 my-fonts.css의 컴파일 된 콘텐츠를 복합 저작물에 삽입 할 수 있습니다. 우리는 수동으로 값을 주입하기 때문에 명시 적으로이 관계를 추적하기 위해 종속성을 생성해야합니다 (depend_on_asset).

여러 자산 사전 처리기 (SCSS, ERB 등)가 "외부"에서 처리되기 때문에 my-fonts.css 자산의 내용이 ERB 처리 중에 컴파일/주입됩니다. CSS 출력. 이들은 SCSS 처리 전에 자산에 포함됩니다.이것은 SCSS 자산 인 경우 모든 SCSS 참조가 상위 자산에 주입되기 전에 컴파일되므로 문제가되지 않습니다.

관련 문제