Rails 3.1 очень медленно работает в режиме разработки из-за ресурсов, что делать?

После того, как я добавил Sprockets, Rails загружается очень медленно в режиме разработки, что мне сделать, чтобы ускорить его?


person jonepatr    schedule 22.09.2011    source источник
comment
Не могли бы вы предоставить: часть Gemfile, которую вы изменили, это Rails 3.1 или модифицированное приложение Rails 3.0.x, какова ваша конфигурация в режиме разработки для активов?   -  person mliebelt    schedule 23.09.2011


Ответы (5)


Взгляните на https://github.com/wavii/rails-dev-tweaks. .

Rails запускает все хуки to_prepare для каждого запроса ресурса Sprockets в режиме разработки. Это включает в себя такие вещи, как автоматическая (повторная) загрузка вашего кода, а также различные драгоценные камни.

rails-dev-tweaks отключает to_prepare и перезагрузку при любом запросе ресурсов (и некоторые другие — прочитайте первую часть README). Значительно ускоряет вашу среду разработки для любого проекта приличного размера. Это также можно настроить для любых дополнительных запросов, которые вам нравятся.

person Nevir    schedule 24.09.2011
comment
Хороший драгоценный камень, он сделал активы полезными. Rails долго загружала одну страницу со слишком большим количеством ресурсов. - person Ian; 01.10.2011
comment
Разработка Rails теперь снова потрясающая! :) - person Frexuz; 12.11.2011
comment
ДААААААААААААААААААААААА! ^ ^ ТО. РАБОТАЕТ. КРАСИВО! - person Houen; 22.12.2011
comment
Будь очень осторожен. Часы и часы времени разработки были потеряны из-за этого драгоценного камня. - person JZ.; 09.05.2012
comment
С какими проблемами вы столкнулись? Если у вас есть время, вырежьте github issue в проекте; Мне было бы интересно посмотреть, как ваш рабочий процесс отличается и как он влияет на него. - person Nevir; 09.05.2012

Сославшись на несколько результатов Google по этой проблеме, я определил, где находится проблема с DNS.

Проблема в том, что Rails выполняет обратный поиск. Итак, если вы запрашиваете с прямого IP-адреса или имени хоста в /etc/hosts только машины с браузером, что я часто делаю, потому что я запускаю все в собранных вместе виртуальных машинах, и этот IP-адрес не разрешается во что-то быстро на сервере разработки Rails будет ждать каждого запроса.

Мораль истории? Включите запись /etc/hosts для каждого IP-адреса, связанного с вашей разработкой на сервере разработки (т. е. на сервере, на котором запущены рельсы). Это означает, что нужно сделать запись hosts для каждого поддельного/виртуального/и т. д. IP-адреса на сервере разработки, который, как вы ожидаете, будет участвовать в тестировании рельсов, потому что, когда он регистрирует запросы и тому подобное, он будет выполнять обратный поиск и Вы хотите, чтобы это было быстро.

person Randy Wallace    schedule 21.01.2013
comment
Я столкнулся с той же проблемой, можете ли вы привести пример? - person Kit Ho; 09.10.2013
comment
Я бы хотел, чтобы этот ответ был сформулирован лучше, потому что я не могу понять это. - person Thomas Potaire; 11.02.2015

Странное решение, которое сработало для меня. Обычно я переходил к своему приложению при разработке через myapp.local:3000, который был установлен в моем файле hosts. Активы загружались смехотворно медленно.

Перейдя к моему приложению через 127.0.0.1:3000, активы загружались быстро, и, кроме того, после одного использования локального IP-адреса я мог затем перемещаться с помощью myapp.local:3000, и теперь активы загружались очень быстро.

Хотел бы я рассказать вам, почему, но я надеюсь, что это поможет кому-то там. У меня OS X 10.7.5.

person nelsonenzo    schedule 12.08.2013

Вы видели, как быстро он работает в продакшене? Среда разработки ведет себя иначе, чем тестирование и производство, и из-за этого страдает больше производительности. Без дополнительной информации мы не сможем дать вам лучший ответ.

person Adam Eberlin    schedule 23.09.2011