2013-04-26 3 views
0

컨트롤러가 이고 board.css 파일을 만들었습니다..css 파일 미리 컴파일

heroku로 이동하면 board.css이 사전 컴파일되지 않는다는 오류가 나타납니다. 이 question을 바탕으로 내 production.rb 파일에

config.assets.precompile += %w(*.css *.js) 

을 추가했습니다.

아직 수정되지 않았습니다. 내가 여기서 무엇을 놓치고 있니?

답변

0

는 설정/환경/production.rb를 열고 다음 옵션이 true로 설정되어 있는지 확인합니다 :

# Don't fallback to assets pipeline if a precompiled asset is missed 
config.assets.compile = true 

그런 다음 실행

rake assets:precompile --trace RAILS_ENV=production 

Source

0

는 당신이이 있습니까 자산은 /assets 폴더에 나타 납니까?

기본 매니페스트 파일은 /assets/application.js/assets/application.css입니다. 매니페스트 파일은 모든 자원을 미리 컴파일됩니다 설명하고 다음과 같습니다

/* 
* This is a manifest file that'll automatically include all the stylesheets available in this directory 
* and any sub-directories. You're free to add application-wide styles to this file and they'll appear at 
* the top of the compiled file, but it's generally better to create a new file per style scope. 
*= require_self 
*= require_tree ./dir 
*= require_tree . 
*/ 

이 CSS 적하 목록 사전 컴파일 자체 assets/dir/assets 폴더에있는 모든 CSS 파일.

따라서 매니페스트 파일이 있고 일치하는 경로와 함께 board.css이 필요합니다.

production.rbconfig.assets.precompile += %w(*.css *.js) 을 설정하면 /assets 폴더의 모든 파일이 매니페스트 파일임을 Rails에 알리는 것입니다. IMHO 올바르지 않으므로 사용자 지정 매니페스트 파일 만 추가해야합니다. 기본 매니페스트가 이미 포함되어 있습니다 : 다른 솔루션에 대한

# Precompile additional assets (application.js, application.css, and all non-JS/CSS are already added) 

할 말이있다. 설정 한 경우 :

# Don't fallback to assets pipeline if a precompiled asset is missed 
    config.assets.compile = true 

미리 컴파일 된 애셋을 사용하지 않아도됩니다. 앱에서 오류가 발생하지 않지만 미리 컴파일 된 애셋이없는 앱을 계속 가져오고 페이지로드 시간에에 결제해야하기 때문에 트릭이 작동합니다. 이러한 이유로 프로덕션 환경에서는이 옵션을 항상 해제해야합니다.

그래서 활성화하면 rake assets:precompile을 호출해도 미리 컴파일 된 에셋을 사용할 수 있다고 보장 할 수 없습니다. 마지막으로 Heroku는 앱을 배포 할 때 항상 rake assets:precompile을 실행합니다. 따라서 프로덕션 환경에서 로컬로 앱을 실행하지 않는 경우 애셋을 수동으로 사전 컴파일 할 필요가 없습니다.

관련 문제