Профилирование медленных активов в процессе разработки

Каждый раз, когда я вношу изменения в мой SASS в разработке, я получаю 20 с + время загрузки при загрузке application.css.

Я прочитал несколько других вопросов и попробовал:

  • Настройка config.assets.debug = false.
  • Изменение импорта и необходимость (я использую переменные SASS)
  • Использование Miniprof и его автографа
  • Использование rails-asset_profile

Вот что я читал:

У меня возникла проблема с Rails 3.2 и теперь в 4.2.

Я схожу с ума. Как найти узкое место в этом беспорядке?

Я ищу решение, которое позволяет точно определить, где время тратится, и предлагает способы сократить время компиляции.

Ответ 1

Существует жемчужина, называемая quiet_assets, которая подавляет регистрацию загрузки активов. Во времена рельсов 3.x он резко ускорил мой режим разработки. Дайте мне знать, если это поможет.

Ответ 2

Посмотрите на sprockets источник найти метод в Sprockets:: Manifest class. Вы можете изменить его следующим образом:

paths.each do |path|
  start = Time.now
  puts "Start #{path}"
  environment.find_all_linked_assets(path) do |asset|
    yield asset
  end
  puts "Finished: #{Time.now - start}"
end

Таким образом, он будет печатать все время, необходимое для компиляции каждого актива. Надеюсь, это поможет:)

Изменить: этот фрагмент кода находится в ветке master. Вы можете просмотреть и отредактировать текущую версию sprockets, используя

bundle open sprockets

Выход после изменений:

$ rake assets:precompile 
Start admin.css
I, Ä2015-11-28T10:45:26.986231 #45492Ü  INFO -- : Writing /Users/sky/projects/photo_school/public/assets/admin-0e445dcfdc3bd3029943b7d3621b4156c9838eed229c3628f8c558cbb3ce1a59.css
Finished: 10.165564

EDIT: немного изменил код и изменил ссылку (вчера поставил ссылку на неправильную вилку: спешил, выяснил ваш вопрос только за 15 минут до закрытия баунти:)). Я проверил этот код в своем проекте и работает правильно (проект использует версию 3.3.3 звездочек).