Rails Ubuntu 14.04 升级引起的问题

joezhang · 2015年05月01日 · 最后由 joezhang 回复于 2015年05月03日 · 2805 次阅读

本地使用 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

需要 登录 后方可回复, 如果你还没有账号请 注册新账号