Ehcache & MultiThreading

Код, ответственный за это, находится в классе Buffer в open-uri. Он начинается с создания объекта StringIO и создает фактический временный файл в локальной файловой системе только тогда, когда данные превышают определенный размер (10 КБ).

Я предполагаю, что любые данные, загружаемые тестом, достаточно малы, чтобы их можно было хранить в StringIO, а изображения, которые вы используете в реальном приложении, достаточно велики, чтобы гарантировать наличие файла TempFile. Решение состоит в том, чтобы использовать методы, которые являются общими для обоих классов, в частности метод read, с MiniMagick :: Image # from_blob:

temp_image = MiniMagick::Image.from_blob(open(self.public_filename, &:read))
14
задан Mark 2 June 2009 в 11:08
поделиться

1 ответ

Это может помочь ответить на ваш вопрос из FAQ :

Безопасно ли для потоков изменять значения элементов после извлечения из кэша?

Помните, что значение в элементе кэша является глобальным доступный из нескольких потоков. Изменение значения изначально небезопасно для потоков. Безопаснее получить значение, удалить элемент кеша и затем повторно вставить значение.

(выделено мной)

13
ответ дан 1 December 2019 в 14:22
поделиться
Другие вопросы по тегам:

Похожие вопросы: