Это запутанный пример, так что терпите меня:
У меня есть скрипт, который я обычно использую во время разработки, который уничтожит мои таблицы моих тестовых и тестовых баз данных, перенастроит их, а затем повторно заполнит их.Из-за моего использования триггеров в нескольких местах мне пришлось использовать rake db: migrate RAILS_ENV = test, чтобы правильно перенести мою тестовую базу данных.
Все было хорошо, пока я не включил config.cache_classes = true вмоя тестовая среда.Затем, когда миграция рейка выполнялась в пустой базе данных, я получал сообщение об отсутствии таблицы.Запустив это с --trace, я обнаружил, что он взрывается на одном из моих объектов, когда он объявляет базовую область видимости:
scope :find_by_route_and_date, lambda { |route_id, date|
{
:conditions=>{:route_id=>route_id, :schedule_date=>date}
}
}
Область видимости находится в лямбда-выражении, поэтому его не следует оценивать, но в тот момент, когда я удаляю cache_classes, миграция работает нормально.Поэтому мне кажется, что она пытается кэшировать модель, задыхается в области действия, потому что таблица еще не существует, и никогда не начинает миграцию.
Я схожу с ума?Кто-нибудь еще видел это?Если мне нужно стереть свою базу данных, нужно ли отключить кэширование, затем выполнить миграцию, а затем снова включить ее?
Rails 3.2, ruby 1.9.2, рейк 0.9.2.2
ОБНОВЛЕНО:
В соответствии с запросом, здесь трассировка стека: https://gist.github.com/1705064
Order.rb: 179 - это место, где определена моя первая область и куда она дуетдо того, что я перечислил выше.