테마 추가 실패 시 해당 테마를 영구적으로 추가할 수 없음

방금 새로 만든 포럼에서 이런 문제가 발생했어요. 테마를 추가하려고 했는데 파일 확장자 때문에 실패했어요. 그래서 문제를 해결해 보기 위해 일시적으로 *를 허용했는데, 이후 테마를 추가하려고 할 때 500 에러가 계속 발생하기 시작했어요.

메시지

Failed to process hijacked response correctly : ActiveRecord::RecordNotUnique : PG::UniqueViolation: ERROR:  duplicate key value violates unique constraint "index_child_themes_on_parent_theme_id_and_child_theme_id"
DETAIL:  Key (parent_theme_id, child_theme_id)=(50, 35) already exists.

백트레이스

rack-mini-profiler-3.3.0/lib/patches/db/pg.rb:69:in `exec_params'
rack-mini-profiler-3.3.0/lib/patches/db/pg.rb:69:in `exec_params'
activerecord-7.0.8/lib/active_record/connection_adapters/postgresql_adapter.rb:768:in `block (2 levels) in exec_no_cache'
activesupport-7.0.8/lib/active_support/concurrency/share_lock.rb:187:in `yield_shares'
activesupport-7.0.8/lib/active_support/dependencies/interlock.rb:41:in `permit_concurrent_loads'
activerecord-7.0.8/lib/active_record/connection_adapters/postgresql_adapter.rb:767:in `block in exec_no_cache'
activesupport-7.0.8/lib/active_support/concurrency/load_interlock_aware_monitor.rb:25:in `handle_interrupt'
activesupport-7.0.8/lib/active_support/concurrency/load_interlock_aware_monitor.rb:25:in `block in synchronize'
activesupport-7.0.8/lib/active_support/concurrency/load_interlock_aware_monitor.rb:21:in `handle_interrupt'
activesupport-7.0.8/lib/active_support/concurrency/load_interlock_aware_monitor.rb:21:in `synchronize'

오, 이상하네요. 에러 발생 시 제대로 정리되지 않는 것 같습니다.

재현 가능한가요?

다시 한번 확인해 보겠지만, 재현 단계를 정리하면 다음과 같습니다:

  1. 기본적으로 허용되지 않는 파일이 포함된 테마를 찾습니다 (또는 테마 허용 확장자 목록에서 모든 항목을 삭제하거나 유사한 조치를 취합니다)
  2. 테마를 가져오기(Import)를 시도합니다
  3. 확장자 문제로 인해 실패하는 것을 확인합니다
  4. 관련 확장자를 허용합니다 (또는 단순히 *를 사용합니다)
  5. 그래도 테마 가져오기에 실패합니다.

테마에 일부 테마 컴포넌트가 연결되어 있어야 할 수도 있지만, 확실하지는 않습니다.

처음에는 제가 만든 테마를 사용하여 이 문제를 일으켰지만, AFAIK(제가 아는 한) 대부분의 테마는 이론적으로 이 문제를 일으킬 수 있어야 합니다.

수정:
네, 여기에서 유일한 실제 필수 조건은 차단된 파일인 것 같습니다. 따라서 커스텀 폰트, 로고 등이 포함된 테마의 경우 해당 파일 확장자를 허용하지 않으면 문제를 트리거할 수 있습니다. (또한 스태프 업로드가 테마 업로드를 덮어쓰는 것으로 보이며, 두 설정 모두에서 허용되지 않는지 확인하십시오)

안녕하세요 :wave:

테마를 확인해 봤는데, 문제가 about.json 파일에 있는 것 같습니다.

컴포넌트 부분에 중복이 있습니다.

29행과 38행 :arrow_down_small:


다만, 테마와 함께 꽤 많은 컴포넌트를 동시에 설치하고 있네요. 모두 필요한가요? :slightly_smiling_face:

2개의 좋아요

아, 실수했네요! 제 탓입니다, 죄송합니다.

사실 이 테마를 다른 사람이 사용하도록 의도한 적이 없었습니다. 제 취향에 맞게 상당히 세밀하게 조정되어 있고, 제가 유용하게 사용하는 테마 컴포넌트들이 포함되어 있기 때문입니다.