繁体   English   中英

Imagemagick在Mac中没有此类文件或目录错误

[英]Imagemagick no such file or directory error in Mac

我正在使用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安装它。 我甚至尝试卸载它并使用源重新安装它,但这也无效。

我不确定我在这里做错了什么? 请帮我解决这个问题。

根据错误,

No such file or directory - /uploads/stories/533d5b8756617390c0070000/res/636a8fe128.jpg

636a8fe128.jpg在给定路径中不存在,即/uploads/stories/533d5b8756617390c0070000/res或者

/uploads/stories/533d5b8756617390c0070000/res此路径中的一个或所有目录都不存在。 我建议去终端并浏览路径,看看它是否允许你更改目录,直到你到达res目录。 如果是,则在res目录中执行ls -l并查看输出是否显示636a8fe128.jpg文件。

UPDATE

指定包括Rails.root的完整路径:

def store_dir 
  "#{Rails.root}/public/uploads/stories/#{model.viewable_id}/res" 
end

没有#{Rails.root}/public/ ,生成的路径是/uploads/stories/533d5b8756617390c0070000/res/636a8fe128.jpg其中第一个/指向服务器的根目录。

暂无
暂无

声明:本站的技术帖子网页,遵循CC BY-SA 4.0协议,如果您需要转载,请注明本站网址或者原文地址。任何问题请咨询:yoyou2525@163.com.

 
粤ICP备18138465号  © 2020-2024 STACKOOM.COM