Почему загрузка классов Rails в разработке медленная? - PullRequest
1 голос
/ 13 января 2012

У меня есть большее приложение Rails 3.1.Это становится очень медленным в режиме разработки.Я отследил часть проблемы, чтобы замедлить автозагрузку классов.У меня есть пара сотен моделей в моей системе, и я использую около 130 драгоценных камней.

Если мой контроллер не делает ничего, кроме имен ссылочных классов (то есть

def index
  User
  Order
  Game
  LineItem
  # and so on...
  render :text => ''
end

Загрузка страницы может занятьпочти одну секунду, только для некоторых моих моделей. Журнал выглядит примерно так:

Completed 200 OK in 762ms (Views: 3.2ms | ActiveRecord: 3.9ms)

Я проверял это на Ruby 1.9.2 и 1.9.3.

Ответы [ 4 ]

1 голос
/ 15 октября 2015

Это связано с автоматической перезагрузкой классов при работе в режиме разработки, что облегчает нам задачу, когда мы вносим изменения в код и обновляем страницу.Это поведение регулируется config.cache_classes в вашем config/environment/development.rb файле.

 # In the development environment your application's code is reloaded on
 # every request. This slows down response time but is perfect for development
 # since you don't have to restart the web server when you make code changes.
 config.cache_classes = false

Когда config.cache_classes установлен в false, Rails будет использовать оператор load для загрузки своего класса.Если установлено значение true, вместо этого будет использоваться оператор require.

Это относится ко всем файлам в вашем приложении, которые необходимо загрузить.Вы можете проверить это, зайдя в rails console и введя $LOAD_PATH.Я уверен, что у вас есть тонны этого.

1 голос
/ 15 марта 2012

Это было в основном исправлено в Rails 3.2.

0 голосов
/ 13 января 2012

Это компромисс, который вы делаете при работе в среде разработки;вы получаете автозагрузку (невероятно полезную при разработке) в обмен на худшую производительность.На производстве вы получаете лучшую производительность за счет автозагрузки (которая в любом случае не так уж полезна на производстве).

0 голосов
/ 13 января 2012

Ну, вот что делает режим разработки, он перезагружает ваш код, так что вам не нужно перезагружать сервер.

Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...