CarrierWave + Mini_Magick:未定义的方法`write'for“”:String

时间:2013-09-24 16:10:11

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

最近从RMagick切换到Mini_Magick。我收到错误undefined method 'write' for "":String。这是我的上传者的样子......

class BackgroundUploader < CarrierWave::Uploader::Base
  include CarrierWave::MiniMagick
  include CarrierWave::MimeTypes
  process :set_content_type

  storage :file

  def store_dir
    "uploads/backgrounds/#{model.id}"
  end

  def default_url
    "/assets/fallback/default.jpg"
  end

  process :resize_to_fit => [1024, 1024]
  process :convert => 'jpg'
  process :fix_exif_rotation

  def fix_exif_rotation
    manipulate! do |img|
      img.auto_orient
      img = img.gaussian_blur 5
      img = yield(img) if block_given?
      img
    end
  end

  def extension_white_list
    %w(jpg jpeg png)
  end

end

问题在于fix_exif_rotation方法。如果我注释掉process :fix_exif_rotation行,一切正常。我已经从auto_orient调用结束时删除了,因为从RMagick切换到Mini_Magick时,这似乎导致了其他人的问题。

非常感谢任何帮助。

1 个答案:

答案 0 :(得分:2)

来自上述链接“相关问题2”的

This评论建议分配给img,除了(!?)在收益中,可能会破坏事情,所以我的第一个猜测是尝试只用img.gaussian_blur 5代替img = img.gaussian_blur 5

否则:堆栈跟踪?