Приложение My Rails 6.x использует ActiveStorage, прикрепляет различные файлы к моим моделям, и оно работает нормально. Но в какой-то момент метод url_for
начал создавать URL-адреса, которые нельзя использовать (то есть сервер возвращает 404, когда я пытаюсь получить доступ к URL-адресу, возвращенному url_for). URL-адреса не работают как в моей среде разработки, так и в среде prod, которые используют службы Disk и S3, как определено в моем storage.yml
соответственно.
Чтобы попытаться разобраться в проблеме, я создал новое приложение с теми же версиями Rails (6.0.3.2), aws -sdk, et c. и сделал простую модель с приставкой, прикрепил точно так же, и вроде все нормально работает. Итак, я предполагаю, что должна быть какая-то проблема cfg, которую я пропустил, но мне не удалось ее найти.
В обоих случаях файл изображения создается в месте, указанном в storage.yml и оба сгенерированных URL выглядят очень похоже, но в первом случае; доступ к URL-адресу дает 404, но в новом приложении он работает нормально (т.е. URL-адрес возвращает ожидаемое изображение)
Для справки, я разместил ниже код, используемый для создания моделей и прикрепления изображений , в случае, если это интересно.
Любые мысли о том, что я, возможно, неправильно сконфигурировал или забыл перенести, приветствуются!
Сломанное приложение:
liss.image.attach(io: File.open('./test/fixtures/files/liss-image.jpg'), filename: 'liss-image.jpg')
url_for liss.image
http://localhost:3000/rails/active_storage/blobs/eyJfcmFpbHMiOnsibWVzc2FnZSI6IkJBaHBCZz09IiwiZXhwIjpudWxsLCJwdXIiOiJibG9iX2lkIn19--f893bcbb165cd1e89d79dc28ac2eed7236172543/liss-image.jpg
Рабочее приложение :
user = User.create!(first_name: 'John', last_name: 'Appleseed', email: 'ja@gmail.com')
user.image.attach(io: File.open('./test/fixtures/files/liss-image.jpg'), filename: 'liss-image.jpg')
url_for user.image
http://localhost:3000/rails/active_storage/blobs/eyJfcmFpbHMiOnsibWVzc2FnZSI6IkJBaHBCdz09IiwiZXhwIjpudWxsLCJwdXIiOiJibG9iX2lkIn19--047687b69b8e5877cbfdd93cd6128ddd80d41141/liss-image.jpg