테마 컴포넌트 경로

안녕하세요!

최신 버전으로 업그레이드하려고 하는데, 일부 테마 컴포넌트 관련 문제가 있습니다.
이들은 모두 제가 직접 만든 컴포넌트이며, GitHub에서 GitLab로 이동했습니다. 이제 discourse 내부가 아닌 외부에서 discourse를 업그레이드하려고 하면, 해당 컴포넌트가 더 이상 사용 불가능하다는 이유로 오류가 발생합니다. discourse 안에서 삭제하려고 시도했지만 삭제되지 않습니다.
지금 질문은 다음과 같습니다: 서버에서 직접 삭제할 수 있는 경로는 어디인가요? 찾지 못하고 있습니다.

safe-mode를 시도해 보았지만, safe-mode에서는 포럼에 접근할 수 없습니다.


수정:

app.yml과 같이 모든 테마와 컴포넌트가 저장된 파일이 있는지요? 있다면 그 목록을 삭제한 후 discourse를 다시 구축하여 해당 컴포넌트 없이 실행할 수 있을까요?

이것이 해결해야 할 문제라고 생각합니다. 올바른 접근 방식은 이전 위치에서 가져온 모든 테마 및 테마 구성 요소를 삭제하고, 새로운 위치에서 새 것을 가져오는 것입니다.

이렇게 하면 Discourse가 무한 루프에 빠지기 때문에 불가능합니다. 그래서 다른 방법으로 삭제하는 법을 물어본 것입니다.
안전 모드에도 진입할 수 없습니다.
백업이 너무 오래되어 재설치도 불가능합니다.
./launcher rebuild app을 실행한 후, 게스트가 포럼에 접근할 수 없음을 확인했습니다.

그래서 어떻게 하면 다시 작동하게 할 수 있을까요?

왜 그런가요? 대신 어떤 일이 일어나나요?

백업의 연식은 중요하지 않아야 합니다. 5년 된 백업도 문제없이 복원됩니다.

솔직히 말씀드리면, 테마 컴포넌트는 당신의 문제 중 가장 사소한 부분으로 보입니다.

UI를 통해 삭제하는 것이 불가능하다면, 다른 방법도 실패할 가능성이 높습니다.

데이터베이스에서 수동으로 구성 요소를 비활성화하는 것은 여기에서 최후의 수단으로 고려할 수 있는 해결책이라고 생각합니다. 매우 위험하지만, 다른 선택지가 없다면 실행 가능합니다.

비활성화된 구성 요소는 적어도 재구축이 성공하도록 해 줄 것이며, 이는 다시 관리자 인터페이스에 대한 접근을 허용하여 GitLab에서 구성 요소를 제거하고 재설치할 수 있게 해 줍니다.

아무 일도 일어나지 않습니다. 사이트는 안전 모드에서는 사용할 수 없거든요.

물론 중요합니다. 마지막 백업 이후에 작성된 모든 게시물이 사라지니까요.

그리고 아니요, 컴포넌트를 제거하기 전에 업데이트를 시도하기 전까지는 포럼이 정상적으로 작동하고 있었습니다.

@itsbhanusharma
답변해 주셔서 감사합니다. 테마와 컴포넌트가 데이터베이스에 저장되어 있다는 것을 몰랐습니다.

데이터베이스에 어떻게 접근할 수 있나요?

수정:
음, 데이터베이스에 들어왔고 테마_settings 테이블인 것 같습니다.
모든 컴포넌트를 삭제하는 방법은 무엇인가요?

질문자님의 글을 잘못 읽었습니다. 복구 실패 때문에 너무 오래되었다고 말씀하신 줄 알았거든요.

이들은 데이터베이스에 저장되지 않지만, 활성화/비활성화 상태는 데이터베이스 자체에 저장됩니다.

정확한 단계를 기억하진 않지만, 최근 비슷한 문제로 손상된 설치 환경을 수정한 적이 있습니다.

여기서 가장 중요한 것은 컨테이너가 여전히 실행 중인지 확인하는 것입니다. 실행 중이라면 데이터베이스에서 문제의 구성 요소를 비활성화하는 방법에 대해 조언해 드릴 수 있습니다.

네, 컨테이너가 여전히 실행 중입니다.
컴포넌트를 비활성화하면 정말 큰 도움이 될 것입니다.

완전히 데이터베이스에 저장되어 있습니다 (테이블 이름이 theme*로 시작하는 것들)

그렇다면 어떻게 삭제할 수 있을까요? (테이블의 모든 내용을 삭제하는 것이 아닙니다.)

대충 기억나는 바로는 - rails 콘솔에서 이 명령어를 실행하세요. 테마를 볼 때 URL에서 테마의 ID를 찾아주세요.

t = Theme.find(123)
t.enabled = false
t.save

음, 알겠습니다. 그게 문제가 되네요.
pgAdmin 같은 도구를 사용해 데이터베이스에 직접 접근하는 것은 불가능한가요?
관리자 영역에 더 이상 접근할 수 없기 때문에 테마와 컴포넌트의 ID를 모릅니다.


수정:
테마와 컴포넌트를 찾아냈습니다.
비활성화하는 것은 작동하지 않으므로, rails c를 사용하여 어떻게 삭제해야 할까요?
rake로 제거하려고도 해봤지만, rake로도 삭제할 수 없습니다.

자세한 정보를 공유해 주시겠습니까? 오류가 발생합니까? 그렇다면 어떤 오류인가요? 아니면 아무런 효과가 없나요?

rake themes:uninstall https://github.com/link/to/git.git
rake aborted!
Don't know how to build task 'themes:uninstall' (See the list of available tasks with `rake --tasks`)
Did you mean?  themes:install
/usr/local/bin/bundle:23:in `load'
/usr/local/bin/bundle:23:in `<main>'
(See full trace by running task with --trace)

아니면 rake로 항목을 삭제하는 올바른 명령어는 무엇인가요?

rake --tasks와 rake -AT를 사용하면 명령어 목록을 볼 수 있지만, 테마나 컴포넌트를 삭제하는 명령어는 없습니다.

rails c를 사용하면 테마를 비활성화할 수는 있지만, 재시작해도 여전히 이전의 손상된 테마가 유지됩니다.

Theme.where(user_selectable: true).update_all(user_selectable: false)
Theme.where(auto_update: true).update_all(auto_update: false)
Theme.clear_default!

rails 콘솔에서 이 코드들을 시도해 보고, 그 후 사이트가 로드되는지 확인해 주시겠어요? 안 되면 재빌드(rebuild)를 시도해 볼 수 있을까요?

명령어를 따라 다시 구축했는데 잘 작동했고, 제 포럼이 다시 온라인으로 돌아왔습니다! :+1: :slightly_smiling_face:

도와주신 여러분께 진심으로 감사드립니다!

안녕하세요 @Osama. 최근 theme-components-can-break-a-rebuild 이슈 때문에 걱정하고 있습니다.

이 문제를 해결하기 위해 howto 문서가 필요하다고 생각합니다.

여기 있는 수정은 “GitHub URL이 깨져서 빌드가 실패하는” 경우만 다루는 거죠?

JavaScript 오류 때문에 빌드가 깨지는 경우에도, 커맨드 라인에서 테마를 비활성화하거나 제거할 수 있는 비슷한 방법이 있을까요? 있다면 howto 문서에 포함해야 할 것 같습니다.

수정: "Alternative Logos"가 포함된 경우 실패하는 상황 같은 거요…

나도 이 문제에 대해 한동안 생각해 왔는데, 내 의견은 일부 커뮤니티에는 적합하지만 모든 커뮤니티에는 그렇지 않다는 것입니다. 일부 커뮤니티는 사용자 정의/테마를 사이트 정체성의 근본적인 부분으로 취급하며, 사이트 배포 시 사용자 정의 설정에 문제가 있는지 정말로 알고 싶어 합니다. 반면 다른 커뮤니티는 바닐라 Discourse 설치에 몇 가지 사용자 정의/컴포넌트를 살짝 얹어 사용하는 경우가 많으며, 며칠간 이러한 요소 없이도 충분히 운영할 수 있습니다.

아마도 Auto update when Discourse is updated 체크박스는 새로운 테마/컴포넌트를 설치할 때 기본적으로 꺼져 있어야 하지 않을까요? 현재는 기본적으로 켜져 있는데, 기본적으로 꺼져 있어야 한다고 생각합니다. 하지만 이 부분은 더 넓은 논의가 필요합니다…

아니요, 위 코드 스니펫(특히 2번째 줄)은 현재 설치된 모든 테마/컴포넌트에 대해 배포 시 자동 업데이트를 비활성화하므로, 테마 자동 업데이트로 인한 JS/CSS 오류를 포함한 모든 빌드 문제를 해결해야 합니다. #howto에는 2번째 줄만 포함해야 합니다.

저도 방금 이 문제를 겪었습니다. 공개 저장소와 연결된 컴포넌트가 있는데, 해당 저장소를 비공개로 변경하면 재빌드가 실패합니다. 사용자가 사이트가 몇 달 후에 시스템 관리자에게 문제를 일으킬 수 있는 변경 사항을 적용할 수 있기 때문에 매우 불편한 상황입니다.

Path of theme components - #16 by Osama 의 명령어는 저에게 잘 작동했습니다. 레일스 콘솔에 진입하는 방법에 대한 설명을 추가하는 것이 좋겠습니다.

./launcher start app
./launcher enter app
rails c