Rails 3.1에서는 애셋 사전 컴파일에 포함시키려는 파일을 허용 목록에 추가해야합니다. 당신은 설정/환경/production.rb를 열고 명시 적으로 미리 컴파일 할 자산을 포함해야합니다config.assets.precompile의 목적은 무엇입니까?
config.assets.precompile += ['somestylesheet.css']
이이 작업을 수행하지 않고 당신이 레이크 자산을 실행하는 경우 : 사전 컴파일, 당신의 자산은하지 않습니다 public/assets에 복사하고 자산을 찾을 수없는 경우 앱에서 예외가 발생하여 프로덕션에서 500 오류가 발생합니다.
왜 이것이 필요합니까? 이유가 무엇입니까 모두 에셋이 자동으로 미리 컴파일됩니까?
이 방법은 배포시 추가 코드와 스트레스를 생성합니다. 일을 즉시 처리 할 수 있도록 자산을 블랙리스트/제외하는 것이 더 쉬울까요? 누구나이 감정을 공유합니까?
명확히하기 위해 ** 명시 적으로 ** 자산을 지정해야 할 필요성에 대해 비판했습니다. 레일 사전 처리 프로세스는 코드를 컴파일하는 것뿐만 아니라 컴파일 된 자산 코드를 웹 서버의 공개 디렉토리에 복사합니다. 애셋이 컴파일을 필요로하지 않더라도 (일반 '.js' 파일과 같이) 앱에'사전 컴파일 '을해야하므로'public/assets'에 복사됩니다. 이 작업을 수행하지 않으면 자산을 필요로하는 페이지에서 예외가 발생합니다. – dhulihan
파일을 결합하고 축소하는 관례 인 경우 모든 자산을 사전 컴파일하지 않으려 고합니다. 이 기법은 개별적으로 포함 할 자산을 대상으로합니다. 예를 들어, application.js에서 미리 컴파일 할 필요가없는 다른 많은 JS 파일을 // require 할 수 있습니다. –
@ Simon Peck : 맞습니다. 일부 자산은 미리 컴파일 할 필요가 없지만 명시 적으로 포함되지 않으면 최종 자산 위치 (예 :'public/assets')로 복사되지 않습니다. 요청시 찾을 수 없습니다. '// = require'를 사용하여'application.js '에 애셋을 추가해도 작동하지만 대역폭 오버 헤드가 추가되고 사이트 전체에서 사용되지 않는 애셋에는 적합하지 않습니다. – dhulihan