Работает для меня:
.boldoption {
font-weight: bold;
}
<select>
<option>Some normal-font option</option>
<option>Another normal-font option</option>
<option class="boldoption">Some bold option</option>
</select>
Код, ответственный за это, находится в классе Buffer в open-uri. Он начинается с создания объекта StringIO и создает фактический временный файл в локальной файловой системе только тогда, когда данные превышают определенный размер (10 КБ).
Я предполагаю, что любые данные, загружаемые тестом, достаточно малы, чтобы их можно было хранить в StringIO, а изображения, которые вы используете в реальном приложении, достаточно велики, чтобы гарантировать наличие файла TempFile. Решение состоит в том, чтобы использовать методы, которые являются общими для обоих классов, в частности метод read, с MiniMagick :: Image # from_blob:
temp_image = MiniMagick::Image.from_blob(open(self.public_filename, &:read))
Библиотека open-uri использует константу для установки предела размера в 10 КБ для объектов StringIO.
> OpenURI::Buffer::StringMax
=> 10240
Вы можете изменить эту настройку на 0, чтобы в open-uri никогда не создавался объект StringIO. Вместо этого это заставит его всегда создавать временный файл.
Просто добавьте это в инициализатор:
# Don't allow downloaded files to be created as StringIO. Force a tempfile to be created.
require 'open-uri'
OpenURI::Buffer.send :remove_const, 'StringMax' if OpenURI::Buffer.const_defined?('StringMax')
OpenURI::Buffer.const_set 'StringMax', 0
Вы не можете просто установить константу напрямую. Вам нужно удалить константу и затем установить ее снова (как указано выше), в противном случае вы получите предупреждение:
warning: already initialized constant StringMax
ОБНОВЛЕНО 18/12/2012 : Rails 3 не по умолчанию не требуется OpenURI, поэтому вам нужно добавить require 'open-uri'
вверху инициализатора. Я обновил код выше, чтобы отразить это изменение.