기본 시청 카테고리/태그를 저장할 수 없습니다

이 문제에 대해 별도의 주제를 만들었습니다. 현재 tests-passed 상태이며 이미 재빌드를 수행했습니다. 안전 모드에서도 여전히 문제가 발생합니다.
(2cb805a683)

익명화된 에러 로그: TypeError: Cannot read property 'categories' of undefined at https://domain - Pastebin.com

재현 방법? 기본 감시 대상으로 카테고리를 선택하고 녹색 버튼을 눌러도 아무 일이 일어나지 않습니다. 빨간 십자가를 누르면 되돌아가고, 녹색 체크마크를 눌러도 아무 반응이 없습니다. (기존 사용자에게 적용할지 묻는 창이 나와야 하는데, 제가 설치한 다른 포럼에서는 정상적으로 작동합니다.)

수정: 제목을 더 명확하게 수정했습니다

이것은 해결책도 아니고 해당 사례도 아닙니다.

제 사례를 업데이트합니다: 새 서버에 클린 설치를 진행했고 정상 작동합니다. 설정을 활성화하는 데도 문제가 없습니다. 하지만 프로덕션 사이트의 백업을 복원하니 동일한 문제가 다시 발생합니다. 정말 막막합니다. 불과 이틀 전 클린 설치를 했는데 제가 뭘 잘못했는지 전혀 모르겠습니다.

팀에서 직접 문제를 확인해 보고 싶으시다면 스테이징 사이트 관리자 로그인 정보를 제공해 드릴 수 있으니, 원하시는 대로 확인해 주시면 됩니다.

다른 호스트명이 있는 호스트에서 가져오기를 수행한 후 이 서버로 복원한 적이 있습니까?

네. 구체적으로 말씀드리면, 스테이징 서버를 stage1.domain.com에 설정하고 초기 설정을 실행한 후, 복원 기능을 활성화하고 웹 인터페이스에서 이를 업로드한 뒤 복원했습니다.

하지만 이렇게 질문해도 될까요: /etc/hosts에 위치한 호스트네임은 제 Discourse app.yml 파일의 호스트네임과 정확히 일치해야 하나요?

그리고 이 내용이 DO(디지털오션)에서 처음 설정한 호스트네임 및 DO 내에서 드롭릿이 가진 이름과 어떤 관련이 있나요?

아니요, /etc/hosts의 호스트명은 중요하지 않습니다. 중요했다면 설치 가이드에서 확인을 요청했을 것입니다.

Jay가 링크한 가이드에는 도메인 이름 변경에 필요한 모든 단계가 포함되어 있습니다.

이 문제를 두 분 모두 읽으셨나요? 도메인 변경과는 무관한 문제입니다. 아무 생각 없이 URL만 던져주는 사람들을 보면 정말 답답합니다. 저는 그 가이드를 알고 있습니다. 왜 자꾸 그 가이드를 언급하는 건가요? 이것이 문제가 아닙니다. 버그를 제외하면 제 사이트는 정상적으로 작동하고 있습니다.

2일 동안 이 미친 같은 문제에 대해 아무런 답도 못 얻고 방치당하고 있는 것 같습니다. 첫 게시글(OP)을 다시 읽어주세요. 기본 감시 설정을 저장할 수 없다는 것이 문제입니다. 호스트네임은 무관하고 정확하므로 다시 그 가이드는 필요하지 않습니다.

팀에서 나온 사람이 여기 있나요? 30분도 안 걸려 설치하는 것은 정말 좋지만, 문제가 생기면 많은 포럼 주제들이 방치되고 해결되지 않는다는 것을 알게 되었습니다. 이걸 직접 호스팅한 것이 실수였다는 느낌이 들기 시작합니다.

그러니까, 잘 작동하는 것이죠.

백업을 복원하기 전까지는요.

이것은 복원한 데이터에 문제가 있음을 시사합니다. 저희는 해결책을 제안했지만, 데이터 생성 방식에 대해 자세히 말씀해 주시지 않으셨기 때문에 저희의 제안이 틀렸을 수도 있습니다.

네. 그것이 그들의 업무이므로, 월요일까지는 출근하지 않을 가능성이 큽니다.

어떤 해결책을 말씀하시는 건가요? 현재까지 저는 가이드에 따라 여러 설치를 완료했고, 호스트네임은 정확합니다. 제가 제안한 etc/hosts 설정은 단지 가능한 문제 중 하나였을 뿐이며, 지금은 그것이 이 문제와 아무런 관련이 없음을 알고 있습니다. 따라서 네, 이는 제 백업 또는 데이터베이스에 있는 문제라고 할 수 있습니다.

하지만 저는 특별한 행동을 하지 않았습니다. 제 포럼은 사용자 가입을 시작했을 뿐이며, 저는 데이터베이스(DB)를 건드리지 않았습니다. 이로 인해 이 문제를 해결하는 방법에 대해 저는 전혀 감을 잡지 못하고 있습니다.

이 문제를 해결하기 위해 무엇을 필요로 하시는지 알려 주실 수 있을까요? 저는 OP(원본 게시글)에 에러 로그를 담은 pastebin 링크를 제공했습니다. 이것이 도움이 될까요?

복원 데이터를 생성한 과정은 다음과 같습니다. 실제로 이 데이터는 처음부터 생성된 2일 전의 데이터베이스입니다.

  1. 프로덕션 사이트에서 백업 생성
  2. 이메일 URL을 통해 tar.gz 파일 다운로드
  3. 새로운 DO 드롭렛에 스테이징 환경 설정
  4. 설정에서 복원을 허용하고 관리자 인터페이스를 통해 복원 수행

이 문제는 수정되어야 합니다.

이 커밋을 보고 그렇게 생각했고 기대했습니다. 새로 설정된 스테이징 웹사이트에는 실제로 이 새로운 빌드가 적용되어 있지만 문제가 여전히 존재합니다.

수정: 제 스테이징 환경에는 실제로 업그레이드가 필요합니다. 지금 설치하고 결과를 보고하겠습니다.

수정2: @dax stage1 도메인을 업데이트했지만 여전히 동일한 문제가 발생합니다.
설치됨
2.4.0.beta6
(6f6a02645c)

디버깅을 해보시겠어요? 저는 에러를 재현할 수 없고, 프로덕션 환경이라 현재 로그만으로는 정보가 부족합니다.

다음과 같이 해보실 수 있습니다:

  • Chrome 개발자 콘솔을 엽니다 (Chrome 외 브라우저에서도 가능하지만, 제가 가장 잘 아는 방법입니다)
  • 문제가 발생하는 작업을 수행합니다
  • 스택의 첫 번째 줄을 복사합니다. 질문자님의 pastbin에서는 다음과 같을 것입니다: https://domain.com/assets/application-1beed43f1604869d65e7d466de8cb9119afcf1cbbc2eae42c98ae8f7a5d0edf9.js:1:2086519
  • cmd + shift + p를 누릅니다 (Windows에서는 정확한 단축키는 모르겠지만, 비슷할 것입니다)
  • >를 제거한 뒤 https://domain.com/assets/application-1beed43f1604869d65e7d466de8cb9119afcf1cbbc2eae42c98ae8f7a5d0edf9.js:1:2086519를 붙여넣으세요. 파일이 검색되어야 하며, 해당 파일을 클릭합니다
  • 왼쪽 하단의 {}를 클릭하면 일부 코드가 표시됩니다. 이 코드 블록을 복사해서 여기에 붙여넣어 주세요

(참고: 콘솔에서 https://domain.com/assets/application-1beed43f1604869d65e7d466de8cb9119afcf1cbbc2eae42c98ae8f7a5d0edf9.js:1:2086519를 클릭할 수 있는 경우, 클릭한 후 {}만 누르면 포맷팅된 코드를 볼 수 있습니다)

@j.jaffeux 말씀하신 단계를 따라 해보았지만, 안타깝게도 해당 링크를 클릭하거나 검색하면 파일은 열리지만 내용이 비어 있습니다:

원하시면 스테이징 환경에 대한 세부 정보를 제공해 드릴 수 있습니다. 그러면 테스트를 진행해 보실 수 있을 것입니다. (운영 중인 온라인 환경입니다)

스테이징에서도 재현이 가능하면, 메시지를 통해 세부 정보를 보내주세요.

이 코드 블록에서 이런 일이 일어나고 있습니다:

define("discourse/routes/about", ["exports", "discourse/lib/ajax", "discourse/routes/discourse"], function(e, t, n) {
    "use strict";
    Object.defineProperty(e, "__esModule", {
        value: !0
    }),
    e.default = n.default.extend({
        model: function() {
            var o = this;
            return (0,
            t.ajax)("/about.json").then(function(i) {
                var t = []
                  , n = []
                  , s = moment().locale("en").utc().subtract(1, "year");
                i.about.admins.forEach(function(e) {
                    moment(e.last_seen_at) > s && t.push(e)
                }),
                i.about.moderators.forEach(function(e) {
                    moment(e.last_seen_at) > s && n.push(e)
                }),
                i.about.admins = t,
                i.about.moderators = n;
                var e = i.about.category_moderators;
                return e && e.length && e.forEach(function(e, t) {
                    var n = o.site.categories.findBy("id", e.category_id);
                    i.about.category_moderators[t].category = n
                }),
                i.about
            })
        },
        titleToken: function() {
            return I18n.t("about.simple_title")
        },
        actions: {
            didTransition: function() {
                return this.controllerFor("application").set("showFooter", !0),
                !0
            }
        }
    })
})

소스 코드에서 이 부분은 여기에 있습니다:

https://github.com/discourse/discourse/blob/master/app/assets/javascripts/discourse/routes/about.js.es6#L25

아직 이 actions가 어떤 영향을 미치고 있는지 정확히 알 수 없습니다… 내일 더 자세히 파보겠습니다.

확인해 주셔서 감사합니다. 이 문제를 제외하고 포럼은 완벽하게 작동하고 있으며, 급한 사안이 아닙니다. 일요일 저녁이니까 편하게 쉬시고, 문제를 확인해 주셔서 다시 한번 감사합니다.

2.4.0beta7에서도 문제가 계속되고 있습니다.

수정2: 다음 설정도 저장할 수 없다는 것을 방금 알게 되었습니다:

커밋을 할 때마다 계속 시도해 보았습니다.

지문 인식 플러그인을 설치하려고 재빌드를 진행했습니다. 여러분이 이 문제를 수정했는지, 아니면 그냥 운이 좋게 해결된 건지 모르겠지만… 드디어 기본 시청 설정을 저장할 수 있게 되었습니다. 감사합니다!

커밋에서 수정되었습니다