Rails активы прекомпилируют загадочную ошибку
У меня действительно неприятная и постоянная проблема с прекомпиляцией ресурсов, которую я, похоже, не могу решить самостоятельно. Компиляция всегда терпит неудачу в каком-то файле, в котором нет ошибки. Например ошибка ниже находится в файле copies.js.coffee
это только комментарий. Если я удалю этот файл, у другого файла будет ошибка. Тип всех моих файлов активов us-ascii
- никаких странных символов в любом файле. Я использую Rails 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, так и в Ubuntu под rvm в обоих.
2 ответа
Проблема была в кофейных рельсах. Я удалил все созданные файлы кофе из активов. Они содержали только сгенерированные комментарии, больше ничего. После этого активы составлены так, как и должно было быть. Где-то должна быть плохая ошибка. Прошло пару часов. Спасибо, Ричард, за предложение метода.
Судя по всему, один из файлов javascript каким-то образом недопустим.
Я предполагаю, что все работает правильно в режиме разработки, то есть все работает правильно в браузере?
Если это так, код работает правильно при разработке, поскольку все файлы обслуживаются в режиме отладки - они не объединяются и не сжимаются. При компиляции они сначала объединяются, а затем сжимаются.
Вероятно, проблема заключается в синтаксической ошибке в одном из включенных файлов в виде пропущенной точки с запятой. Это необходимо для компрессоров Javascript, чтобы определить, где заканчивается один блок кода и начинается другой. Первое, что нужно проверить, это конец определения плагинов. Предполагая, что проблема в одном файле, вы можете удалить только один файл за раз, скомпилировать его, пока он не запустится, и у вас будет виновник.