Как я могу временно сохранить (кэшировать) изображения перед загрузкой на S3? - PullRequest
0 голосов
/ 13 января 2019

Мое приложение rails использует CarrierWave и Fog для загрузки изображений в S3. Удаленные URL-адреса работают нормально, ОДНАКО мне нужно временно сохранить локальные изображения (с загружаемого устройства), прежде чем я смогу загрузить эти локальные изображения на S3. Как мне это сделать?

Как мне кэшировать мои изображения?

Таблица видений:

class CreateVisions < ActiveRecord::Migration[5.1]
  def change
    create_table :visions do |t|
      t.string :image
      t.text :description

      t.timestamps
    end
  end
end

Модель Vision:

class Vision < ApplicationRecord
    belongs_to :user
    mount_uploader :image, ImageUploader

end

Visions_controller.rb:

  def create
    @vision = current_user&.visions.build(vision_params)
    @vision.save!
    render :create, status: :created
  end

Image_uploader.rb:

class ImageUploader < CarrierWave::Uploader::Base

  # Include RMagick or MiniMagick support:
  # include CarrierWave::RMagick
  include CarrierWave::MiniMagick
  # Choose what kind of storage to use for this uploader:
  if Rails.env.production?
    storage :fog
  else
    storage :file
  end

  # Override the directory where uploaded files will be stored.
  # This is a sensible default for uploaders that are meant to be mounted:
  def store_dir
    "uploads/#{model.class.to_s.underscore}/#{mounted_as}/#{model.id}"
  end

setup_fog.rb:

CarrierWave.configure do |config|
    config.fog_credentials = {
      provider: 'AWS',
      aws_access_key_id: ENV['AWS_ACCESS_KEY_ID'] || '',
      aws_secret_access_key: ENV['AWS_SECRET_ACCESS_KEY_ID'] || '',  
      region: 'us-west-2'
    }

    config.fog_directory = 'pranaapp' # AWS S3 Bucket Name
    config.fog_public = false
    config.fog_attributes = {
      'Cache-Control' => "max-age=#{365.day.to_i}"
    }
  end

1 Ответ

0 голосов
/ 14 января 2019

Согласно документации, есть опция с именем cache_dir, которая позволяет вам определить каталог для хранения временного файла перед загрузкой.

Взгляните на эту ссылку:

https://github.com/carrierwaveuploader/carrierwave#changing-the-storage-directory

Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...