CarrierWave не загружается на сервер EC2 - PullRequest
0 голосов
/ 08 мая 2018

Я реализовал 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

Не удается найти папку public / assets / uploads на сервере EC2. Я думаю, он не будет генерироваться, пока загрузка не будет успешной?

Хотел бы кто-нибудь указать, почему точный код работает локально, но не работает? ТИА.

1 Ответ

0 голосов
/ 08 мая 2018

FIXED

После некоторой отладки через консоль rails на экземпляре EC2 выяснил, почему изображение не загружалось.

По этой ссылке

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
...