本地使用 Vagrant 安装的 Ubuntu 14.04(ubuntu/trusty64 box)上面跑的 rails 环境。最近看到提示,使用 vagrant box update 升级到 v20150422.0.1 版本,之前使用得很正常的 Carrierwave,Jcrop,Minimagick 上传图片更改大小功能就不工作了(其他一切功能都正常,真是太奇怪了),查 Nginx log 也没提示错误,有人遇到这样的情况吗? 请大家帮帮忙?谢谢了!
有没有装 imagemagic
@billy 装了的,我上面提到,在原来的 ubuntu 版本上一切功能都正常的。vagrant box update 升级后就不工作了(升级前后没有程序改动,所以基本可以确认不是代码的错误)。 查了一下,/public/uploads/tmp 下的 cache 目录有上传的原始图片(包括 large 和 thumb 格式图片文件)不知什么原因导致@project.save错误就总是跳转到 new 页面。
def create @project = current_user.projects.build(project_params) if @project.save render :crop_project_photo else render 'new' end end
谢谢了!
不客气。这个情况看 niginx log 没什么用的,看 Rails log 或者打断点吧。
@billy 我试着在 save 前先执行 crop_project_photo 操作,才发现截图功能不正常,但不知道怎么查找原因。(日常使用 sublime 来写程序)
重新降回 ubuntu 14.04 server 旧版本,确认 ImageMagick 在 ubuntu 14.04 server 上是正常安装了的。本机 development 环境也可以正常运行。Production 就是跑不通,真是不知道该怎么弄了。 逻辑也很简单,Project 中 photo 字段引用 PhotoUploader,就是不知道为什么引起 Project save 失败! carrierwave 0.10.0 mini_magick 3.8.1
vagrant@vagrant-ubuntu-trusty-64:/vagrant/project$ convert -version Version: ImageMagick 6.7.7-10 2014-03-06 Q16 http://www.imagemagick.org Copyright: Copyright (C) 1999-2012 ImageMagick Studio LLC Features: OpenMP vagrant@vagrant-ubuntu-trusty-64:/vagrant/project$ identify -version Version: ImageMagick 6.7.7-10 2014-03-06 Q16 http://www.imagemagick.org Copyright: Copyright (C) 1999-2012 ImageMagick Studio LLC Features: OpenMP vagrant@vagrant-ubuntu-trusty-64:/vagrant/project$ display -version Version: ImageMagick 6.7.7-10 2014-03-06 Q16 http://www.imagemagick.org Copyright: Copyright (C) 1999-2012 ImageMagick Studio LLC Features: OpenMP
class Project < ActiveRecord::Base mount_uploader :photo, PhotoUploader ... end class PhotoUploader < CarrierWave::Uploader::Base include CarrierWave::MiniMagick storage :file def store_dir "uploads/project/#{model.id}" end def cache_dir 'uploads/tmp/project-cache' end process resize_to_limit: [1120,-1] version :thumb do process resize_to_fill: [200, 100] end version :large do end after :store, :unlink_original def unlink_original(file) File.delete if version_name.blank? end def extension_white_list %w(jpg jpeg gif png) end end
在 stackoverflow 发现一个同样的错误,但是没人回答解决! http://stackoverflow.com/questions/26839580/carrierwave-image-upload-issues-in-ubuntu-14-04