Почему я вижу данные тестовой среды в моем кеше Rails разработки? - PullRequest
4 голосов
/ 06 июля 2011

Я пытаюсь кэшировать переменную класса следующим образом:

Rails.cache.write("@@page_types", @@page_types)

Этот метод вызывается из класса, который я назвал PageTypes.

Если я запускаю консоль рельсов и выполняю:

Rails.cache.write("@@page_types", nil)
Rails.cache.read("@@page_types")

Я получаю ноль. Я оставляю консоль открытой и делаю это в другом окне:

тест рейка: единицы

Когда тесты закончились, я переключаюсь обратно в окно моей консоли rails и делаю

Rails.cache.read("@@page_types")

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

Полагаю, я мог бы добавить Rails.env к ключам кеша, но похоже, что два кеша не должны смешиваться ....

1 Ответ

7 голосов
/ 06 июля 2011

Определите другой кеш-сервер для вашей тестовой среды. Хранилище памяти должно идеально подходить для юнит-тестов.

ActionController::Base.cache_store = :memory_store

в config / средах / test.rb:

config.cache_store = :memory_store
...