【发布时间】:2014-04-03 14:14:22
【问题描述】:
我正在使用carrierwave从我的rails应用上传图片,然后将该图片传递给resque以在后台调整它们的大小。图像已正确上传。 resque 尝试调整大小时的问题,mini_magick 说“没有这样的文件或目录”
这是我处理上传的 ImageController 代码
#create image and embed into story
def create
img_attr = params[:image]
img_attr[:media] = params[:image][:media].first if params[:image][:media].class == Array
image = Image.new img_attr
@story.images << image
if @story.save
Resque.enqueue(ImageQueue,image.id)
respond_to do |format|
format.json {
render :json => [image.to_jq_upload].to_json
}
end
else
render :json => [{:error => 'custom_failure'}], :status => 304
end
end
这是我的 Resque 代码
class ImageQueue
@queue = :image_queue
def self.perform(image_id)
image = Image.find image_id
image.recreate_delayed_versions!
image.save
end
end
这里设置了上传路径
def store_dir
"uploads/stories/#{model.viewable_id}/res"
end
这是我得到的错误堆栈
No such file or directory - /uploads/stories/533d5b8756617390c0070000/res/636a8fe128.jpg
/Users/skmvasu/.rvm/gems/ruby-2.0.0-p451/gems/mini_magick-3.7.0/lib/mini_magick/image.rb:110:in `initialize'
/Users/skmvasu/.rvm/gems/ruby-2.0.0-p451/gems/mini_magick-3.7.0/lib/mini_magick/image.rb:110:in `open'
/Users/skmvasu/.rvm/gems/ruby-2.0.0-p451/gems/mini_magick-3.7.0/lib/mini_magick/image.rb:110:in `open'
/Users/skmvasu/repo/mangoweb/app/uploaders/image_uploader.rb:97:in `original_dimensions'
/Users/skmvasu/.rvm/gems/ruby-2.0.0-p451/gems/carrierwave-0.10.0/lib/carrierwave/uploader/processing.rb:84:in `block in process!'
/Users/skmvasu/.rvm/gems/ruby-2.0.0-p451/gems/carrierwave-0.10.0/lib/carrierwave/uploader/processing.rb:76:in `each'
/Users/skmvasu/.rvm/gems/ruby-2.0.0-p451/gems/carrierwave-0.10.0/lib/carrierwave/uploader/processing.rb:76:in `process!'
奇怪的是,相同的代码在我的 Linux 机器和我的生产机器上也能运行 Linux,但在我的新 Mac 上却不行。 ImageMagick 有问题吗?我正在通过 Homebrew 安装它。我什至尝试卸载它并使用源重新安装它,但这也不起作用。
我不确定我在这里做错了什么?请帮我解决这个问题。
【问题讨论】:
-
这听起来像是 minimagick 让你悲伤,而不是 imagemagick 本身。你会考虑使用
Rmagick代替 minimagick 吗? rmagick.rubyforge.org 这是一个很好的链接:blog.paulopoiati.com/2013/01/28/… 在开发和生产机器上,我在 osx 和 ubuntu 中使用 rmagick 取得了很大的成功。 Rmagick 也完全兼容carrierwave。
标签: ruby-on-rails macos imagemagick carrierwave