Подтвердить что ты не робот

Какова цель config.assets.precompile?

В Rails 3.1 вы должны белыми файлами, которые вы хотите включить в предварительную компиляцию активов. Вы должны открыть config/environment/production.rb и явно включить активы, которые вы хотите предварительно скомпилировать:

config.assets.precompile += ['somestylesheet.css']

Если вы этого не сделаете, и вы запустите rake assets: precompile, ваш актив не будет скопирован в общедоступный/активы, а ваше приложение будет увеличивать исключение (поэтому вызывает ошибку 500 в производстве), когда актив не найден.

Почему это необходимо? Почему автоматически не скомпилированы активы all?

Этот текущий подход создает дополнительный код и повышает нагрузку при развертывании. Не было бы проще в черный список/исключить активы, чтобы все работало прямо из коробки? Кто-нибудь еще разделяет эти чувства?

4b9b3361

Ответ 1

Большинство активов автоматически включаются в предварительную компиляцию активов. В соответствии с RoR Guide на конвейере активов:

Совместимость по умолчанию для компиляции файлов включает application.js, application.css и все файлы, которые не заканчиваются js или css: [ /\w+\.(?!js|css).+/, /application.(css|js)$/ ]

Вы бы использовали config.assets.precompile, если у вас есть дополнительные активы для включения:

config.assets.precompile += ['admin.js', 'admin.css', 'swfObject.js']

Или вы можете перезаписать его.

Ответ 2

Я думаю, что это связано с тем, что конвейер/звездочки могут требовать отдельных файлов.

Например, у меня есть файл admin.js в моей папке app/assets/javascripts. Но все это требует нескольких других .js файлов.

//= require jquery
//= require jquery_ujs
//= require jquery.colorpicker.js
//= require jquery.wysiwyg.js
//= require wysiwyg.image.js
//= require jquery.fileupload.js
//= require jquery.fileupload-ui.js
//= require codemirror.js
//= require css.js
//= require admin_load

Это потому, что (а) я использую внешние js-плагины и (б) мне нравится хранить такие вещи, как jQuery onload-обработчики в отдельных файлах.

Если каждый.js файл был предварительно скомпилирован, он предварительно скомпилирует каждый из этих отдельных файлов, что совершенно не нужно. Все, что мне нужно/нужно, - это единственный файл admin.js, предварительно скомпилированный.

То же самое касается CSS файлов.

Ответ 3

Активы, прекомпиляционные для меня, классные, поэтому вы не развертываете активы, которые вам не нужны. Не забудьте также о самородке uglifer, который помогает сжать ваши javascripts. Imaging все это не существует, и вы просто развертываете свое приложение, и вы обнаруживаете, что у вас есть неиспользуемые файлы css и несжатые javascripts. как бы вы себя чувствовали. это только мое личное мнение, и я говорю, что конвейер активов - самая крутая вещь в рельсах. Возможность управлять всеми вашими активами должным образом.

И помните, если я рельсы, я бы не хотел компилировать активы, которые вам не нужны, поэтому вы сказали бы в своем уме, почему этот парень скомпилировал эти активы..:)