Конвейер ресурсов не сжимает javascripts в application.js

#ruby-on-rails-3.1 #asset-pipeline

#ruby-on-rails-3.1 #конвейер активов

Вопрос:

У меня два вопроса.

  1. Я делаю неправильное предположение, что все мои javascripts должны быть сжаты в application.js по умолчанию в rails 3.1 даже в режиме разработки?

  2. Если нет, то почему мой тег содержит все 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, чтобы они были доступны для среды разработки.

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