使用CarrierWave上传导致“没有此类文件”错误

时间:2013-05-19 20:45:09

标签: ruby-on-rails carrierwave

我刚刚开始玩CarrierWave并且无法让它表现出来。

按照Rails Casts中的说明设置完所有内容后,我收到以下错误:No such file or directory - identify -quiet -ping /tmp/mini_magick20130519-13712-lxhans.jpg 注意:我知道typo in that Rails Cast并且我的代码中不存在该问题。

在我的开发环境中,我安装了libmagickwand-dev包,运行Rails 3.2.9Ruby 1.9.3p194等。我的Gemfile包含mini_magick

传递给服务器的请求是:

{"utf8"=>"✓",
 "authenticity_token"=>"8ugcdkjOy/5yeodhuTgMXYdrXlcu2xPjxWTvvRwKnWM=",
 "organization"=>{"logo"=>#<ActionDispatch::Http::UploadedFile:0x0000000426c3d0 @original_filename="leather-tshirt-weird-square.jpg",
 @content_type="image/jpeg",
 @headers="Content-Disposition: form-data; name=\"organization[logo]\"; filename=\"leather-tshirt-weird-square.jpg\"\r\nContent-Type: image/jpeg\r\n",
 @tempfile=#<File:/tmp/RackMultipart20130519-13712-1uvmtem>>,
 "name"=>"Test Org",
 "description"=>"blah",
 "timezone"=>"1"},
 "commit"=>"Create Organization"}

完整跟踪位于此处:http://pastebin.com/dW5j9NLt

在最初尝试了一些更高级的功能之后,我将代码缩减为以下内容并且仍然没有运气:

class LogoUploader < CarrierWave::Uploader::Base

  include CarrierWave::MiniMagick

  storage :file

  version :thumb do
     process :resize_to_limit => [100, 100]
  end

  def extension_white_list
    %w(jpg jpeg gif png)
  end
end

编辑:我已将问题缩小到上传后修改图像的问题。如果我进一步简化代码以删除:thumb大小的创建,那么一切正常。想法?

3 个答案:

答案 0 :(得分:6)

没有足够的声誉评论thebrush的回答,但他绝对是对​​的。 在注意到我实际上一起缺少imagemagick时,我遇到了同样的问题。

所以在Debian / Ubuntu上,这将是诀窍(或'magick'):

apt-get install imagemagick

在使用yum作为数据包管理器(CentOS / RedHat)的操作系统上,您将使用:

yum install ImageMagick

答案 1 :(得分:0)

您缺少存储位置。尝试在storage:file

下添加它
  def store_dir
    "uploads/logo/#{model.id}"
  end

答案 2 :(得分:0)

您是否已明确安装ImageMagick?

在没有安装ImageMagick的情况下使用MiniMagick时出现了同样的错误。据我所知,MiniMagick将操作推迟到mogrify命令,所以如果你不能在命令行上调用mogrify,MiniMagick可能也不能。

A * nix buff能够更放心地回答这个问题,但我认为libmagickwand-dev支持图形库的安装,但实际上并没有自己安装。