Rails-ресурсы прекомпилируют загадочную ошибку - PullRequest
0 голосов
/ 12 января 2012

У меня действительно неприятная и постоянная проблема с прекомпиляцией ресурсов, которую я, похоже, не могу решить самостоятельно.Компиляция всегда терпит неудачу в каком-то файле, в котором нет ошибки.Например, приведенная ниже ошибка находится в файле 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 ]

2 голосов
/ 13 января 2012

Судя по всему, один из файлов javascript каким-то образом недопустим.

Я предполагаю, что все работает правильно в режиме разработки, то есть все работает правильно в браузере?

Если это так, код работает правильно при разработке, поскольку все файлы обслуживаются врежим отладки - они не сцепляются и не сжимаются.После компиляции они сначала объединяются, а затем сжимаются.

Вероятно, проблема заключается в синтаксической ошибке в одном из включенных файлов в виде пропущенной точки с запятой.Компрессорам Javascript они нужны, чтобы определить, где заканчивается один блок кода, а начинается другой.Первое, что нужно проверить, это конец определения плагинов.Предполагая, что проблема в одном файле, вы можете удалить только один файл за раз, скомпилировать его, пока он не запустится, и у вас будет виновник.

1 голос
/ 13 января 2012

Проблема была в кофейных рельсах.Я удалил все созданные файлы кофе из активов.Они содержали только сгенерированные комментарии, больше ничего.После этого активы составлены так, как и должно было быть.Где-то должна быть плохая ошибка.Прошло пару часов.Спасибо, Ричард, за предложение метода.

...