Rails: запуск инициализатора после мигрирования

StackOverflow https://stackoverflow.com/questions/19841292

  •  29-07-2022
  •  | 
  •  

Вопрос

У меня есть код, который я запускаю с инициализатора, и он работает нормально. (Он сохраняет настройки по умолчанию из файла YAML в базу данных для Rails Settings-Cache жемчужина.)

Но когда я запускаю это на Travis CI, поскольку он совершает миграцию с нуля, инициализатор не работает, потому что таблица еще не существует.

Есть ли способ запустить код после миграция, но до начала приложения?

Это было полезно?

Решение

Поэтому, хотя я не люблю это делать, простой способ предотвратить работу инициализатора во время DB: мигрировать, но запуск запуска приложения или тестового запуска состоит в том, чтобы обернуть его в тестирование пункта, если таблица существует. Поэтому, если вы возьмете свой существующий код инициализатора и оберните его в

if ActiveRecord::Base.connection.table_exists? 'table_name'
   ....
end

Где «table_name» - это имя пропущенной таблицы, то оба грабли DB: Migrate и Spec Run должен быть в состоянии успешно завершить.

Лицензировано под: CC-BY-SA с атрибуция
Не связан с StackOverflow
scroll top