Как ускорить предварительную компиляцию ассетов в Rails 3+?

Каждый раз, когда я загружаю код в свой репозиторий после внесения изменений в файлы JS или CSS, я запускаю следующие команды:

rake assets:clean
rake assets:precompile

У меня довольно много активов, поэтому этот процесс всегда занимает не менее минуты. Есть ли способ заставить его работать быстрее? Например, если я изменил только CSS, есть ли способ указать ему, чтобы он сосредоточился только на файлах CSS и не беспокоился о очистке и предварительной компиляции JS?

Редактировать: К сожалению, я должен был указать, что это в производстве. Я знаю, что мне не нужно предварительно компилировать активы при разработке :)


person NudeCanalTroll    schedule 08.02.2012    source источник


Ответы (2)


Я предполагаю, что вы используете Rails > 3.1.

Не запускайте задачи rake вообще. Режим разработки Rails не требует предварительной компиляции ресурсов. Rails будет автоматически компилировать активы, когда есть изменения, иначе этого не произойдет.

Если вам нужна производительность при использовании ресурсов в процессе разработки, вы можете посмотреть такие жемчужины, как https://github.com/wavii/rails-dev-tweaks

person Ajay Kumar Guthikonda    schedule 08.02.2012
comment
Только что отредактировал свой вопрос, чтобы указать, что я пытаюсь ускорить предварительную компиляцию ресурсов для production. Спасибо за ссылку, похоже, это будет полезно при кодировании в среде разработки. - person NudeCanalTroll; 09.02.2012
comment
Когда вы компилируете свои активы при развертывании или когда обслуживается первый запрос? В любом случае это будет медленно. Большинство людей, которых беспокоит медленное время компиляции, обычно компилируют активы на машине разработки и в качестве ярлыка помещают компилируемые активы на производственный сервер. - person Ajay Kumar Guthikonda; 09.02.2012
comment
Я компилирую сразу после развертывания. Я предполагаю, что если бы я скомпилировал локально, компиляция на сервере была бы такой же медленной? - person NudeCanalTroll; 09.02.2012
comment
Обычно это не медленно на машинах разработки. Я не уверен в точной причине. Вы можете попробовать и посмотреть, будет ли он быстрее или таким же, используя 'bundle exec rake RAILS_ENV=production RAILS_GROUPS=assets assets:precompile'. Если этот подход быстрее, вы также можете посмотреть на 'github.com/dnagir/guard-rails-assets. для автоматической компиляции ресурсов для производства - person Ajay Kumar Guthikonda; 09.02.2012

Это дополнение, не претендующее на роль ответа.

Монитор процессов в Windows показывает, что ruby.exe делает циклы при выполнении assets:precompile и в каждом цикле снова и снова запрашивает все установленные драгоценные камни.

Рельсы 3.2.1

person Paul    schedule 18.09.2012