CarrierWave无法上传到EC2服务器

时间:2018-05-08 05:07:13

标签: ruby-on-rails carrierwave rollback minimagick

我已经实现了CarrierWave为我的应用程序中的用户上传个人资料图片以及MiniMagick以调整多个版本的大小。

image_uploader.rb

class ImageUploader < CarrierWave::Uploader::Base
 include CarrierWave::MiniMagick
  storage :file

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

  version :thumb_card do
   process :resize_to_fit => [190, 210]
  end

  version :thumb_profile, from_version: :thumb_card do
   process :resize_to_fit => [100, 100]
  end

  version :thumb, from_version: :thumb_card do
   process :resize_to_fit => [60, 60]
  end

  def extension_white_list
   %w(jpg jpeg gif png)
  end

  def content_type_whitelist
   /image\//
  end
end

user.rb

mount_uploader :image, ImageUploader

还添加了:允许的user_params中的图像。

html.erb

<%= image_tag(current_user.image.thumb_profile.url, { :alt=> 'Image', 
    :id=>'avatar_img' ,:style=>'padding-top: 5px;' }) if current_user.image? %>
<%= user.file_field :image %>

所有这一切都在本地服务器上完美运行。但是当我推送到我的EC2实例时,图像无法上传并且每个事务都被回滚

错误

User Exists (1.5ms)  SELECT  1 AS one FROM `users` WHERE 
`users`.`email` = 'test3@example.com' AND (`users`.`id` != 4) LIMIT 1

User Exists (1.4ms)  SELECT  1 AS one FROM `users` WHERE 
`users`.`phone` = '431 532 5413' AND (`users`.`id` != 4) LIMIT 1

(1.3ms)  ROLLBACK

无法在EC2服务器上找到public / assets / uploads文件夹。 我想在上传成功之前它不会生成?

希望有人指出为什么确切的代码在本地工作,但不能直播? TIA。

1 个答案:

答案 0 :(得分:0)

<强>固定

通过EC2实例上的rails控制台进行一些调试后,找出图像未上传的原因。

关注此链接

https://chuanhesmile.wordpress.com/2014/12/13/issue-fixed-rollback-transaction-when-uploading-images-using-carrierwave/

这是一个MiniMagick问题。卸载它并重新安装它没有成功。猜猜有一些依赖。未在EC2上正确安装。在rails控制台中出现此错误。

original error imagemagick/graphicsmagick is not installed

这个命令起到了作用。

sudo yum install ImageMagick