# 이메일 알림 템플릿 GUI가 %{base\_url}에 대해 오류를 표시합니다

**URL:** https://meta.discourse.org/t/email-notification-template-gui-complains-about-base-url/279395
**Category:** Bug
**Created:** [9월 18, 2023, 2:36오후 UTC](https://meta.discourse.org/t/email-notification-template-gui-complains-about-base-url/279395 "2023-09-18T14:36:35Z")
**Posts on this page:** 16
**Page:** 1

<div class="post-metadata">

### Author: ![nordize](https://avatars.discourse-cdn.com/v4/letter/n/c68b51/32.png) [@nordize](https://meta.discourse.org/u/nordize)
#### Post date: [9월 18, 2023, 2:36오후 UTC](https://meta.discourse.org/t/email-notification-template-gui-complains-about-base-url/279395/1 "2023-09-18T14:36:36Z")

</div>

2.8.x에서 3.1.1로 업그레이드한 후, `%{base_url}%{url}`을 사용하여 주제 링크를 포함하던 기존 템플릿이 모두 무효로 강조 표시됩니다. GUI에서는 `다음 보간 키가 유효하지 않습니다: base_url`이라고 표시합니다.

하지만 실제로는 유효합니다. `%{base_url}`을 제거하고 `%{url}`만 남기면 링크가 깨집니다(도메인 없이 경로만 포함됨). 반면 이를 포함하면 링크가 유효하고 완전한 형태로 표시됩니다.

---

<div class="post-metadata">

### Author: ![simon](https://sea3.discourse-cdn.com/meta/user_avatar/meta.discourse.org/simon/32/339122_2.png) [@simon](https://meta.discourse.org/u/simon)
#### Post date: [9월 18, 2023, 3:43오후 UTC](https://meta.discourse.org/t/email-notification-template-gui-complains-about-base-url/279395/2 "2023-09-18T15:43:17Z")

</div>

> [@nordize](#):
>
> 다음 보간(interpolation) 키가 유효하지 않습니다: base\_url

이것은 이전 버전의 Discourse에서 변경된 사항일 수 있지만, 버그라고 생각하지 않습니다. 이메일 템플릿에서 허용되는 보간 키를 찾는 것은 항상 까다로웠습니다. 이제 사용할 수 있는 키에 대해 설명하는 게시글이 있습니다: [Interpolation Keys for Customizing Text and System Email Templates](https://meta.discourse.org/t/interpolation-keys-for-customizing-text-and-email-templates/264604). 허용되는 키 목록은 여기에 있습니다: [discourse/app/models/translation\_override.rb at main · discourse/discourse · GitHub](https://github.com/discourse/discourse/blob/main/app/models/translation_override.rb).

`{base_url}`은 그 목록에 없습니다.

이미 사이트의 기본 URL을 알고 있으므로, 해당 키가 필요한지 확실하지 않습니다. `%{base_url}%{url}` 대신 사이트 URL을 그대로 사용하세요. 예를 들어 `https://forum.example.com%{url}`처럼 사용할 수 있습니다.

---

<div class="post-metadata">

### Author: ![nordize](https://avatars.discourse-cdn.com/v4/letter/n/c68b51/32.png) [@nordize](https://meta.discourse.org/u/nordize)
#### Post date: [9월 18, 2023, 3:58오후 UTC](https://meta.discourse.org/t/email-notification-template-gui-complains-about-base-url/279395/3 "2023-09-18T15:58:40Z")

</div>

> [@simon](#):
>
> `{base_url}`은 해당 목록에 없습니다.

하지만 실제로는 작동합니다. 즉, %{base\_url}은 정상적으로 확장되므로 잘못된 것이 아닙니다(단순히 GUI가 경고만 하는 것입니다). 또한, 이를 제외하고는 완전히 작동하는 링크를 생성할 수 없습니다(전체 base URL을 하드코딩하는 경우를 제외하면, 이는 권장하지 않는 방법입니다).

> [@simon](#):
>
> 사이트의 base URL을 이미 알고 계시므로, 이 키가 필요할지 모르겠습니다.

플레이스홀더의 일반적인 목적은 소프트웨어를 견고하게 만드는 것이며, 여기에는 하드코딩을 피하는 것이 포함됩니다. Discourse 설치의 도메인 이름, 호스트 이름 또는 경로(base\_url의 어떤 요소든)를 변경하면, 이를 하드코딩한 모든 템플릿을 수정해야 합니다. 이는 좋지 않은 코딩 관행입니다.

Discourse 개발은 일반적으로 매우 건강하고 견고한 코딩 관행을 따르는 것으로 알고 있으므로, (1) 템플릿을 검증할 때 base\_url을 제거하면서 (2) 실제로는 존재할 경우 해석하고, (3) 좋지 않은 코딩 관행에 의존하지 않고 완전히 작동하는 URL을 생성하는 대안을 제공하지 않는 것은 실수/버그였을 수밖에 없다고 추측할 수밖에 없습니다.

또한, 이는 실질적인 이점을 찾지 못하면서 많은 수작업을 사용자에게 강요하는 큰 역호환성 변경 사항이므로, 버그/실수였다고 가정할 이유가 더 강해집니다.

(3.x 버전에서 텍스트 템플릿과 관련된 다른 버그들도 목격했으므로, 이것이 실수였다고 가정할 이유가 더 많아집니다)

---

<div class="post-metadata">

### Author: ![simon](https://sea3.discourse-cdn.com/meta/user_avatar/meta.discourse.org/simon/32/339122_2.png) [@simon](https://meta.discourse.org/u/simon)
#### Post date: [9월 18, 2023, 4:09오후 UTC](https://meta.discourse.org/t/email-notification-template-gui-complains-about-base-url/279395/4 "2023-09-18T16:09:21Z")

</div>

> [@nordize](#):
>
> 하지만 실제로는 작동합니다. 즉, %{base\_url}은 정상적으로 확장됩니다.

제가 이 부분을 테스트해 보았을 때, `%{base_url}`이 저장되지 않아 사용되지 않는 상태입니다.

아마도 누락된 부분이 있는 것 같습니다. 오래된 사이트의 기존 이메일 템플릿이 깨질 수 있다는 점에는 동의합니다. 이 이슈를 #Contribute > Bug 카테고리로 다시 이동하고, 팀이 이에 대해 어떻게 할지 결정할 수 있도록 하겠습니다.

---

<div class="post-metadata">

### Author: ![nordize](https://avatars.discourse-cdn.com/v4/letter/n/c68b51/32.png) [@nordize](https://meta.discourse.org/u/nordize)
#### Post date: [9월 18, 2023, 4:19오후 UTC](https://meta.discourse.org/t/email-notification-template-gui-complains-about-base-url/279395/5 "2023-09-18T16:19:49Z")

</div>

> [@simon](#):
>
> 이 기능을 테스트해 봤을 때, `%{base_url}`이 저장되지 않아서 사용되지 않는 것 같습니다.

처음 언급했듯이, 3.x로 업그레이드한 후 기존 사용자 지정 템플릿이 잘못된 것으로 잘못 표시되는 문제에 대해 이야기하고 있습니다. 즉, 2.x에서 편집되어 업그레이드 후에도 여전히 존재하는 `%{base_url}`을 포함하는 템플릿을 말하는 것입니다. 이 플레이스홀더를 제거하면 하드코딩에 의존하지 않고 전체 URL을 생성하는 것이 불가능해집니다. 제거하지 않으면 3.1.1에서도 여전히 정상적으로 확장된다는 것이 분명해집니다. 첫 번째 게시글을 다시 읽어 봤지만, 불분명한 부분이 보이지 않습니다.

데이터베이스를 직접 편집하거나(또는 코드가 동일한 유효성 검사를 실행하지 않는 경우라면 Rails 콘솔에서도) 직접 테스트해 볼 수 있을 것입니다.

---

<div class="post-metadata">

### Author: ![simon](https://sea3.discourse-cdn.com/meta/user_avatar/meta.discourse.org/simon/32/339122_2.png) [@simon](https://meta.discourse.org/u/simon)
#### Post date: [9월 18, 2023, 4:27오후 UTC](https://meta.discourse.org/t/email-notification-template-gui-complains-about-base-url/279395/6 "2023-09-18T16:27:52Z")

</div>

> [@nordize](#):
>
> 3.x로 업그레이드한 후 기존 사용자 지정 템플릿이 잘못된 것으로 잘못 표시되는 문제에 대해 말씀하시는 거죠.

결국 그 문제를 파악했습니다. 제가 직접 테스트해 보지는 않겠지만, 맞으시리라 확신합니다.

---

<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: [9월 20, 2023, 10:46오전 UTC](https://meta.discourse.org/t/email-notification-template-gui-complains-about-base-url/279395/7 "2023-09-20T10:46:28Z")

</div>

이건 버그인 것 같습니다. 아마도 `%{url}`에는 호스트 이름이 포함되어야 하는 것 같습니다. 엔도 템플릿에서 호스트 이름이 없는 URL은 거의 쓸모가 없거든요(전역적으로 상대 기본 경로를 변경하는 HTML 방식이 있는 경우를 제외하고는요).

팀이 이번 주에 컨퍼런스에 참석하고 있어서, 이 문제에 대한 피드백을 받기까지는 조금 시간이 걸릴 것 같습니다.

---

<div class="post-metadata">

### Author: ![nordize](https://avatars.discourse-cdn.com/v4/letter/n/c68b51/32.png) [@nordize](https://meta.discourse.org/u/nordize)
#### Post date: [9월 20, 2023, 5:38오후 UTC](https://meta.discourse.org/t/email-notification-template-gui-complains-about-base-url/279395/8 "2023-09-20T17:38:10Z")

</div>

> [@pfaffman](#):
>
> 아마도 `%{url}`에는 호스트 이름이 포함되는 것이 의도된 동작일 수도 있습니다.

그것은 좋은 관행이 아니라고 생각합니다. 그렇게 하면 웹사이트 루트를 참조할 방법이 없게 되거든요. `%{base_url}`은 URL을 구성할 수 있도록 허용하기 위해 중요한 역할을 수행합니다. 일반적으로 URL 템플릿 시스템은 base, path, full\_url이라는 세 가지 플레이스홀더를 제공하며, 마지막 것은 편의를 위해만 제공됩니다(앞의 두 가지를 연결한 것입니다).

---

<div class="post-metadata">

### Author: ![nordize](https://avatars.discourse-cdn.com/v4/letter/n/c68b51/32.png) [@nordize](https://meta.discourse.org/u/nordize)
#### Post date: [4월 20, 2024, 6:53오후 UTC](https://meta.discourse.org/t/email-notification-template-gui-complains-about-base-url/279395/9 "2024-04-20T18:53:28Z")

</div>

@pfaffman 3.2.1에서도 여전히 수정되지 않았습니다. 처음 보고한 이후로 아무것도 변하지 않았습니다. 이 문제를 좀 더 우선순위로 올려서 수정해 주실 수 있을까요? 요약하자면, %{url}은 베이스 URL 이후의 경로만 포함하므로, 거의 모든 템플릿에서 %{base\_url}를 사용할 수 있어야 합니다.

적어도 사용 가능 키 목록에 표시되지 않더라도 사용자가 이를 사용할 수 있도록 막지 말아 주세요.

---

<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: [4월 20, 2024, 7:11오후 UTC](https://meta.discourse.org/t/email-notification-template-gui-complains-about-base-url/279395/10 "2024-04-20T19:11:07Z")

</div>

hey @nordize, 여기서 답변을 남긴 사람 중에는 버그 수정에 대한 권한이 있는 사람이 아무도 없습니다.

---

<div class="post-metadata">

### Author: ![nordize](https://avatars.discourse-cdn.com/v4/letter/n/c68b51/32.png) [@nordize](https://meta.discourse.org/u/nordize)
#### Post date: [4월 21, 2024, 1:07오전 UTC](https://meta.discourse.org/t/email-notification-template-gui-complains-about-base-url/279395/11 "2024-04-21T01:07:56Z")

</div>

그래서 그런 경우엔 어떻게 하면 좋을까요? 누구에게 알리거나, 관련 담당자의 주의를 끌기 위해 다른 조치가 가능한지 잘 모르겠어요.

---

<div class="post-metadata">

### Author: ![JammyDodger](https://sea3.discourse-cdn.com/meta/user_avatar/meta.discourse.org/jammydodger/32/254611_2.png) [@JammyDodger](https://meta.discourse.org/u/JammyDodger)
#### Post date: [5월 16, 2024, 5:52오전 UTC](https://meta.discourse.org/t/email-notification-template-gui-complains-about-base-url/279395/14 "2024-05-16T05:52:55Z")

</div>

상황을 공유드리면, 엔지니어가 배정되어 이 문제를 확인하고 있습니다. 👍

---

<div class="post-metadata">

### Author: ![nordize](https://avatars.discourse-cdn.com/v4/letter/n/c68b51/32.png) [@nordize](https://meta.discourse.org/u/nordize)
#### Post date: [5월 20, 2024, 12:00오후 UTC](https://meta.discourse.org/t/email-notification-template-gui-complains-about-base-url/279395/15 "2024-05-20T12:00:26Z")

</div>

누군가 rails 객체 이름이나 rails 콘솔 명령어로 템플릿에서 `%{base_url}`을 _강제_하는 방법을 도와줄 수 있나요? 이 템플릿은 해당 변수를 받아들이고 확장하는 것이 확실한데 (단순히 GUI에서 유효하지 않다고 표시하는 것뿐입니다).

---

<div class="post-metadata">

### Author: ![ted](https://sea3.discourse-cdn.com/meta/user_avatar/meta.discourse.org/ted/32/283882_2.png) [@ted](https://meta.discourse.org/u/ted)
#### Post date: [5월 30, 2024, 3:45오전 UTC](https://meta.discourse.org/t/email-notification-template-gui-complains-about-base-url/279395/16 "2024-05-30T03:45:32Z")

</div>

안녕하세요, @nordize 님!

스크린샷과 업데이트하려는 템플릿의 키 등 추가 정보를 제공해 주실 수 있을까요? 제 인스턴스에서는 `base_url`을 사용하는 데 문제가 없지만, 해당 문제가 특정 템플릿과 관련이 있을 수 있습니다.

---

<div class="post-metadata">

### Author: ![nordize](https://avatars.discourse-cdn.com/v4/letter/n/c68b51/32.png) [@nordize](https://meta.discourse.org/u/nordize)
#### Post date: [6월 5, 2024, 8:00오후 UTC](https://meta.discourse.org/t/email-notification-template-gui-complains-about-base-url/279395/17 "2024-06-05T20:00:54Z")

</div>

여기서 `%{base_url}`이 존재해야 하는 예시를 볼 수 있습니다: [Help with Rails console to edit text template](https://meta.discourse.org/t/help-with-rails-console-to-edit-text-template/308691)

이 외에도 많은 경우가 있습니다(예를 들어 대부분의 이메일 템플릿).

모든 이메일 템플릿(아니면 모든 텍스트 템플릿!)은 어디서든 참조할 수 있는 루트 웹사이트이므로 `%{base_url}`을 허용해야 합니다. 일부 템플릿에서만 선택적으로 제거한 결정이 이해되지 않습니다 … 물론 그것이 어쩔 수 없이 발생한 실수라면 모를까.

---

<div class="post-metadata">

### Author: ![ted](https://sea3.discourse-cdn.com/meta/user_avatar/meta.discourse.org/ted/32/283882_2.png) [@ted](https://meta.discourse.org/u/ted)
#### Post date: [6월 6, 2024, 2:15오전 UTC](https://meta.discourse.org/t/email-notification-template-gui-complains-about-base-url/279395/18 "2024-06-06T02:15:52Z")

</div>

고마워요. 한번 확인해볼게요. 👍

> [@nordize](#):
>
> 일부 템플릿에서만 선택적으로 제거한 결정이 이해가 안 되네요 … 혹시 실수로 그렇게 된 거라면 모를까요

이건 의도적인 게 아닌 것 같아요.
