Как создать постоянную таблицу в тестовой базе данных приложения Rails? - PullRequest
1 голос
/ 17 ноября 2009

У меня есть приложение rails, которое ссылается на метеорологический набор данных TMY3 , который представляет собой тонну различных почасовых наблюдений за погодой для более чем 1000 различных мест.

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

Однако индексация требуетхорошие 5 минут, что делает ОГРОМНУЮ боль при каждой загрузке тестов.Эта таблица никогда не меняется, поэтому я хотел бы просто загрузить ее один раз в мою среду тестирования, а затем оставить ее там, чтобы выполнить остальные мои тесты.Все остальные мои модели и таблицы - это стандартные рельсовые компаньоны, которые разрабатываются или пересматриваются по мере необходимости.

Есть идеи?

Ответы [ 3 ]

2 голосов
/ 17 ноября 2009

Для модели, которую вам не нужно разрушать во время тестирования, поместите ее в отдельную базу данных для целей тестирования. Только тестовая база данных, загруженная из database.yml, очищается и перестраивается из схемы базы данных разработки.

class PersistModel < ActiveRecord::Base
    PersistModel.establish_connection(
       :adapter  => "sqlite3",
       :database => "db/persist.sqlite3"
    )
end

Этот класс никогда не очистит свою базу данных.

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

class WeatherTest < Weather
    WeatherTest.establish_connection(
       :adapter  => "sqlite3",
       :database => "db/weather.sqlite3"
    )
end

Таким образом, все ваши функции из «реальной» модели доступны для вашей тестовой версии.

1 голос
/ 17 ноября 2009

Вы можете увидеть, если этот вопрос о db: test: prepare относится к вашей ситуации.

0 голосов
/ 17 ноября 2009

Сам не пробовал, но может ли один из плагинов кэширования предложить решение? Расширенное кэширование - из Руководств по Rails

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