ОБНОВЛЕНИЕ
Я создал очень простое приложение, используя скрепку с моделью Person и прикрепленным аватаром.Затем я развернул его в новой капле Dokku и столкнулся с той же проблемой, что и в моем основном приложении.Затем я прочитал об ActiveStorage и подумал, что, может быть, у меня это получится, поэтому я преобразовал простое приложение для использования ActiveStorage, а не Paperclip, но у меня все еще остается та же проблема при загрузке с мобильных устройств, полученной с камеры устройства.
Это похоже на проблему с Dokku из того, что я видел (тем более, что функциональность работает на Heroku), но я действительно не знаю, куда идти дальше.У меня нет специального кода для обработки мобильных загрузок.Я использую simple_form для элементов управления формы и стандартный синтаксис image_tag для отображения.Я также использую Devise для учетных записей пользователей (которые я добавил в свое простое приложение, а также просто для репликации).Дело в том, что мои журналы ничего не показывают, когда я получаю сообщение об ошибке Dokku, как будто запрос никогда не приходит с моего телефона.
Все еще ищите помощи в этом, спасибо!
У меня есть приложение, в которое включена загрузка скрепок для дополнительных фотографий и вложений PDF-файлов в моей модели.Все отлично работает, кроме моего производственного сервера, когда я пытаюсь прикрепить файлы на мобильном устройстве (iOS).
Я использую Dokku (через DigitalOcean) для производства и Heroku для тестирования.Я использую Amazon S3 для хранения файлов.
Работает:
- Разработка: загрузка работы с ПК (здесь нет возможности тестирования на мобильном устройстве)
- Тест (Heroku): загрузка работает как с ПК, так и с мобильного
- Производство (Dokku / DO): Все загрузки работают с ПК.PDF загружает работу с мобильного.Загрузка фотографий работает с мобильного телефона, если выбрать фотографию, уже существующую в телефоне.
Не работает:
- Производство (Dokku / DO): Загрузка фотографий с мобильного телефона (с использованием встроенной функции iOS / Safari Take photo) перейдите на страницу с ошибкой в Dokku.На странице с ошибкой написано: «Страница, которую вы искали, не может быть обработана».
Когда я проверял журналы приложений из Dokku, я не обнаружил никаких ошибок.Я включил мониторинг журналов в реальном времени (приложение dokku logs -t), пока я пытался загрузить их с мобильного телефона, и после того, как я нажал кнопку отправки, в журналы ничего не сообщалось, он просто перешел на страницу ошибок на моем устройстве.
Я думаю, что это проблема с моей конфигурацией Dokku / развертывания, так как она отлично работает в Heroku.Я могу что-то упустить на стороне Dokku.У меня не включен HTTPS на Heroku, так как я использую бесплатный уровень, но у меня действительно включен HTTPS на Dokku через LetsEncrypt.Я не уверен, может ли это быть причиной ошибки или нет.
В любом случае, вот некоторый соответствующий код из моего приложения.Любые идеи высоко ценится!
Model.rb
has_attached_file :attachment,
styles: { large: ["1000x1000>", :png], medium: ["300x300>", :png], thumb: ["100x100>", :png] }
validates_attachment_content_type :attachment,
content_type: [
"image/jpg",
"image/jpeg",
"image/png",
"image/gif",
"application/pdf",
"file/txt",
"text/plain",
"application/doc",
"application/msword",
"application/vnd.ms-excel",
"application/vnd.openxmlformats-officedocument.spreadsheetml.sheet",
],
message: "Sorry! We do not accept the attached file type"
model_controller.rb
def transaction_params
params.require(:transaction).permit(:trx_date, :description, :amount, :trx_type, :memo, :attachment, :attachment_file_name)
end
config / environment / production.rb
# Paperclip settings
config.paperclip_defaults = {
storage: :s3,
s3_credentials: {
bucket: ENV['S3_BUCKET_NAME'],
access_key_id: ENV['AWS_ACCESS_KEY_ID'],
secret_access_key: ENV['AWS_SECRET_ACCESS_KEY'],
s3_region: ENV['S3_REGION'],
s3_host_name: ENV['S3_HOST_NAME']
}
}
Вывод "dokku config myapp"
AWS_SECRET_ACCESS_KEY: **masked**
S3_BUCKET_NAME: mybucketname
DOKKU_APP_RESTORE: 1
DOKKU_NGINX_SSL_PORT: 443
S3_REGION: us-east-2
AWS_ACCESS_KEY_ID: **masked**
DOKKU_APP_TYPE: herokuish
DOKKU_NGINX_PORT: 80
DOKKU_PROXY_PORT_MAP: http:80:5000 https:443:5000
DATABASE_URL: **masked**
DOKKU_LETSENCRYPT_EMAIL: **masked**
S3_HOST_NAME: s3.us-east-2.amazonaws.com