Конвейер ресурсов Rails 3.1 - отсутствующие файлы из public / assets - почему это не по умолчанию? - PullRequest
9 голосов
/ 20 июня 2011

После того, как я сегодня днем ​​развернул обновленное приложение Rails 2.3.x -> 3.1 (rc4) в нашей тестовой среде, все наши таблицы стилей и файлы JavaScript возвращали 404 ошибки.Мы добавили задачу rake assets: precompile в наш сценарий после развертывания, и потребовалось некоторое время, чтобы определить, почему в папке assets нет предварительно скомпилированных файлов, которые мы ожидали.

В конце файлыне компилировались, потому что, по-видимому, по умолчанию обрабатываются только application.css и application.js (+ не файлы JS / CSS).

Нам нужно было изменить следующее значение конфигурации следующим образом:

config.assets.precompile += %w( *.js *.css )

Вопрос: почему это не по умолчанию?

Я бы ожидал, что все, что не нужно обрабатывать как файл манифеста, будет просто скопировано в public / assets.Многое из того, что я прочитал в конвейере ресурсов, по сути «вставляет ваши активы в приложение / активы, настраивает файлы манифеста, и оно должно просто работать».Так как задача assets: precompile не выдавала никакой информации о том, что она делала, потребовалось некоторое время, чтобы определить, что она просто не просматривает файлы, которые, как мы думали, будут.

Есть ли какая-то причинапочему это не подходит для конфигурации прекомпиляции?

Спасибо!

Ответы [ 2 ]

9 голосов
/ 20 июня 2011

Идея состоит в том, чтобы все ваши JavaScript и CSS всегда загружались за один раз, а не загружать кусочки по мере продвижения. Таким образом, у вас всегда есть загруженный и готовый к работе «мир», вместо того, чтобы включать целую кучу отдельных файлов тут и там.

Это немного большая «предварительная» загрузка, но тогда браузер должен продолжать загружать весь javascript из кэша. Таким образом, воспринимаемая скорость сайта должна ускориться из-за того, что все кэшировано и готово к работе после первого запроса.

Это было спорное решение включить в Rails, но так в том числе CoffeeScript по умолчанию. Таким образом, Rails всегда был самоуверенным фреймворком.

0 голосов
/ 20 июня 2011

новый конвейер на основе цепочек компилирует все файлы в / asssets / stylesheets и / assets / javascripts, по умолчанию компилируемые в application.css и application.js.

В ваших представлениях вынужно только связать файлы приложения, звездочки обрабатывают все остальное.

Обновление: ну, вам не нужно превращать все это в один файл ... У вас может быть файл shared.js, secure.jsи public.js, и каждый из них содержит необходимые им части ...

Думайте о них не как о файлах javascript, а о файлах манифеста, которые устанавливают группы файлов javascript, которые затем можно включить в группу с однимjavascript_include_tag.Хотя по умолчанию все элементы в папке включены в один файл, вы всегда можете выбрать, что включать, а что нет.

Задача 'precompile' просто запускает эти файлы манифеста и компилирует несколько файлов.файлы в один, во время предварительной обработки и сценария sass или coffee он работает.

...