Конвейер ресурсов Rails не включает необходимые файлы в манифест application.js

Конвейер ресурсов rails не включает файлы, необходимые в application.js.

Единственный файл javascript, отображаемый в браузере, — это application.js, и строки запроса не компилируются для включения тегов, как они должны быть:

// This is a manifest file that'll be compiled into application.js, which will include all the files
// listed below.
//
// Any JavaScript/Coffee file within this directory, lib/assets/javascripts, vendor/assets/javascripts,
// or vendor/assets/javascripts of plugins, if any, can be referenced here using a relative path.
//
// It's not advisable to add code directly here, but if you do, it'll appear at the bottom of the
// the compiled file.
//
// WARNING: THE FIRST BLANK LINE MARKS THE END OF WHAT'S TO BE PROCESSED, ANY BLANK LINE SHOULD
// GO AFTER THE REQUIRES BELOW.
//
//= require jquery
//= require jquery_ujs
//= require twitter/bootstrap
//= require bootstrap
//= require_tree .

;

в config/application.rb у меня есть config.assets.enable = true

Я использую rails 3.2.8 и пробовал ruby ​​1.9.3-p398 и 2.0.0-p0, установленные с помощью rvm.

Как заставить application.js включать необходимые файлы?

РЕДАКТИРОВАТЬ: похоже, что блокировка этого вопроса была недавно разблокирована, и активность возросла. Прошло некоторое время с тех пор, как я работал над этим, и кода больше не существует. Если я правильно помню, я переустановил ruby ​​и rails, и это решило проблему.

Мне закрыть этот вопрос? Какова правильная процедура в этой ситуации?


person everett1992    schedule 10.03.2013    source источник
comment
@iRichLau Как мне это исправить? Я не хочу, чтобы application.js включал файлы в манифест   -  person everett1992    schedule 11.03.2013
comment
все ваши файлы js в активах автоматически загружаются в рельсы из-за //require_tree .   -  person Richard Lau    schedule 11.03.2013
comment
Я знаю, что они должны, но они не загружаются. Единственные активы, которые отправляются в браузер, — это application.css и application.js, и ни один из них не включает файлы в свои манифесты.   -  person everett1992    schedule 11.03.2013
comment
вы пробовали перезапускать сервер? также вы можете вручную потребовать js. добавив еще один //=require 'nivo-slider.js'   -  person Richard Lau    schedule 11.03.2013
comment
Я перезапустил сервер, создал новые приложения и явно потребовал файлы. Я думаю, что конвейер не компилирует манифест.   -  person everett1992    schedule 11.03.2013
comment
Та же проблема здесь. Жалко, что закрыли..   -  person Trip    schedule 04.04.2013
comment
@Trip Я не совсем уверен, что это исправило, я переустановил RVM и обновил версию для рельсов. Теперь все работает.   -  person everett1992    schedule 17.04.2013
comment
А, интересно. То же самое и для меня   -  person Trip    schedule 18.04.2013
comment
Имея такую ​​же проблему! Почему casperOne закрыл это??   -  person Brian Weinreich    schedule 02.07.2013
comment
В этой проблеме должно быть что-то большее, чем просто неисправный файл JS — могу я спросить, как вы компилируете свои активы, где вы запускаете производство и какие проблемы вы видите?   -  person Joe Hilton    schedule 23.10.2013
comment
Возможно, что иностранный; точка с запятой вызвала проблему?   -  person omarvelous    schedule 23.10.2013


Ответы (4)


Я ответил на это здесь:

Rails 3.2.8 Application.js и Application.css не работают должным образом

Вот текст:

У меня также была эта проблема, но с более новыми версиями Rails и Ruby.

Изучив журнал, я обнаружил, что javascript.js обслуживается из кеша Rails, поскольку сервер не видел изменений в файле. Я пошел и переместил строки require (только одну), чтобы сообщить Rails, что в файле есть изменение, и перекомпилировать/использовать. Хорошо, что сделал это для меня!

Надеюсь, это поможет кому-то.

Еще один важный вывод — обновить гем sprockets в Gemfile.

У меня была версия 2.2.1 и были проблемы, после обновления до 2.2.2 все заработало

gem 'sprockets', '2.2.2' 
person lsaffie    schedule 20.12.2013
comment
Работал как шарм! TXS @Isaffie - person carlosveucv; 29.06.2014
comment
@everett1992 как вы думаете, это ответ на ваш вопрос? Если да, то не могли бы вы отметить это как таковое? Спасибо - person lsaffie; 30.06.2014
comment
Мне помогло обновление звездочек с 2.2.1 на ~> 2.2.2. Спасибо. - person imderek; 11.08.2014

Если вы обновляетесь с 3.0.x до 3.1.x и сталкиваетесь с этой проблемой, обновите до 3.2.x, и это может решить эту проблему.

Недавно я обновил приложение с 3.0 до 3.1.12 и обнаружил, что манифест актива не будет работать с Ruby 1.9.3, Ruby 2.0 или Ruby 2.1.1. Затем я пошел дальше и обновился до 3.2.17, и все работает правильно, используя Ruby 2.1.1.

Надеюсь, это поможет всем, кто может столкнуться с этой проблемой при обновлении.

person user3407501    schedule 11.03.2014
comment
Я могу подтвердить, что это, кажется, помогло - обновился с ruby ​​​​1.9.3 до 2.1.5, и на рельсах 3.2.6 что-то сломалось, исправлено, когда я обновился до рельсов 3.2.21. - person Kevin Qi; 12.01.2015
comment
Также, похоже, сработало для меня. Может быть связано с указанными выше звездочками (Установка звездочек 2.2.3 (было 2.1.4)) - person pixelearth; 25.12.2015

Одной из распространенных причин этого является то, что ресурсы компилируются и находятся в public/assets, и в этом случае Rails не будет их перекомпилировать. Если у вас здесь есть активы, и вы не установили для config.serve_static_assets значение false, то Rails не будет перекомпилировать ваши активы:

config.serve_static_assets = false

Поэтому, если у вас есть предварительно скомпилированные материалы в public/assets, либо удалите их, либо добавьте указанную выше строку в development.rb.

person Houen    schedule 01.11.2013

Вы копировали/вставляли файлы начальной загрузки в папку vendor/assets или в app/assets? Конвейер активов по умолчанию включает только папку app/assets, а не lib/assets или vendor/assets. Чтобы включить поставщика/активы в конвейер, введите эту команду в файл app/assets/javascript/application.js:

//= require_tree ../../../vendor/assets/javascripts/

Чтобы сделать то же самое для ваших файлов CSS:

*= require_tree ../../../vendor/assets/stylesheets/

Я знаю, что в комментариях в верхней части файла сказано, что любой файл в папке приложения, библиотеки или поставщика будет включен, но я обнаружил, что это не так. Я не могу объяснить почему, но см. здесь для моего источника. Попробуйте приведенные выше команды или включите файлы начальной загрузки в папки app/assets. Надеюсь, это поможет.

person Richie Thomas    schedule 24.10.2013
comment
Этот вопрос был недавно открыт повторно, у меня больше нет кода, поэтому я больше не могу проводить диагностику. Каков правильный этикет в этой ситуации? - person everett1992; 25.10.2013
comment
Извините, надлежащий этикет в плане чего? Присуждение ответа, голосование за/против или что-то еще? Если вы имеете в виду одну из этих вещей, я предполагаю, что выбор за вами, поскольку вопрос за вами. Ваши действия показывают ваше мнение об ответе. :-) - person Richie Thomas; 25.10.2013