2011-11-19 4 views
6

개발 서버를 다시 시작한 경우에도 내 js.erb 파일을 다시 생성하지 않습니다. 서버를 다시 시작할 때마다 자산 파이프 라인이 모든 자바 스크립트 자산을 다시 생성하도록 강제 할 수있는 방법이 있습니까?애셋 파이프 라인 강제 js.erb 다시 컴파일

실제 .js.erb 소스 파일을 변경하면 다시 컴파일되지만 코드는 데이터베이스에서 가져 와서 서버 재시작간에 변경 될 수있는 시드 된 데이터를 읽습니다.

답변

10

늦게 전화를 걸지만이 문제가 여기 저기에 있었고 실제로 그것에 짜증이났습니다. 조금 파고 들었습니다. 여기 내 솔루션입니다 :

서버를 다시 시작에

의 SCSS 및 기타 캐시 자산을 날려 및 재 컴파일을 강제 rm -rf tmp/cache/*

.

Rake를 사용하여 서버를 다시 시작하거나 사용하려는 경우 rake assets:clean을 대신 실행할 수 있습니다.

은 물론, 일이 당신이 내 질문을 잘못 해석하고 생각

+0

니스! 이 작동합니다. – spike

1

서버가 시작되기 전에 자산 파이프 라인 내에서 실행되는 루비를 생각해보십시오. 이는 자산 사전 컴파일 단계를 통해 프로덕션 환경에서 실제로 발생하기 때문에 (그리고 개발 과정에서 파일이 변경되면 새로 고칩니다. 설명 됨). 이 경우 코드를 컨트롤러 및 app/views 디렉토리 (html.erb/js.erb)에 리팩터링하여 모든 요청에 ​​대해 코드가 실행되도록 할 수 있습니다.

+0

... 비트에 의해 서버를 다시 시작 느리게,하지만 주요 고통 지점의 제거를위한 가치가있을 수 있습니다. JS가 의존하는 시드 데이터가 변경되면 서버를 다시 시작합니다 (국가 => 상태 매핑과 같은 정적 인 요소). 내 문제는 서버에서 * 재시작 * JS에서 재생성되지 않습니다. 나는 그것을 잡아 내기 위해 실제 소스 파일을 변경해야한다. (어떤 종류의 해싱을하고 있다고 추측한다.) – spike

+0

네 - 지금 당황합니다. 개발 환경에서 config.assets.debug를 true로 설정 했습니까? 그것을 가정하지 않으면 https://github.com/wavii/rails-dev-tweaks에서 레일이 레일에서하는 일에 대한 단서를 찾을 수 있습니다. 그러나 문제가 해결되지 않을 것이라고 생각합니다. 상자는 애셋을 컴파일 할 때 자주 사용되지 않으므로 –

+0

yea'config.assets.debug'가 설정되었습니다. 자원에 감사드립니다. 좀 더 파고 드리겠습니다. – spike

관련 문제