2011-10-07 7 views
3

이 질문은 Why do I get “no route matches” for requests to the asset pipeline?과 유사합니다.레일 3.1, 자산 파이프 라인 : 경로 일치 없음

나는 RilsCast #282#279 덕분에 새 자산 파이프 라인을 사용하도록 변환 된 레일 3.0 응용 프로그램을 3.1로 업그레이드했습니다. 생산 모드에서

, 나는 애플리케이션 - <이 >은 .js를 소화보고 있어요 및 애플리케이션 - <는 >에 .css 소화. 큰! 그리고 그 파일의 출처를 보면 압축 된 것을 볼 수 있습니다. 예 ~! 그렇다면 자산 파이프 라인이 작동하고 있다는 뜻입니까?

그러나 개별 파일을 볼 수 있도록 URL에 ?debug_assets=1을 추가하면 그 중 일부 파일이 ActionController::RoutingError (No route matches [GET] "/assets/<filename>-<digest>.js")이고 일부 CSS 파일의 경우에도 마찬가지입니다. 그러나 전부는 아니고 일부는 그렇습니다. 일부 파일이이 작업을 수행하는 이유와 그렇지 않은 작업을 파악할 수 없습니다.

나는 tmp/cache/*를 지우고 승객을 다시 시작했습니다. 나는 config.assets.version을 만났습니다. memcached를 다시 시작했습니다. 이들 중 어느 것도이를 해결하지 못합니다. URL에서 ?debug_assets=1을 사용할 때만이 문제가 발생합니다. 그것 없이는 압축 및 축소 된 하나의 JS 및 CSS 파일 만 볼 수 있습니다.

그런데 저는 미리 컴파일 된 자산을 사용하지 않습니다. 하지만 웃음 소리 만 들었을 때, 나는 rake assets:precompiled을 수행했는데, 알고 있었나요? ?debug_assets=1에는 이제 모든 JS 및 CSS 파일이 표시되며 그 중 404 개가 표시되지 않습니다.

그래서 내가 가진 질문은 "왜 미리 컴파일 된 자산을 사용하고 지연로드의 자산이 누락 될까 걱정하지 않는 이유는 무엇입니까?"라고 생각합니다. 좋은 지적. 답변 : 저는 제가하고있는 일, 일어나는 일, 올바르게 일하는 것을 이해하고 있는지 확인하고 싶습니다.

application.rb :

config.assets.enabled = true 
config.assets.version = '1.2' 

production.rb :

config.assets.compress = true 
config.assets.compile = true 
config.assets.digest = true 
config.assets.js_compressor = :uglifier 
config.assets.css_compressor = :scss 

development.rb :

config.assets.compress = false 

# I keep this off during development because I want 
# to make sure the compression isn't breaking my JS 
config.assets.debug = false 
+0

글쎄, 나는 몇 달 동안 프리 컴파일 된 자산을 사용하고있다. 그것은가는 길입니다. –

답변

2

Y이면 자산을 미리 컴파일하고 컴파일을 false로 설정하면 Rails에 스프로킷을 전혀 사용하지 말라고 지시했기 때문에 디버그를 사용할 수 없지만 파일은 자산 파이프 라인 매니페스트의 매핑을 기반으로 nginx에서 제공 할 수 있다고 가정합니다.

컴파일 할 때 (이러한 경우) 이러한 애셋 및 디버그 요청에 대한 요청은 스프로킷으로 보내져 파일이 누락 된 경우 처리됩니다 (사전 컴파일되지 않은 경우).

스프로킷은 각 소화 된 이름에 대해 개별 파일을 제공한다고 가정했을 것입니다. 내가 어쨌든 프로덕션 환경에서 디버그를 사용하려고하지 않는다고하더라도이 동작은 나에게 들리는 것으로 들립니다.

+0

맞아요. 프로덕션 환경에서는 필요하지 않습니다. IE (dev 컴퓨터는 Mac이고 앱은 표준 호환 브라우저에서 완벽하게 작동 함)를 사용하지 않지만 프로덕션 응용 프로그램의 모든 사용자는 IE 7, 8 및 9를 사용합니다. 때때로 'debug_assets'를 추가하여 빠른보기 또는 CSS 또는 JS 파일의 정확한 줄 번호를 가져옵니다.그것이 생산 모드에 의존하지 않는다는 것을 Sux. –

관련 문제