Файл изображения удаляется после прочтения в файле rails seed - PullRequest
0 голосов
/ 02 июня 2018

Использование этого файла в файле rails seed для выбора случайных изображений.

Room.all.each do |room|
  count = rand(1..5)
  count.times do
    room.photos.create!(
        image: File.new(Dir['app/assets/images/sampleimages/*.jpg'].sample))
  end
end

Но после прочтения удалил это изображение из папки моих активов.В чем может быть проблема здесь?Предполагается, что приведенный выше код должен это делать или это что-то связанное с shrine (загрузчик изображений)?

Использование версий Rails 5.2.0 и shrine 2.10.1.

Мой полный imageUploader.rb

class ImageUploader < Shrine
  include ImageProcessing::MiniMagick
  plugin :processing
  plugin :determine_mime_type
  plugin :remove_attachment
  plugin :store_dimensions
  plugin :validation_helpers
  plugin :versions
  plugin :pretty_location
  plugin :delete_raw

  Attacher.validate do
    validate_max_size 5.megabytes, message: 'is too large (max is 5 MB)'
    validate_mime_type_inclusion ['image/jpeg', 'image/png', 'image/gif']
  end

  def process(io, context)
    case context[:phase]
    when :store
      original = io.download
      pipeline = ImageProcessing::MiniMagick.source(original)
      size_300 = pipeline.resize_to_fit!(300, 300)
      size_150 = pipeline.resize_to_fill!(150, 150)
      original.close!
      {original: io, medium: size_300, thumb: size_150}
    end
  end
end

1 Ответ

0 голосов
/ 04 июня 2018

Необработанные файловые объекты будут автоматически удалены после загрузки, если загружен плагин delete_raw.Рекомендуется загружать этот плагин при использовании versions, так как вы хотите, чтобы обработанные эскизы изображений удалялись локально после их загрузки.Тем не менее, он имеет неприятный побочный эффект: по умолчанию он также удаляет входные файлы.

Назначенные файлы будут загружены во временное хранилище, поэтому вы можете обойти эту проблему, сказав плагину delete_raw, что удаляете только сырыефайлы, которые загружаются в постоянное хранилище:

plugin :delete_raw, storages: [:store]
...