이 문제는 Ruby(ActiveRecord?)와 Rails에서 데이터베이스를 조작하는 방식에 대한 오해에서 비롯된 것일 수 있습니다. rake 작업을 실행하는 동안 특이한 오류 메시지를 확인했습니다.
오류 메시지는 아래와 유사하게 서로 다른 post ID와 함께 여러 번 반복됩니다:
Failed to refresh post (topic_id: , post_id: 46367)
해당 오류 메시지는 rake 작업 posts:refresh_emails의 다음 줄에서 발생하고 있습니다:
이 오류를 유발하는 모든 게시글에 공통적인 점은 해당 게시글이 삭제된 토픽 내에 위치해 있다는 것입니다. 삭제된 토픽의 게시글에 대해 특정 작업을 수행하지 못하는 것은 완전히 예상 밖의 일은 아니지만, 제가 흥미롭게 생각하는 점은 rails에서 해당 게시글 ID를 쿼리하면 topic_id가 설정되어 있음에도 불구하고 해당 puts 줄에서 이를 가져오지 못하고 있다는 것입니다.
[1] pry(main)> Post.where(id: 46367)
=> [#<Post:0x000055e95558ad10
id: 46367,
user_id: 3372,
topic_id: 4225,
...
raw_email:
"<some valid raw email>",
...
코드를 조금 살펴본 결과, 오류가 발생하고 해당 메시지가 출력되는 데 대한 제가 찾을 수 있는 유일한 명백한 설명은 290번째 줄에서 raw_email도 가져오지 못해 Email::Receiver가 초기화 중에 예외를 발생시켰기 때문이라는 것입니다.
다만 이는 Ruby에 익숙하지 않고 revise()를 매우 자세히 파고들지 않았기 때문에, 다른 이유로 예외가 발생할 수 있는 다른 위치가 있을 수도 있습니다.
어쨌든, 이 rake 작업은 삭제된 토픽의 일부인 게시글(첫 번째 게시글을 포함하여)에 대해 작동할 수 있어야 할 것 같아서, 왜 이러한 게시글에서 실패하는지 다소 혼란스럽습니다. 특히 스태프가 해당 작업이 실제로 수행되었는지, 심지어 해당 특정 토픽에는 적용되지 않았는지도 모른 채 토픽을 복구할 수 있기 때문입니다.
제 경우, 이러한 삭제된 토픽에 대해 특별히 할 일이 없으며, 이들이 복구되지 않을 것이라는 것을 알고 있으므로 해결책을 찾는 것은 아닙니다. 다만 누군가의 주의를 끌고 싶었을 뿐입니다. 어쩌면 중요한 문제일 수도 있고, 아무것도 아닐 수도 있습니다.