Rails 3.1에서 새 자산 경로 추가


78

Rails 3.1의 자산 파이프 라인에 다른 폴더를 추가하는 방법을 아는 사람이 있습니까?

app/assets/fonts똑같은 방법 으로 봉사하고 싶습니다 app/assets/images.


업데이트 : 2013 년 5 월 7 일

application.rb 파일에 자산 경로를 명시 적으로 추가하기 위해이 질문을 찾는 미래의 사람들을 위해 약간의 설명을 추가하기 위해 :

config.assets.paths << "#{Rails.root}/app/assets/fonts"

그러나 위의 경로가 아래에 있으므로 app/assets명시 적으로 추가 할 필요가 없기 때문에 레일스 앱을 다시 시작하기 만하면 Sprockets가 선택할 수 있습니다.

명시 적으로 외부의있는 경로를 추가해야합니다 app/assets, lib/assets또는 vendor/assets톱니가 응용 프로그램이 내 경험이없이 자산 경로에 새 폴더를 선택하지 않는,로드 될 때 존재 폴더에 새 파일을 집어 들고있는 동안, 그냥 그 기억을 재시작.


config.assets.paths << "#{Rails.root}/app/assets/active_admin"나를 위해 일하지 않습니다. .js해당 폴더 의 파일이 컴파일되지 않은 스테이징에 배포 한 후 특정 페이지를 보려고하면 여전히 오류가 발생 합니다.
sixty4bit 2014

답변:


74

Andrew app/assets/fonts는 실제로 이미 images. 따라서 동일한 방식으로 자산을 가리킬 수 있습니다. <%= asset_path('/Ubuntu/Ubuntu-R-webfont.eot') %>[1] 또는 이미지를 참조하는 방식.

이것도 머리를 감싸는데 시간이 걸렸습니다. 나는 여전히 같은에서 이름의 파일이 있다면 어떻게되는지 모르는 app/assets/fontsapp/assets/images.

[1] 글꼴이 있다고 가정합니다. app/assets/fonts/Ubuntu/Ubuntu-R-webfont.eot


21
그만한 가치를 위해 이것을 시도했지만 작동하지 않는 것 같습니다. 그런 다음 추측하고 config.assets.paths << "#{Rails.root}/app/assets/fonts"작동했습니다. 아래에있는 모든 항목 /assets이 자동으로 포함되어야 한다는 것이 옳다고 생각 하지만 어떤 이유로 든 application.rb파일에 위의 줄을 추가 할 때까지 404를 제공했습니다 . 나는 당신의 대답을 받아 들일 것입니다. 왜냐하면 나는 릴리스가 완료되면 그것이 옳을 것이라고 생각하기 때문입니다. 그리고이 주석을 읽는 사람은 그것을 알아낼 수 있기 때문입니다. :)
Andrew

39
나는 이것도 우연히 만났고 기본 설정으로 작동하지만 앱 초기화 중에 디렉토리가 스캔되므로 서버가 실행 된 후 글꼴과 같은 폴더를 추가하면 404가 표시됩니다. 자산 파이프 라인의 디렉토리.
마틴 Wawrusch

4
같은 이름의 파일에 대해 자세히 설명하려면 : 이름 지정 충돌이있을 때 config.assets.paths배열에 나타나는 첫 번째 경로 는 선택한 파일입니다. asset_path()헬퍼 를 사용 하고 디렉토리를 지정하면 이를 방지 할 수 있습니다 .
Joseph Ravenwolfe

1
중복 이름 문제는 일반적으로 문제를 일으키지 않아야합니다. 제공되는 자산은 일반적으로 다른 형식을 가지므로이 문제가 발생하지 않습니다. 또한 자산 파이프 라인은 자산에 이름에 시드를 제공합니다. 이것은 사용자 브라우저의 로컬 캐시를 깨기위한 A이지만 모든 파일이 고유 한 이름을 갖도록하는 것이기도합니다. 프로덕션에서 실행하는 사전 컴파일시 생성 된 파일을 원래 경로에 연결하는 yaml 파일이 앱에 생성됩니다. 이를 통해 코드 내 이름 지정에서 컴파일 된 자산 이름으로 빠르게 연결할 수 있습니다. 동시에 이름 중복 문제를 방지합니다.
yopefonic

이것은 여기에서 완벽하게 답변되었습니다 : stackoverflow.com/a/10907276/1407541
Kopty 2013

43

Andrew, Jason도 동의했습니다. FWIW 나는 이것을 config / application.rb 옆에 넣었습니다.

  # Enable the asset pipeline
config.assets.enabled = true
config.assets.paths << "#{Rails.root}/app/assets/fonts"

15
내가 본 글에서 선호하는 글쓰기 방식은 지금Rails.root.join('app', 'assets', 'fonts')
Ross Allen

1
실제로 새 자산 경로를 추가 하는 방법을 Google에서 검색 할 때 약간 짜증 이 나고 수락 된 답변이 실제로 작업을 수행하지 않습니다. : p (질문이 실제로 그렇게 할 필요가 없었을 수도 있지만 이것은 검색 결과). 그래서 ... OP의 문제를 해결하는 대신 제목의 질문에 답하면 +1.
nzifnab

config.assets.paths << "# {Rails.root} / 응용 프로그램 / 자산 / 글꼴"레일 3.2.13에 나를 위해 일한
DC10

@ dc10 사용 Rails.root.join방식은 플랫폼간에 유연하게 사용할 수 있어야합니다.
ocodo

8

에 의해 생성 app/assets/imagesapp/assets/fonts그들은 자동으로 자산 경로에 추가됩니다.

Rails 콘솔을 만든 후 열고 다음을 확인하십시오.

y Rails.application.config.assets.paths 

( yyaml방법 의 단축키입니다 )


3

경로를 추가하지 않고 작동하지만 자산에 유효한 파일 이름을 사용하고 있는지주의하십시오.

url("#{asset_path 'fontawesome-webfont.eot'}?#iefix") format('embedded-opentype'),
...
url("#{asset_path 'fontawesome-webfont.svg'}#FontAwesome") format('svg');

예를 들어,이 경우 ?#iefix글꼴 파일 이름 외부 에 두십시오.


감사합니다! 이것이 assets : precompile 오류의 원인이었습니다. 글꼴을 추가 한 후보기 시작했습니다. 그 결과 매우 도움이되지 않는 "rake aborted! undefined method`match 'for nil : NilClass"
Geoff

이런! : 사실 내 진짜 문제는이 고정 된 stackoverflow.com/questions/14775844/...
제프

2

Rails 3.1.0.rc4 (그리고 아마도 더 높은)의 설정에 새로운 경로를 추가하지 않고도 작동하는지 확인할 수 있습니다. 나는 내 서버를 바운스했다. 당신도 똑같이 할 수있다.


1

만들기 assets/fonts폴더와 다음과 같은 CSS 파일에 사용 테마에 대한 몇 가지 글꼴을 추가

@font-face {
  font-family: Sawasdee;
  src: url(Sawasdee.ttf);
}
당사 사이트를 사용함과 동시에 당사의 쿠키 정책개인정보 보호정책을 읽고 이해하였음을 인정하는 것으로 간주합니다.
Licensed under cc by-sa 3.0 with attribution required.