После того, как я добавил Sprockets, Rails загружается очень медленно в режиме разработки, что мне сделать, чтобы ускорить его?
Rails 3.1 очень медленно работает в режиме разработки из-за ресурсов, что делать?
Ответы (5)
Взгляните на https://github.com/wavii/rails-dev-tweaks. .
Rails запускает все хуки to_prepare для каждого запроса ресурса Sprockets в режиме разработки. Это включает в себя такие вещи, как автоматическая (повторная) загрузка вашего кода, а также различные драгоценные камни.
rails-dev-tweaks отключает to_prepare и перезагрузку при любом запросе ресурсов (и некоторые другие — прочитайте первую часть README). Значительно ускоряет вашу среду разработки для любого проекта приличного размера. Это также можно настроить для любых дополнительных запросов, которые вам нравятся.
Сославшись на несколько результатов Google по этой проблеме, я определил, где находится проблема с DNS.
Проблема в том, что Rails выполняет обратный поиск. Итак, если вы запрашиваете с прямого IP-адреса или имени хоста в /etc/hosts только машины с браузером, что я часто делаю, потому что я запускаю все в собранных вместе виртуальных машинах, и этот IP-адрес не разрешается во что-то быстро на сервере разработки Rails будет ждать каждого запроса.
Мораль истории? Включите запись /etc/hosts для каждого IP-адреса, связанного с вашей разработкой на сервере разработки (т. е. на сервере, на котором запущены рельсы). Это означает, что нужно сделать запись hosts для каждого поддельного/виртуального/и т. д. IP-адреса на сервере разработки, который, как вы ожидаете, будет участвовать в тестировании рельсов, потому что, когда он регистрирует запросы и тому подобное, он будет выполнять обратный поиск и Вы хотите, чтобы это было быстро.
Странное решение, которое сработало для меня. Обычно я переходил к своему приложению при разработке через myapp.local:3000, который был установлен в моем файле hosts. Активы загружались смехотворно медленно.
Перейдя к моему приложению через 127.0.0.1:3000, активы загружались быстро, и, кроме того, после одного использования локального IP-адреса я мог затем перемещаться с помощью myapp.local:3000, и теперь активы загружались очень быстро.
Хотел бы я рассказать вам, почему, но я надеюсь, что это поможет кому-то там. У меня OS X 10.7.5.
Вы видели, как быстро он работает в продакшене? Среда разработки ведет себя иначе, чем тестирование и производство, и из-за этого страдает больше производительности. Без дополнительной информации мы не сможем дать вам лучший ответ.
Также ознакомьтесь с Turbo Sprokets здесь — https://github.com/ndbroadbent/turbo-sprockets-rails3< /а>
Выглядит многообещающе.
assets:precompile
, а среда разработки компилируется на лету.
- person Turadg; 27.02.2013