#ruby-on-rails-3.1 #asset-pipeline
#ruby-on-rails-3.1 #конвейер активов
Вопрос:
У меня два вопроса.
-
Я делаю неправильное предположение, что все мои javascripts должны быть сжаты в application.js по умолчанию в rails 3.1 даже в режиме разработки?
-
Если нет, то почему мой тег содержит все 30 моих javascripts и требует forver для загрузки?
Мой application.js файл выглядит следующим образом:
//= require jquery
//= require jquery_ujs
//= require jquery-ui
//= require_tree .
И в браузере он отображается как:
// This is a manifest file that'll be compiled into including all the files listed below.
// Add new JavaScript/Coffee code in separate files in this directory and they'll automatically
// be included in the compiled file accessible from http://example.com/assets/application.js
// It's not advisable to add code directly here, but if you do, it'll appear at the bottom of the
// the compiled file.
//
;
В то время как все мои другие javascripts отображаются полностью.
Огромное спасибо!
Ответ №1:
Если это новое приложение Rails, режим отладки включен по умолчанию. Режим отладки позволяет Sprockets записывать теги для каждого файла в исходный код HTML. Это сделано для облегчения отладки исходного файла.
Если вы хотите иметь только один файл в режиме разработки, перейдите в свой development.rb и установите:
config.assets.debug = false
Это даст вам один файл для каждого манифеста.
Сжатие НЕ включено по умолчанию для разработки, но если вы тоже этого хотели, то установите:
config.assets.compress = true
И вам нужно будет переместить параметры компрессора из production.rb в application.rb, чтобы они были доступны для среды разработки.
Я отключаю отладку в режиме разработки, но я не использую сжатие из-за дополнительного времени, которое требуется для обработки файлов.