f1r4s
(Eddie)
1월 10, 2022, 10:00오후
1
안녕하세요,
배지(badge) 섹션에서 문제가 발생했습니다. 몇 가지 배지를 수정하고 이미지를 추가했는데, 6개월 후에 백업을 복원하니 배지 섹션을 제외한 모든 것이 정상적으로 작동합니다. 세이프 모드(safe-mode)로 로그인하여 모든 플러그인을 비활성화해 보았지만, 여전히 같은 문제가 발생합니다. 배지 섹션의 기본 이름과 이미지로 복원하는 방법은 무엇일까요?
에러가 다음과 같이 표시됩니다.
Message (2 copies reported)
NoMethodError (undefined method `url' for nil:NilClass)
app/models/badge.rb:306:in `image_url'
(eval):10:in `_fast_attributes'
app/controllers/application_controller.rb:484:in `serialize_data'
app/controllers/badges_controller.rb:30:in `index'
app/controllers/application_controller.rb:387:in `block in with_resolved_locale'
app/controllers/application_controller.rb:387:in `with_resolved_locale'
lib/middleware/omniauth_bypass_middleware.rb:71:in `call'
lib/content_security_policy/middleware.rb:12:in `call'
lib/middleware/anonymous_cache.rb:356:in `call'
config/initializers/100-quiet_logger.rb:23:in `call'
config/initializers/100-silence_logger.rb:31:in `call'
lib/middleware/enforce_hostname.rb:23:in `call'
lib/middleware/request_tracker.rb:198:in `call'
Backtrace
app/models/badge.rb:306:in `image_url'
active_model_serializers (0.8.4) lib/active_model/serializer.rb:99:in `block in attribute'
(eval):10:in `_fast_attributes'
active_model_serializers (0.8.4) lib/active_model/serializer.rb:468:in `rescue in attributes'
active_model_serializers (0.8.4) lib/active_model/serializer.rb:455:in `attributes'
active_model_serializers (0.8.4) lib/active_model/serializer.rb:480:in `_serializable_hash'
active_model_serializers (0.8.4) lib/active_model/serializer.rb:359:in `serializable_hash'
active_model_serializers (0.8.4) lib/active_model/array_serializer.rb:89:in `block in _serializable_array'
active_model_serializers (0.8.4) lib/active_model/array_serializer.rb:79:in `map'
active_model_serializers (0.8.4) lib/active_model/array_serializer.rb:79:in `_serializable_array'
Env
HTTP HOSTS: site.com
다른 이미지들은 정상적으로 복원되었나요?
백업에 업로드 파일이 포함되었는지 확인하셨나요?
업로드 파일을 저장하는 데 s3를 사용하고 계신가요? 아니라면 컨테이너에 접속하여 /shared/uploads/default/original/1X 경로로 이동해 보시고, 해당 위치에 파일이 있는지 확인해 주세요.
f1r4s
(Eddie)
1월 11, 2022, 7:24오후
3
네, 저는 S3를 사용하지 않고, 백업에 첨부 이미지가 포함되도록 항상 설정해 왔습니다…
지금 제가 찾고 있는 것은 배지 이미지를 초기화하는 방법입니다. 어떻게 하면 될까요?
기본 설정에서는 배지 이미지를 초기화하는 방법을 제가 아는 한 존재하지 않습니다.
제가 먼저 할 일은 이미지가 없는 배지들이 적어도 복원되었는지 확인하는 것입니다. badges 테이블을 확인하면 image_upload 필드에서 이미지의 ID를 가져올 수 있습니다. 그런 다음 uploads 테이블에서 해당 ID를 사용하여 다음과 같이 이미지의 URL을 가져올 수 있습니다:
select url from uploads where id = <badge-upload-id>
URL은 다음과 같은 형태를 띱니다: /uploads/default/original/1X/c1325294cd04ae6e9072a2577543dad66cf31afe.jpeg 그리고 여기서 파일 이름을 추출할 수 있으며, 이 경우 c1325294cd04ae6e9072a2577543dad66cf31afe.jpeg가 됩니다.
그 다음 find나 선호하는 기타 방법을 사용하여 서버에서 이미지가 해당 경로에 있는지 확인할 수 있습니다.
cd /
find . -name c1325294cd04ae6e9072a2577543dad66cf31afe.jpeg
이미지가 올바른 경로에 복원되었음을 확인한 후, 문제는 다른 곳에 있으므로 디버깅을 계속 진행할 수 있습니다.
백업의 Discourse 버전과 복원하려는 Discourse 버전이 너무 다른가요?
아마도 커뮤니티의 다른 누군가가 이 문제에 대해 더 잘 알고 있을 수 있습니다.
f1r4s
(Eddie)
1월 11, 2022, 7:52오후
5
완벽합니다. 그런데 누락된 배지의 URL이나 이름을 어떻게 알 수 있을까요?
누락된 URL이나 배지 이미지 이름을 어떻게 확인할 수 있는지 방법을 찾지 못하겠습니다.
Discourse Data Explorer 의 지침을 따라 데이터 탐색기 플러그인을 설치하면 배지 테이블을 검사할 수 있습니다. 사용자 정의 배지에 집중하세요.
f1r4s
(Eddie)
1월 11, 2022, 7:59오후
7
설치는 완료했지만, 배지 테이블을 찾을 수 없었습니다;
관리자 프로필을 열면 다음과 같은 오류가 발생합니다;
Message
NoMethodError (undefined method `url' for nil:NilClass)
app/models/badge.rb:306:in `image_url'
(eval):10:in `_fast_attributes'
lib/freedom_patches/ams_include_without_root.rb:54:in `include!'
lib/freedom_patches/ams_include_without_root.rb:54:in `include!'
app/controllers/users_controller.rb:92:in `block (2 levels) in show'
app/controllers/users_controller.rb:89:in `show'
app/controllers/application_controller.rb:387:in `block in with_resolved_locale'
app/controllers/application_controller.rb:387:in `with_resolved_locale'
lib/middleware/omniauth_bypass_middleware.rb:71:in `call'
lib/content_security_policy/middleware.rb:12:in `call'
lib/middleware/anonymous_cache.rb:356:in `call'
config/initializers/100-quiet_logger.rb:23:in `call'
config/initializers/100-silence_logger.rb:31:in `call'
lib/middleware/enforce_hostname.rb:23:in `call'
lib/middleware/request_tracker.rb:198:in `call'
Backtrace
app/models/badge.rb:306:in `image_url'
active_model_serializers (0.8.4) lib/active_model/serializer.rb:99:in `block in attribute'
(eval):10:in `_fast_attributes'
active_model_serializers (0.8.4) lib/active_model/serializer.rb:468:in `rescue in attributes'
active_model_serializers (0.8.4) lib/active_model/serializer.rb:455:in `attributes'
active_model_serializers (0.8.4) lib/active_model/serializer.rb:480:in `_serializable_hash'
active_model_serializers (0.8.4) lib/active_model/serializer.rb:359:in `serializable_hash'
active_model_serializers (0.8.4) lib/active_model/serializer.rb:448:in `block in merge_association'
active_model_serializers (0.8.4) lib/active_model/serializer.rb:445:in `each'
active_model_serializers (0.8.4) lib/active_model/serializer.rb:445:in `merge_association'
Env
HTTP HOSTS: site.com
안녕하세요 @f1r4s
저도 같은 문제를 겪었습니다. 이 문제를 해결하셨나요?
이 문제는 해당 토픽에서 해결된 것 같습니다:
I have this issue since a month; but i try several time upgrade; migrate the database to new one; etc… with no fix.
It was in admin user; i try to migrate the admin data to new one; same issue.. i cannot open the preference or profile and i get 404;
i see same issue but none explain how to fix and it’s quit old since 3 years.
same issue and they mention it’s fixed but too old and none explaine how to fix.