我刚开始在Rails应用程序中使用MiniMagick,我遇到了一个问题,似乎在任何地方都找不到引用。我的超级简单测试用例如下:
MiniMagick.configure do |config|
config.cli = :graphicsmagick
end
image = MiniMagick::Image.open("Sunset.png")
image.resize "100x100"
image.format "png"
image.write('composite.png')这会导致
NoMethodError: undefined method `gsub' for nil:NilClass
/Users/me/.rvm/gems/jruby-1.7.18@project/gems/mini_magick-4.3.0/lib/mini_magick/shell.rb:32:in `execute'这个错误是由image.resize调用引发的(尽管image.valid?、image.blank?和其他无疑也会引发相同的错误),而抛出错误的MiniMagick::Shell类中的代码行是:
send("execute_#{MiniMagick.shell_api.gsub("-", "_")}", *command)让我得出结论,MiniMagick.shell_api在不应该是零的情况下是零的。
我上了
我还看到了使用ImageMagick 6.9.1-1 Q16 x86_64 2015-04-15的相同错误.我可以在命令行上使用GraphicsMagick来调整图像的大小,而不会出现问题。我甚至在Rails应用程序之外编写了一个简单的Ruby类,在这个应用程序中,相同的代码工作得很好!
有什么想法吗?
发布于 2015-09-03 13:11:27
今天早上,我开始深入研究MiniMagick代码来解决这个问题。原来,MiniMagick.shell_api是一个配置项。默认值是"open3“。我不知道为什么我的Rails用例要用nil覆盖默认值,但是,通过添加显式配置,我的问题得到了解决,善良占上风。
MiniMagick.configure do |config|
config.cli = :graphicsmagick
config.shell_api = "open3"
end
image = MiniMagick::Image.open("Sunset.png")
image.resize "100x100"
image.format "png"
image.write('composite.png')https://stackoverflow.com/questions/32363173
复制相似问题