수정: 내 오류와는 다른 문제인 것 같습니다. 일부 이미지가 s3로 이동되지 않은 것 같네요. 죄송합니다, 잘못 읽었습니다. 아래 정보가 여전히 유용할 수 있습니다. 이 가이드를 따라 s3 업로드를 설정했나요? Configure an S3 compatible object storage provider for uploads
@evenif - 이런 문제가 발생하고 있어 죄송합니다. 동일한 문제를 겪는 사람들을 위해 가이드를 작성할 계획이었습니다. 여러 스레드에서 정보를 모아야 해서 그랬거든요. 하지만 아바타 문제를 해결하기를 기다리고 있습니다. 위에서 볼 수 있듯이 저는 아직 그 문제로 어려움을 겪고 있습니다.
rails에서 이 명령을 실행하면 true 또는 false 중 어떤 값이 반환되나요?
SiteSetting.migrate_to_new_scheme
false라면, 다음과 같이 true로 설정해 볼 수 있습니다:
SiteSetting.migrate_to_new_scheme = true
그 후 잠시 기다렸다가 나중에 다시 확인해 보세요 (15분마다 실행된다고 기억하는데), 즉시 실행하고 싶다면:
Jobs::MigrateUploadScheme.new.execute(nil)
그 후 나중에 또는 즉시 SiteSetting.migrate_to_new_scheme가 false로 변경되었는지 다시 확인해 보세요 (완료되었음을 의미합니다).
그 다음 다음을 실행하세요:
Upload.by_users.where("url NOT LIKE '//%' AND url NOT LIKE '/uploads/default/original/_X/%'").to_a
이것은 여전히 문제가 있어 마이그레이션되지 않은 업로드를 찾아야 합니다. 제 경우, 이 업로드들은 모두 db에 레코드로 존재했지만 실제 이미지는 존재하지 않았습니다.
목록 크기에 따라, 페이지를 복사한 뒤 찾기 및 치환을 사용하여 업로드 ID 목록을 통해 문제 레코드를 삭제하는 명령 목록을 만들 수 있습니다.
Upload.find(1).destroy
Upload.find(2).destroy
Upload.find(3).destroy
여기서 1, 2, 3 등은 업로드 ID로 대체됩니다. 전체 목록을 복사하여 rails에 붙여넣고 엔터를 누르세요. 그러면 문제 레코드들이 삭제되어야 합니다.
그 후, rails에서 나가기(exit를 입력)하면 해야 할 일은 다음을 실행하는 것뿐입니다:
rake posts:rebake
또는
rake posts:rebake_uncooked_posts
Uncooked는 실패 시 rebake를 재개할 수 있게 해줍니다. 업로드가 아주 많지 않다면 일반 rebake를 사용하는 것을 권장합니다.
그러면 모든 것이 정상적으로 작동해야 합니다,hopefully. 하지만 최적화된 아바타가 제 것과 마찬가지로 깨져 있을 가능성이 높지만, 원본은 s3에 존재해야 합니다.
rails에서 기본 아바타가 표시되는 사용자를 대상으로 다음을 실행하여 아바타가 성공적으로 이동했는지(또는 적어도 일부 사용자의 경우) 확인할 수 있습니다:
User.find_by_username('username').uploaded_avatar
또한 다음을 사용하여 최적화 버전이 존재하는지 확인할 수도 있습니다:
OptimizedImage.where(upload_id: upload_id).where(version: 2)