파일이 존재하고 Upload 모델도 있음에도 병합 후 이미지가 로드되지 않음

저는 두 개의 Discourse 사이트를 하나로 병합하는 방법을 사용했고 대부분은 잘 작동했지만, 두 번째 사이트의 이미지가 표시되지 않습니다.

다음과 같은 코드를 실행할 수 있습니다:

p=Post.find_by(topic_id: 222435, post_number: 11)
short_url=p.raw.match(/(upload:\/\/.*?)\)/)[1]
up=Upload.sha1_from_short_url(short_url)

그리고 up.url은 /uploads/default/original/3X/9/e/9ebb54f0e825c05df7f6df271a5cfbdc95a6332c.jpeg와 같은 형태이며, cd /shared; ls uploads/default/original/3X/9/e/9ebb54f0e825c05df7f6df271a5cfbdc95a6332c.jpeg를 실행하면 해당 파일을 찾을 수 있습니다.

하지만 https://host/uploads/default/original/3X/9/e/9ebb54f0e825c05df7f6df271a5cfbdc95a6332c.jpeg에 접근하면 nginx에서 404 오류가 발생합니다.

Upload가 존재하고 파일도 존재한다면 NGINX가 이를 허용해 줄 것 같아 보이는데, 제가 놓치고 있는 것이 무엇일까요?

일부 이미지의 경우, 테스트 사이트의 이미지 URL을 붙여넣는 방식으로 이 문제를 "해결"했습니다. 이렇게 하면 이미지가 생성되고, 다시 업로드(제가 방금 찾은 바로 그 업로드인 것으로 보입니다)로 변환되며, 그 후 게시물을 다시 빌드하면 이미지가 표시됩니다.

다음과 같은 코드로 원격 이미지 URL을 붙여넣는 것과 동일한 작업을 해보려 했지만, 이것도 작동하지 않습니다:

f=File.open('/shared/uploads/default/original/2X/9/9ebb54f0e825c05df7f6df271a5cfbdc95a6332c.jpeg')
upload = UploadCreator.new(f, 'upload.jpeg').create_for(-1)

RGJ님, 안녕하세요. 데이터베이스와 파일시스템에 (있는 것으로 보이는) 이 이미지들이 rebake할 때 렌더링되게 하는 방법에 대해 힌트가 있으신가요?

이런 종류의 오류를 디버깅하는 건 정말 싫다.
대부분의 경우 rails 콘솔에서 컨트롤러의 코드를 수동으로 실행한다.

이번에는 404가 111번째 줄에서 발생했을 것 같다.

Discourse.store.list_missing_uploads(skip_optimized: true)를 실행하면 어떤 결과가 나와?

저도 마찬가지입니다. 하지만 당신보다 제가 더 잘할 거라고는 생각하지 않아요. 힌트를 주셔서 정말 감사합니다.

제가 시도하고 있는 바로 그 방법입니다.

좋은 추측인 것 같습니다. 감사합니다!

nil입니다. skip_optimized: false로 해도 결과는 동일합니다.

한 게시물에 대한 업로드 문제를 해결하는 데 성공했지만, apparently 기록을 잘 하지 못한 것 같습니다. :person_shrugging: 하지만 거기에 도달하기 위해 많은 시도를 했습니다. 적어도 가능성이 있다는 희망 정도는 가지고 있습니다.