Rails Наблюдатели, плагины и миграции находятся в гонке, кто победит? - PullRequest
1 голос
/ 13 сентября 2011

Мы только что добавили пару наблюдателей в наше приложение Rails.Теперь при запуске миграции с нуля мы получаем сообщение о том, что таблица не существует (да, мы еще не мигрировали).Ошибка выдается, потому что загружается плагин в модели, который запрашивает имя_столбца.

Я предполагаю, что наблюдатели вызывают загрузку моделей, потому что, когда мы закомментируем строку наблюдателей в application.rb, ошибка не выдается.

Как запустить миграцию без загрузки наблюдателей и моделей?

или

Как запросить имена столбцов в моем плагине таким образом, чтобы не выдавать ошибкупри запуске миграций?

Ответы [ 3 ]

5 голосов
/ 20 сентября 2011

В Rails 3 вы можете пропустить добавление наблюдателей, определив, запущен ли Rake:

config.active_record.observers = :my_model_observer unless File.basename($0) == 'rake'

Это отключает наблюдателей, что означает, что модели и плагины не загружены.

1 голос
/ 13 сентября 2011

Я не нашел достойного способа отключить Наблюдатели во время выполнения.Ранее это обсуждалось в Простом способ выключения наблюдателей во время рейка?

Однако, я думаю, вы могли бы «отключить» код плагина от вашей модели, переопределив проблемную модель в вашеммиграция:

class YourMigration < ActiveRecord::Migraation
  class YourModel < ActiveRecord::Base; end

  def self.up
    ...
  end

  def self.down
    ...
  end
end
0 голосов
/ 13 сентября 2011

В вашей модели вы можете поймать конкретное исключение, сгенерированное при запуске миграции.

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