【问题标题】:Carrierwave - Error when processing imagesCarrierwave - 处理图像时出错
【发布时间】:2011-02-23 22:14:54
【问题描述】:

问题是在 mongoids save! 操作上引发的以下错误。

Mongoid::Errors::Validations: Validation failed - Img failed to be processed.
~/.rvm/gems/ruby-1.8.7-p249/gems/mongoid-2.0.0.rc.7/lib/mongoid/persistence.rb:234:in `fail_validate!'
~/.rvm/gems/ruby-1.8.7-p249/gems/mongoid-2.0.0.rc.7/lib/mongoid/persistence.rb:75:in `save!'
./app.rb:29:in `POST /upload'

设置主要如下:

require "sinatra"     # 1.1.2
require "mongoid"     # 2.0.0.beta.19
require "rmagick"     # 2.12.2
require "carrierwave" # 0.5.1
require "carrierwave/orm/mongoid"
require 'carrierwave/processing/rmagick'
....


Mongoid.database = Mongo::Connection.new('somehost', 1234).db('test')

class Uploader < CarrierWave::Uploader::Base
  include CarrierWave::RMagick
  storage :file

  def store_dir
    "uploads"
  end

 process :resize_to_fit => [80, 80]
end


class Image
  include Mongoid::Document

  mount_uploader :img, Uploader
end


....

post '/upload' do
  @img = Image.new
  @img.img = params[:file]
  @img.save!
  redirect '/'
end

故障在处理中的某个地方:

process :resize_to_fit => [80, 80]

如果我删除这一行。一切正常。

【问题讨论】:

  • 正在上传的文件是否正确上传

标签: ruby sinatra mongoid carrierwave


【解决方案1】:

好的。我没有足够深入地追踪痕迹: 问题是 ImageMagick 中缺少 jpeg-delegate。 所以自然而然地处理 jpeg 文件失败了。

解决方案是从源代码重新安装 ImageMagick。

当 Mongoid 抛出一个从 carrierwave 调用的错误时,它仍然是非常不透明的,因为它从 RMagick 获得了一个由 ImageMagick 触发的错误。

还是。回想起来很明显:-)

【讨论】:

  • 我刚刚将我的项目从我的旧 MacBook 转移到我的新 MacBook Pro 并遇到了这个问题。与您的情况一样,我还需要安装 ImageMagick,因为当我从旧机器传输文件时没有安装它。感谢您发布您的解决方案!节省了我一些时间。
猜你喜欢
  • 2012-01-22
  • 2012-02-22
  • 1970-01-01
  • 2013-03-04
  • 2012-06-19
  • 1970-01-01
  • 1970-01-01
  • 2016-08-20
  • 2012-09-23
相关资源
最近更新 更多