컨트롤러가 이고 board.css
파일을 만들었습니다..css 파일 미리 컴파일
heroku로 이동하면 board.css
이 사전 컴파일되지 않는다는 오류가 나타납니다. 이 question을 바탕으로 내 production.rb
파일에
config.assets.precompile += %w(*.css *.js)
을 추가했습니다.
아직 수정되지 않았습니다. 내가 여기서 무엇을 놓치고 있니?
컨트롤러가 이고 board.css
파일을 만들었습니다..css 파일 미리 컴파일
heroku로 이동하면 board.css
이 사전 컴파일되지 않는다는 오류가 나타납니다. 이 question을 바탕으로 내 production.rb
파일에
config.assets.precompile += %w(*.css *.js)
을 추가했습니다.
아직 수정되지 않았습니다. 내가 여기서 무엇을 놓치고 있니?
는 설정/환경/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
는 당신이이 있습니까 자산은 /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.rb
에 config.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
을 실행합니다. 따라서 프로덕션 환경에서 로컬로 앱을 실행하지 않는 경우 애셋을 수동으로 사전 컴파일 할 필요가 없습니다.