Что может остановить сохранение вложений с помощью скрепки при использовании хранилища s3?

#ruby-on-rails #amazon-s3 #paperclip

#ruby-on-rails #amazon-s3 #скрепка

Вопрос:

У меня есть модель activerecord под названием «game» с вложением скрепки под названием «image». Я включил и расширил расширение в этой модели, у которого есть обратные вызовы before_save и некоторые after_save, которые все возвращают true.

Проблема в том, что когда я создаю или обновляю игру, вложение не сохраняется в моей корзине s3, НО столбцы таблицы сохраняются правильно.

Поэтому я всегда получаю исключение «NoSuchKey» в URL-адресе вложения.

Я понял, что, должно быть, проблема с моим расширением, но действительно странно то, что я ни в коем случае не могу воспроизвести эту ошибку ни на моем локальном компьютере, ни на другом сервере, также использующем s3.

Я прочитал десятки строк кода из paperclip, aws-s3, rails и моего собственного приложения, но я не смог найти ошибку.

Я также протестировал ошибку с текущим дампом базы данных локально, но она все еще работает там.

Мой вопрос теперь в том, что может отменить транзакцию сохранения вложения?

Комментарии:

1. на всякий случай: ваша корзина находится в США?

2. моя корзина включена s3.amazonaws.com

3. Держу пари 🙂 но когда вы его создаете, вас спрашивают о его местонахождении. aws gem работает только с пакетами на базе США

4. Возможно, вам придется включить некоторый код. Трудно сказать, что может пойти не так в вашей модели или до / после перехватов без примеров кода.

Ответ №1:

Эта строка была в отдельном действии в контроллере, которое иногда вызывалось:

 Game.after_save.clear
  

После того, как я удалил его, функция заработала должным образом.