Заполнение не удается, когда инициализатор запускается
В последнее время я использую следующий инициализатор в проекте Rails 5:
Инициализаторы /initialize_configs.rb
$current_city = Config.first.city
Но после нескольких изменений мне пришлось использовать rails db:migrate и rails db:seed, а затем я получил эту ошибку. До этого момента мое приложение работало хорошо.
Config - это таблица, состоящая только из одной строки, в которой я сохраняю конфигурации для каждого VPS, а $current_city также является переменной, имеющейся у каждого VPS.
Проблема в том, что эта ошибка появляется, когда я делаю rails db:seed, и поэтому я не могу загрузить свою первоначальную конфигурацию.
Как я мог решить проблему, все еще загружая эту начальную далту?
1 ответ
Когда ты бежишь rails db:seed
тогда Rails инициализируется, иначе вы не смогли бы использовать модели Rails в этом файле. И это является причиной вашей проблемы. Потому что в этом процессе инициализации Config.first.city
должен произойти сбой, потому что в базе данных еще нет данных.
Непонятно, зачем вам нужно загружать конфигурацию приложения из базы данных. А другие уже отмечали, что это сомнительно и похоже на запах кода.
Тем не менее, в настоящее время у вас есть два варианта:
- Не используйте начальный файл Rails для заполнения базы данных. Вместо этого используйте, например, простой SQL. Или же
- изменить код в инициализаторе, чтобы иметь возможность обрабатывать ситуации, в которых
Config.first
пусто Например, используя разумные значения по умолчанию.