开发者

How to pre-split a string for a hash in ruby?

In paperclip.rb (lib/paperclip.rb), in a block of comments regarding the has_attached_file method, on line 251 (in version 2.3.3), it reads regarding the :convert_options hash:

NOTE: Strings supplied to :convert_options are split on space in order to undergo shell quoting for safety. If your options require a space, please pre-split them and pass an array to :convert_options instead.

I need to pass an option -unsharp 1x2+1+.10 to Imagemagick, but can't figure out how / don't know what it means to pre-split the string.

I've tried:

: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']]

update: have also tried

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

but they all get sent to Imagemagick from Paperclip as '-antialias' '-thumbnail' '-unsharp' '1x2+1+.10' which throws an error since -unsharp and 1x2+1+.10 aren't in the same string.

final update:

My error stemmed from -thumbnail requiring a dimension argument and had nothing to do with splitting the string. You can pass options to Imagemagick like this:

开发者_如何学运维
:convert_options => { :eightythumb => ['-thumbnail 80x80', '-antialias', 'unsharp 1x2+1+.10'] }

and they'll go through just fine.


I think it means that it's looking for something like this:

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

If you pass a single string, it will split it at whitespace characters. If you pass it an array of strings, it will treat each as a complete option.

Update: What happens if you add the escape characters yourself? As in '-unsharp\ 1x2+1+.10'.

0

上一篇:

下一篇:

精彩评论

暂无评论...
验证码 换一张
取 消

最新问答

问答排行榜