2014-09-24 1 views
1

나는 Heroku에서 실행중인 레일 4.1 앱을 보유하고 있으며 정적 자산 문제가 발생합니다. 내 앱이 비 -svg 버전의 글꼴 애셋 (font-awesome-rails 보석에서 제공)을 요청할 때마다 제공되고 있지 않습니다. 다른 모든 애셋은 괜찮은 것 같습니다.레일 4.1 글꼴을 제공하지 않음 - Heroku에서 멋진 자산

> curl http://myapp.herokuapp.com/assets/fontawesome-webfont-701cf412b1cf188f7e15450446d7cd04.ttf 
## gives 404 response even though the file exists in public/assets on heroku 

> curl http://myapp.herokuapp.com/assets/fontawesome-webfont-4835d3d33b92d5c7c8c58149959d075d.svg 
## gives 200 response and serves the file 

모든 자산을 성공적으로 미리 컴파일, (아래 heroku bash에서이다) public/assets에 저장되어있는 것으로 보인다. 나는 (내가 도움이되지 않았다 시도) here을 제안 config.assets.precompile에 글꼴 파일 형식을 추가 할 필요가 없습니다처럼

$ ~/public/assets $ ls -l fontawesome-webfont-* 

-rwx------ 1 u31786 31786 38205 2014-05-16 19:57 fontawesome-webfont-0c7d84c1c574b8bae138a7014e781a1c.eot 
-rwx------ 1 u31786 31786 80652 2014-05-16 19:57 fontawesome-webfont-103111d81ddabc2cf4abea9d8a922fb8.ttf 
-rwx------ 1 u31786 31786 202148 2014-05-16 19:57 fontawesome-webfont-1bc7b8f24d224d2cce2fdff63d829fb8.svg 
-rwx------ 1 u31786 31786 253487 2014-07-04 02:17 fontawesome-webfont-434a869d64e7a46581d538486a8af044.svg 
-rwx------ 1 u31786 31786 202148 2014-05-16 19:57 fontawesome-webfont-4835d3d33b92d5c7c8c58149959d075d.svg 
-rwx------ 1 u31786 31786 44432 2014-05-16 19:57 fontawesome-webfont-4daf533148b5cd2067fa92a25d911a2b.woff 
-rwx------ 1 u31786 31786 44432 2014-05-16 19:57 fontawesome-webfont-641588c6e43238bf5012415aa7d8f6c9.woff 
-rwx------ 1 u31786 31786 141564 2014-07-04 02:17 fontawesome-webfont-701cf412b1cf188f7e15450446d7cd04.ttf 
-rwx------ 1 u31786 31786 83760 2014-07-04 02:17 fontawesome-webfont-8613891d251955c3898dc19ee822a763.woff 
-rwx------ 1 u31786 31786 72449 2014-07-04 02:17 fontawesome-webfont-97abc2bd68ee5cc83cf9f5386cfc7912.eot 
-rwx------ 1 u31786 31786 38205 2014-05-16 19:57 fontawesome-webfont-b921a0d9014189177e286b16478a6680.eot 
-rwx------ 1 u31786 31786 80652 2014-05-16 19:57 fontawesome-webfont-e21e874c038a38923c7e064e8606b135.ttf 

는 것 같습니다. 자산이 public/assets에 배치되었으므로 사전 컴파일 된 것으로 보이지만 Rails에서는 제공하지 않습니다.

적절한 권한을 가지고 public/assets에 자산이 존재하지만 http를 통해 Heroku의 Rails에서 자산을 사용할 수 없습니까? 이것에 영향을 줄 수있는 다른 Rails 설정이 있습니까?

감사합니다.

답변

1

설정/production.rb . (this과 동일). gem을 업그레이드하면 문제가 해결됩니다. 글꼴 - awesome.css에 레일 가이드에서 권장하는

0

다만 자산 컴파일에 글꼴을 추가

그것은 내 응용 프로그램이 제공되지 않을 수있는 그 파일 형식을 일으키는 원인이되는 랙 활발한 미들웨어 보석의 버전을 한 것으로 밝혀졌다

Rails.application.configure do 
    . . . 
    config.assets.precompile += %w( 
    *.svg *.eot *.woff *.ttf *.png *.jpg *.jpeg *.gif 
) 
    . . . 
end 
+0

내 질문에 자산이 성공적으로 컴파일되고 있다고 언급했습니다. 기본적으로 Rails는 "application.js, application.css 및 모든 비 JS/CSS"를 미리 컴파일합니다 (Rails에서 자동 생성 한 application.rb의 주석에서) – stupakov

0

여러 솔루션을 시도 후에 나는 자산 도우미를 사용하여이 문제를 해결 할 수있었습니다 :

@font-face { 
    font-family: 'FontAwesome'; 
    src: url('<%= asset_path("fontawesome-webfont.eot")%>?v=4.2.0'); 
    src: url('<%= asset_path("fontawesome-webfont.eot")%>?#iefix&v=4.2.0') format('embedded-opentype'), 
     url('<%= asset_path("fontawesome-webfont.woff")%>?v=4.2.0') format('woff'), 
     url('<%= asset_path("fontawesome-webfont.ttf")%>?v=4.2.0') format('truetype'), 
     url('<%= asset_path("fontawesome-webfont.svg")%>?v=4.2.0#fontawesomeregular') format('svg'); 
    font-weight: normal; 
    font-style: normal; 
} 

포함하는 파일의 이름을 변경해야합니다. ERB 확장 : 글꼴 awesome.css.erb

Rails Guides: The Asset Pipeline

2.3.1 CSS 및 ERB

자산 파이프 라인이 자동으로 ERB를 평가합니다. 즉, CSS 자산 (예 : application.css.erb)에 erb 확장자를 추가하면 CSS 규칙에서 asset_path와 같은 도우미를 사용할 수 있습니다.

.class {background-image : url (<% = asset_path 'image.png'%>)} 참조 할 특정 자산에 경로를 씁니다. 이 예에서는 여기에서 참조 할 app/assets/images/image.png와 같은 자산로드 경로 중 하나에 이미지가있는 것이 좋습니다. 이 이미지가 이미 공개/자산에서 지문 파일로 사용 가능하다면 해당 경로가 참조됩니다.

이미지 데이터를 CSS 파일에 직접 포함시키는 데이터 URI를 사용하려면 asset_data_uri 도우미를 사용할 수 있습니다.

logo { background: url(<%= asset_data_uri 'logo.png' %>) } 올바른 형식의 데이터 URI를 CSS 소스에 삽입합니다.

닫는 태그는 스타일 (%>) 일 수 없습니다.

관련 문제