Carrierwave包括MiniMagick - >上传不再有效

时间:2016-03-30 21:41:20

标签: ruby-on-rails ruby carrierwave minimagick

我有一个带Carrierwave的Rails应用程序,我正在使用MiniMagick进行图像处理。

每当我在我的上传器文件中添加include CarrierWave::MiniMagick时,上传就会停止工作,没有任何错误提示,应用程序流程会恢复而不更新上传的图像

class AvatarUploader < CarrierWave::Uploader::Base
  include CarrierWave::MiniMagick

  storage :file

  def store_dir
    "uploads/#{model.class.to_s.underscore}/#{mounted_as}/#{model.id}"
  end

  version :thumb do
    process resize_to_fill: [50, 50]
  end

  def filename
    "avatar.#{file.extension}" if original_filename if original_filename
  end

end

我的用户类有以下几行

attr_accessor :avatar, :avatar_cache
mount_uploader :avatar, ::AvatarUploader

我的观点

<%= f.label(:avatar, t(:avatar)) %>
<%= image_tag(user.avatar_url) if user.avatar? %>
<%= f.file_field :avatar %>
<%= f.hidden_field :avatar_cache %>

当我在上传器中注释掉include行和resize_to_fill行时,一切运行良好。

这很难调试,我尝试通过.store!控制台上传头像,但输出很奇怪[:store_versions!]

u = User.first
u.avatar # Contains 'old.jpg' ( Which I uploaded with the buggy lines commented, and changed the  filename to 'old')
u.avatar.store!(File.new("C:\\somejpeg.jpg"))
=> [:store_versions!]
u.avatar # Still shows old 'me.jpg'

配置

  • 已安装ImageMagick
  • ruby​​ 2.2.4p230(2015-12-16修订版53155)[x64-mingw32]
  • CarrierWave 0.10.0和Carrierwave-Mongoid 0.8.0

2 个答案:

答案 0 :(得分:0)

在您的gem文件中添加 gem&#34; mini_magick&#34; 并进行捆绑安装。

在您的AvatarUploader类中添加包括CarrierWave :: MiniMagick

在您的用户模型中添加 mount_uploader:avtar,AvatarUploader

答案 1 :(得分:0)

我设法让它发挥作用。我不确定关键步骤是什么,但其他

  • 我打开了ImageMagick for Windows一次(我知道有些程序在首次启动后会生成其他配置文件),我尝试用GUI打开/保存照片
  • 我删除了之前上传的Carrierwave文件
  • 我在管理员模式下运行rails s一次(现在它运行正常,即使没有)