2015-09-02 21 views
0

我剛剛開始使用Rails應用程序中的MiniMagick,並且遇到了一個我無法在任何地方找到引用的問題。我的超簡單的測試情況如下:MiniMagick shell_api爲空?

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/[email protected]/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不應該是零。

我在

  • JRuby的1.7.18
  • 的Rails 3.2.21
  • 的Mac OSX 10.9.5
  • GraphicsMagick工具1.3.21 2015年2月28日Q8

我也看到了同樣的錯誤使用ImageMagick 6.9.1-1 Q16 x86_64 2015-04-15。我可以在命令行上使用GraphicsMagick來調整圖像的大小,而不會出現問題。我甚至在我的Rails應用程序之外編寫了一個簡單的Ruby類,並且相同的代碼在其中正常工作!

有什麼想法?

回答

0

我今天早上開始通過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') 
相關問題