Это потому, что ваша текущая конфигурация среды говорит Rails сделать это. Я предполагаю, что вы используете «развитие», но у вас есть «производство», а также «тестирование».
Существует возможность кэшировать классы в любой конфигурации вашего envs. Проверьте текущий (я полагаю, вы используете "развитие"):
config/environments/development.rb
и измените эту опцию на true
:
# 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 webserver when you make code changes.
config.cache_classes = true
Затем запустите сервер в текущей среде. Для разработки:
bundle exec rails s
достаточно.
Это делает 2 вещи:
1) when Rails start, it will now read all classes' definitions
(models) up front, and keep it for each request.
When you change a class now, no code will be reloaded automatically
2) Rails will not ask database for model metadata change,
so no "describe table" will go to database in any request
Для env "Production" по умолчанию для этой опции установлено значение "true". Но «производственная» среда предназначена для производства, а не развития. Вы можете указать различные параметры, URL, VAR там ..