如何在ruby中为哈希预分割字符串?

时间:2010-11-05 16:51:31

标签: ruby-on-rails ruby imagemagick paperclip

在paperclip.rb(lib / paperclip.rb)中,在关于has_attached_file方法的注释块中,在第251行(版本2.3.3)中,它读取了有关:convert_options哈希的内容:

  

注意:提供给:convert_options的字符串在空格上分割,以便进行shell引用以确保安全。如果您的选项需要空格,请预先拆分它们并将数组传递给: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']]

但是它们全部从Paperclip发送到Imagemagick '-antialias' '-thumbnail' '-unsharp' '1x2+1+.10',因为-unsharp1x2+1+.10不在同一个字符串中而引发错误。

最终更新:

我的错误源于-thumbnail需要维度参数而与分割字符串无关。您可以将选项传递给Imagemagick,如下所示:

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

他们会经历的很好。

1 个答案:

答案 0 :(得分:1)

我认为这意味着它正在寻找类似的东西:

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

如果传递单个字符串,它将以空格字符分割它。如果你传递一个字符串数组,它会将每个字符串视为一个完整的选项。

更新:如果您自己添加转义字符会怎样?与'-unsharp\ 1x2+1+.10'中一样。