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

**URL:** https://meta.discourse.org/t/images-not-loading-after-merge-even-when-file-exists-and-upload-model-exists/314851
**Category:** Migration
**Created:** [7월 3, 2024, 7:43오후 UTC](https://meta.discourse.org/t/images-not-loading-after-merge-even-when-file-exists-and-upload-model-exists/314851 "2024-07-03T19:43:06Z")
**Posts on this page:** 4
**Page:** 1

<div class="post-metadata">

### Author: ![pfaffman](https://sea3.discourse-cdn.com/meta/user_avatar/meta.discourse.org/pfaffman/32/120154_2.png) [@pfaffman](https://meta.discourse.org/u/pfaffman)
#### Post date: [7월 3, 2024, 7:43오후 UTC](https://meta.discourse.org/t/images-not-loading-after-merge-even-when-file-exists-and-upload-model-exists/314851/1 "2024-07-03T19:43:06Z")

</div>

저는 [두 개의 Discourse 사이트를 하나로 병합하는 방법](https://meta.discourse.org/t/merge-two-discourse-sites-into-one/95435)을 사용했고 대부분은 잘 작동했지만, 두 번째 사이트의 이미지가 표시되지 않습니다.

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

```plaintext
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을 붙여넣는 것과 동일한 작업을 해보려 했지만, 이것도 작동하지 않습니다:

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

```

---

<div class="post-metadata">

### Author: ![pfaffman](https://sea3.discourse-cdn.com/meta/user_avatar/meta.discourse.org/pfaffman/32/120154_2.png) [@pfaffman](https://meta.discourse.org/u/pfaffman)
#### Post date: [7월 11, 2024, 2:09오후 UTC](https://meta.discourse.org/t/images-not-loading-after-merge-even-when-file-exists-and-upload-model-exists/314851/2 "2024-07-11T14:09:33Z")

</div>

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

---

<div class="post-metadata">

### Author: ![RGJ](https://sea3.discourse-cdn.com/meta/user_avatar/meta.discourse.org/rgj/32/523185_2.png) [@RGJ](https://meta.discourse.org/u/RGJ)
#### Post date: [7월 11, 2024, 4:36오후 UTC](https://meta.discourse.org/t/images-not-loading-after-merge-even-when-file-exists-and-upload-model-exists/314851/3 "2024-07-11T16:36:24Z")

</div>

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

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

> <https://github.com/discourse/discourse/blob/main/app/controllers/uploads_controller.rb#L111>

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

---

<div class="post-metadata">

### Author: ![pfaffman](https://sea3.discourse-cdn.com/meta/user_avatar/meta.discourse.org/pfaffman/32/120154_2.png) [@pfaffman](https://meta.discourse.org/u/pfaffman)
#### Post date: [7월 11, 2024, 4:47오후 UTC](https://meta.discourse.org/t/images-not-loading-after-merge-even-when-file-exists-and-upload-model-exists/314851/4 "2024-07-11T16:47:16Z")

</div>

> [@RGJ](#):
>
> 이런 종류의 에러를 디버깅하는 건 정말 _증오_합니다.

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

> [@RGJ](#):
>
> 대부분의 경우 컨트롤러의 코드를 rails 콘솔에서 수동으로 실행합니다.

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

> [@RGJ](#):
>
> 이번에는 404 에러가 111번째 줄에서 발생했을 것 같습니다.
> 
> [discourse/app/controllers/uploads\_controller.rb at main · discourse/discourse · GitHub](https://github.com/discourse/discourse/blob/main/app/controllers/uploads_controller.rb#L111)

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

> [@RGJ](#):
>
> `Discourse.store.list_missing_uploads(skip_optimized: true)`을 실행하면 어떤 결과가 나오나요?

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

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