Как предварительно разделить строку для хэша в ruby? - PullRequest
2 голосов
/ 05 ноября 2010

В paperclip.rb (lib / paperclip.rb) в блоке комментариев, касающихся метода has_attached_file, в строке 251 (в версии 2.3.3) записано, что хеш :convert_options:

ПРИМЕЧАНИЕ. Строки, переданные в: convert_options, разбиты на пробелы для обеспечения цитирования оболочки в целях безопасности.Если вашим опциям требуется пробел, предварительно разделите их и передайте массив: convert_options.

Мне нужно передать опцию -unsharp 1x2+1+.10 в Imagemagick, но не могу понять, как /не знаю, что значит предварительно разбить строку.

Я пробовал:

:eightythumb => ['-antialias', '-thumbnail', '-unsharp 1x2+1+.10']
:eightythumb => ['-antialias', '-thumbnail', '-unsharp', '1x2+1+.10']
:eightythumb => ['-antialias', '-thumbnail', ['-unsharp', ' ', '1x2+1+.10']]
:eightythumb => ['-antialias', '-thumbnail', ['-unsharp', '+' '1x2+1+.10']]

обновить : также пытался

:eightythumb => ['-antialias', '-thumbnail', ['-unsharp', '1x2+1+.10']]

но все они отправляются в Imagemagick из Paperclip как '-antialias' '-thumbnail' '-unsharp' '1x2+1+.10', что приводит к ошибке, поскольку -unsharp и 1x2+1+.10 не находятся в одной строке.

окончательное обновление:

Моя ошибка произошла от -thumbnail, требующего аргумента измерения, и не имела никакого отношения к разбиению строки.Вы можете передать параметры Imagemagick следующим образом:

:convert_options => { :eightythumb => ['-thumbnail 80x80', '-antialias', 'unsharp 1x2+1+.10'] }

, и они будут проходить очень хорошо.

1 Ответ

1 голос
/ 05 ноября 2010

Я думаю, это означает, что он ищет что-то вроде этого:

:eightythumb => ['-antialias', '-thumbnail', '-unsharp 1x2+1+.10']

Если вы передадите одну строку, она разбьет ее на пробельные символы.Если вы передадите ему массив строк, он будет обрабатывать каждую как полную опцию.

Обновление: Что произойдет, если вы добавите escape-символы самостоятельно?Как в '-unsharp\ 1x2+1+.10'.

...