2012-01-12 3 views
0

필자가 직접 해결할 수없는 것으로 보이는 애셋 미리 컴파일에서 정말 불쾌하고 지속적인 문제가 있습니다. 오류가없는 일부 파일에서는 컴파일이 항상 실패합니다. 예를 들어, 아래 오류는 파일에 copies.js.coffee이며 주석 만 있습니다. 해당 파일을 삭제하면 다른 파일에 오류가 발생합니다. 모든 내 자산 파일의 유형은 us-ascii입니다. 어떤 파일에도 이상한 문자가 없습니다. 레일 3.1.3을 사용하고 있습니다. 나는 Ruby 1.9.2와 1.9.3에서 모두 시도했다.레일스 애셋이 신비한 오류를 미리 컴파일합니다

$ rake assets:precompile --trace 
(in /cygdrive/c/Development/artwork2) 
** Invoke assets:precompile (first_time) 
** Execute assets:precompile 
/home/kari/.rvm/rubies/ruby-1.9.3-p0/bin/ruby.exe /home/kari/.rvm/gems/ruby-1.9.3-p0/bin/rake assets:precompile:all RAILS_ENV=production RAILS_GROUPS=assets --trace 
** Invoke assets:precompile:all (first_time) 
** Execute assets:precompile:all 
** Invoke assets:precompile:primary (first_time) 
** Invoke assets:environment (first_time) 
** Execute assets:environment 
** Invoke tmp:cache:clear (first_time) 
** Execute tmp:cache:clear 
** Execute assets:precompile:primary 
rake aborted! 
湉異⁴牅潲㩲唠歮潮湷漠瑰潩⼢祣摧楲敶振唯敳獲欯牡⽩灁䑰瑡⽡潌慣⽬敔灭支數橣㉳㄰〲ㄱⴲ㔵〲㐭瀶湸⸱獪•灳捥晩敩⹤਍ 
    (in /cygdrive/c/Development/artwork2/app/assets/javascripts/copies.js.coffee) 
/home/kari/.rvm/gems/ruby-1.9.3-p0/gems/execjs-1.2.13/lib/execjs/external_runtime.rb:150:in `exec_runtime' 
/home/kari/.rvm/gems/ruby-1.9.3-p0/gems/execjs-1.2.13/lib/execjs/external_runtime.rb:27:in `block in exec' 
/home/kari/.rvm/gems/ruby-1.9.3-p0/gems/execjs-1.2.13/lib/execjs/external_runtime.rb:40:in `compile_to_tempfile' 
/home/kari/.rvm/gems/ruby-1.9.3-p0/gems/execjs-1.2.13/lib/execjs/external_runtime.rb:26:in `exec' 
/home/kari/.rvm/gems/ruby-1.9.3-p0/gems/execjs-1.2.13/lib/execjs/external_runtime.rb:18:in `eval' 
/home/kari/.rvm/gems/ruby-1.9.3-p0/gems/execjs-1.2.13/lib/execjs/external_runtime.rb:32:in `call' 
/home/kari/.rvm/gems/ruby-1.9.3-p0/gems/coffee-script-2.2.0/lib/coffee_script.rb:57:in `compile' 
/home/kari/.rvm/gems/ruby-1.9.3-p0/gems/tilt-1.3.3/lib/tilt/coffee.rb:46:in `evaluate' 

이것은 정말 짜증나고 앞으로 나아갈 수 없습니다. 나는 내가 여기에서 그리고 다른 곳에서 발견 한 거의 모든 것을 시도했다.

추가 사항 : 저는 cygwin과 우분투 모두에서 rvm을 사용하여이 두 가지를 시도했습니다.

+0

또 하나 추가 : 이제 오류 메시지가 중국어 문자에서 '불완전한'\ n "UTF-16LE"로 변경되었습니다. 다시 말하지만, 모든 파일은 US-ASCII입니다.'file -i'로 검사했습니다. –

+0

또 다른 추가 사항 : 폐쇄로 전환해도 아무런 차이가 없습니다. 나는 여기에 지침을 따라 : http://stackoverflow.com/questions/7877180/ror-precompiling-assets-fail-while-rake-assetsprecompile-on-basically-empty-a –

+0

일부 진행 상황 : 레일 3.2.0.rc2 컴파일 변경하지 않고 자산. 불행히도 다른 문제가 나타났습니다. –

답변

1

커피 레일에 문제가있었습니다. 생성 된 모든 커피 파일을 자산에서 제거했습니다. 그들은 생성 된 주석 만 포함하고 다른 것은 포함하지 않았습니다. 그 후에 자산은 컴파일되었을 때 컴파일되었습니다. 어딘가에 나쁜 버그가 있어야합니다. 몇 시간이 걸렸습니다. 리차드가 방법을 제안 해 주셔서 감사합니다.

2

자바 스크립트 파일 중 하나가 어떤 식 으로든 올바르지 않습니다.

모든 것이 개발 모드에서 올바르게 실행된다고 가정합니다. 브라우저에서 모든 기능이 올바르게 작동합니까?

이렇게하면 모든 파일이 디버그 모드로 제공되기 때문에 코드가 올바르게 실행됩니다. 연결되거나 압축되지 않습니다. 컴파일되면 먼저 연결되고 압축됩니다.

문제는 포함 된 파일 중 하나에서 누락 된 세미콜론 형식의 구문 오류 일 수 있습니다. Javascript 압축 프로그램은 한 블록의 코드가 끝나는 지점과 다른 코드가 시작되는 지점을 결정할 때이를 필요로합니다. 첫 번째 검사 할 곳은 플러그인 정의의 끝입니다. 문제가 하나의 파일에 있다고 가정하면 시간에 하나의 파일 만 제거하고 실행될 때까지 컴파일 한 다음 범인을 가질 수 있습니다.

+0

답변 해 주셔서 감사합니다. 예, 모든 것이 개발 단계에서 올바르게 실행됩니다. 나는 오늘 너의 충고를 나중에 시도 할 것이다. css와 js를위한 더 나은 컴파일러/압축기가 없다는 것은 매우 이상합니다. –

관련 문제