MiniMagick错误。未定义的方法'调整大小'

时间:2014-11-25 23:57:53

标签: ruby-on-rails ruby imagemagick carrierwave minimagick

此错误仅在Ruby on Rails服务器执行时发生。

我尝试通过实现自己的功能来绕过Carrierwave的调整大小选项,但结果相同。

当我从命令行运行脚本时(我需要' mini_magick' gem)。一切都完美无瑕。

MiniMagick gem似乎安装正确,说实话,我有点想出来解决这个问题。

某些版本(不确定是否有用):

  • ruby​​ - 1.9.3p545
  • rails - 4.1.1
  • mini_magick - 4.0.1
  • ImageMagick - 6.9.0-0 Q16

感谢任何帮助。

-edit,我使用的是Windows 8.1

示例代码:

require 'mini_magick'

filename = 'test.jpg'
image = MiniMagick::Image.open(filename)
image.resize "1000x1000"
image.format "png"
image.write "test.png"

从cmd执行上面的代码完美无瑕。

thumb = MiniMagick::Image.open(i.image.path)
thumb.resize "200*200"
上面的

代码片段在放入控制器(创建)时会在RoR中抛出错误

或者,直接从carrierwave取消注释resize选项会引发完全相同的错误。

# version :thumb do
  #   process :resize_to_fill => [200, 200]
# end

还有一点注意事项: 我已经禁用了minimagicks验证,以确定导致它在当时发生错误的原因:

  

无法使用MiniMagick进行操作,也许它不是图像?原始错误:找不到可执行文件:"识别"

我希望这可以解决一些问题。

-edit

我决定将Windows作为开发平台,并作为开发平台切换到Linux。修复了我的所有问题(事后看来,我的错误可能是由于某些方面缺乏对imagemagick方面的依赖)。

3 个答案:

答案 0 :(得分:1)

我最近在以下环境中遇到过类似的问题:

  • Windows 8.1
  • Ruby 2.1.5p273
  • Ruby Dev Kit 2.1.5
  • Rails 4.2.0.beta4
  • carrierwave 0.10.0
  • mini_magick 4.0.1
  • ImageMagick6.9.0-Q16安装在C:\ ImageMagick-6.9.0-Q16

在RubyMine的rails控制台中,我会得到:

未找到可执行文件:"识别"

只需键入两件事后就可以了:

filename = 'test.jpg'
image = MiniMagick::Image.open(filename)

其中一个步骤是将C:\ ImageMagick-6.9.0-Q16添加到我的Windows PATH环境变量中。起初,这没有任何帮助。但是,在关闭并重新打开RubyMine之后,问题就消失了 - 我假设因为对PATH env var的更改(使用独立的Windows命令提示符完成)并没有影响RubyMine IDE环境。

答案 1 :(得分:0)

  

未找到可执行文件:"识别"

这是MiniMagick(Source code)的错误消息。我想,正如错误消息所示,您的服务器找不到可执行文件"识别"。

确保您的ENV [' PATH']具有"识别"的路径。存在。

答案 2 :(得分:0)

我遇到了同样的问题。

它在我的localhost上完美运行,但在服务器上(Windows 2012),它只能用作rake任务。当在应用程序内部运行时,它无法说

NoMethodError (undefined method `resize' for #<MiniMagick::Image:0x28c3260>):

不幸的是,路径变量已设置...

我通过在模型中使用minimagick-stuff而不是控制器来实现它......令人讨厌的解决方法。