Nano Hash - криптовалюты, майнинг, программирование

Изображения, обработанные Carrierwave, не загружаются в AWS S3

Аналогичная проблема с этим вопросом, но предоставленное решение не решило мою проблему. Обработанные изображения Carrierwave не загружаются на S3

Использование Railscast #383 в качестве основы для кода: http://railscasts.com/episodes/383-uploading-to-amazon-s3

Изображение успешно загружено на S3 с использованием несущей волны_директ. Я хочу обработать изображения в фоновом режиме с помощью sidekiq, а затем загрузить на S3.

Рабочий процесс sidekiq завершает обработку изображения без ошибок, но обработанные изображения (:thumb и :large) хранятся локально в папке public/uploads.

Есть идеи, почему обработанные изображения не загружаются на S3?

Загрузчик:

class ImageUploader < CarrierWave::Uploader::Base

include CarrierWave::MiniMagick

storage :fog

include CarrierWave::MimeTypes
process :set_content_type

include Sprockets::Helpers::RailsHelper
include Sprockets::Helpers::IsolatedHelper

version :thumb do
  process :resize_to_limit => [200, 200]
end

version :large do
  process :resize_to_limit => [600, 400]
end

def extension_white_list
   %w(jpg jpeg gif png)
end
end

Модель:

class Photo < ActiveRecord::Base
attr_accessible  :name, :image, :remote_image_url, :user_id
mount_uploader :image, ImageUploader

belongs_to :user

after_commit :enqueue_image, :on => :create

has_many :comments, as: :commentable

def image_name
        File.basename(image.path || image.filename) if image
end

def enqueue_image
    ImageWorker.perform_async(id, key) if key.present?
end

class ImageWorker
    include Sidekiq::Worker
    sidekiq_options retry: false

        def perform(id, key)
          photo = Photo.find(id)
          photo.key = key
          photo.remote_image_url = photo.image.direct_fog_url(with_path: true)
          photo.save!
        end
    end

end

ФотоКонтроллер

class PhotosController < ApplicationController

 def index
  @photos = Photo.all
  @uploader = Photo.new.image
  @uploader.success_action_redirect = new_photo_url
 end

Вид

.
. 
.
<%= direct_upload_form_for @uploader do |f| %>
  <p><%= f.file_field :image %></p>
  <p><%= f.submit "Upload Photo" %></p>
<% end %>

инициализаторы/carrierwave.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"]
  }
  config.fog_directory = ENV["AWS_S3_BUCKET"]
end

initializers/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"],
   :region                 => 'us-east-1'
  }

 config.fog_directory = ENV["AWS_S3_BUCKET"]
 config.fog_public = true
 config.fog_attributes = {'Cache-Control' => 'max-age=315576000'} 
end

  • как выглядит ваш config/initializers/carrierwave.rb? 19.03.2013
  • Попробуйте переименовать свое ведро во что-то без дефисов или цифр, например. myawesomewebsitedotcom 20.03.2013

Ответы:


1

В моей папке загрузчиков я скопировал свой оригинальный загрузчик и переименовал его в «image_uploader_file.rb». Затем я изменил оригинальную версию «image_uploader.rb», чтобы использовать туман и S3. Я предполагал, что CarrierWave будет использовать только «image_uploader.rb», но оказалось, что он загрузил оба файла. В старой версии использовалось локальное хранилище, так что изображения хранились в несущей. Как только я удалил «image_uploader_file.rb», обработанные изображения были правильно загружены на S3.

20.03.2013
Новые материалы

Кластеризация: более глубокий взгляд
Кластеризация — это метод обучения без учителя, в котором мы пытаемся найти группы в наборе данных на основе некоторых известных или неизвестных свойств, которые могут существовать. Независимо от..

Как написать эффективное резюме
Предложения по дизайну и макету, чтобы представить себя профессионально Вам не позвонили на собеседование после того, как вы несколько раз подали заявку на работу своей мечты? У вас может..

Частный метод Python: улучшение инкапсуляции и безопасности
Введение Python — универсальный и мощный язык программирования, известный своей простотой и удобством использования. Одной из ключевых особенностей, отличающих Python от других языков, является..

Как я автоматизирую тестирование с помощью Jest
Шутка для победы, когда дело касается автоматизации тестирования Одной очень важной частью разработки программного обеспечения является автоматизация тестирования, поскольку она создает..

Работа с векторными символическими архитектурами, часть 4 (искусственный интеллект)
Hyperseed: неконтролируемое обучение с векторными символическими архитектурами (arXiv) Автор: Евгений Осипов , Сачин Кахавала , Диланта Хапутантри , Тимал Кемпития , Дасвин Де Сильва ,..

Понимание расстояния Вассерштейна: мощная метрика в машинном обучении
В обширной области машинного обучения часто возникает необходимость сравнивать и измерять различия между распределениями вероятностей. Традиционные метрики расстояния, такие как евклидово..

Обеспечение масштабируемости LLM: облачный анализ с помощью AWS Fargate и Copilot
В динамичной области искусственного интеллекта все большее распространение получают модели больших языков (LLM). Они жизненно важны для различных приложений, таких как интеллектуальные..