Carrierwave 包括 MiniMagick -> 上传不再有效
Carrierwave including MiniMagick -> uploads no longer work
我有一个带有 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
我的用户 class 有以下几行
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 %>
当我注释掉上传器中的包含行和 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'
配置
- Windows
- 已安装 ImageMagick
- ruby 2.2.4p230(2015-12-16 修订版 53155)[x64-mingw32]
- CarrierWave 0.10.0 和 Carrierwave-Mongoid 0.8.0
在您的 gem 文件中添加 gem "mini_magick" 并进行捆绑安装。
在你的 AvatarUploader class 添加 include CarrierWave::MiniMagick
在你的用户模型中添加
mount_uploader :avtar, AvatarUploader
我成功了。我不太确定关键步骤是什么,但除其他外
- 我 Windows 打开 ImageMagick 一次(我知道有些程序在第一次启动后会生成额外的配置文件),我尝试 opening/saving 使用 GUI
照片
- 我删除了以前上传的 Carrierwave 文件
- 我运行
rails s
曾经在管理员模式下(现在即使没有也能正常运行)
我有一个带有 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
我的用户 class 有以下几行
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 %>
当我注释掉上传器中的包含行和 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'
配置
- Windows
- 已安装 ImageMagick
- ruby 2.2.4p230(2015-12-16 修订版 53155)[x64-mingw32]
- CarrierWave 0.10.0 和 Carrierwave-Mongoid 0.8.0
在您的 gem 文件中添加 gem "mini_magick" 并进行捆绑安装。
在你的 AvatarUploader class 添加 include CarrierWave::MiniMagick
在你的用户模型中添加 mount_uploader :avtar, AvatarUploader
我成功了。我不太确定关键步骤是什么,但除其他外
- 我 Windows 打开 ImageMagick 一次(我知道有些程序在第一次启动后会生成额外的配置文件),我尝试 opening/saving 使用 GUI 照片
- 我删除了以前上传的 Carrierwave 文件
- 我运行
rails s
曾经在管理员模式下(现在即使没有也能正常运行)