Dies könnte auf ein Missverständnis darüber zurückzuführen sein, wie mit der Datenbank über Ruby (ActiveRecord?) im Vergleich zu Rails interagiert wird, aber ich sehe eine ungewöhnliche Fehlermeldung beim Ausführen eines Rake-Tasks.
Die Fehlermeldung wird einige Male mit unterschiedlichen Post-IDs wiederholt, ähnlich wie hier:
Failed to refresh post (topic_id: , post_id: 46367)
Die Fehlermeldung stammt von dieser Zeile im Rake-Task posts:refresh_emails:
Allen Posts, die diesen Fehler auslösen, ist gemeinsam, dass sie sich in einem gelöschten Thema befinden. Dass etwas damit nicht funktioniert, ist nicht völlig überraschend, aber was mich verwundert, ist, dass ich beim Abfragen dieser Post-ID in Rails sehe, dass sie sehr wohl eine topic_id hat, die diese puts-Zeile nicht erhalten kann.
[1] pry(main)> Post.where(id: 46367)
=> [#<Post:0x000055e95558ad10
id: 46367,
user_id: 3372,
topic_id: 4225,
...
raw_email:
"<some valid raw email>",
...
Ich habe den Code etwas durchsucht und die einzige offensichtliche Erklärung für einen ausgelösten Fehler und das Ausgeben dieser Meldung wäre, wenn auch raw_email in Zeile 290 nicht ermittelt werden konnte, was dazu führen würde, dass Email::Receiver während der Initialisierung einen Fehler wirft.
Das liegt daran, dass ich mit Ruby nicht vertraut bin und nicht besonders tief in revise() eingedrungen bin, aber es könnte durchaus andere Stellen geben, die aus anderen Gründen einen Fehler auslösen.
Unabhängig davon bin ich etwas verwirrt darüber, warum es bei diesen Posts fehlschlägt. Es scheint, als ob dieser Rake-Task in der Lage sein sollte, mit Posts zu arbeiten, die zufällig Teil gelöschter Themen sind, einschließlich des ersten Posts. Besonders wenn man bedenkt, dass ein Mitarbeiter das Thema möglicherweise wiederherstellt, ohne zu wissen, dass ein solcher Task überhaupt ausgeführt wurde, geschweige denn, dass er nicht auf dieses eine Thema angewendet wurde.
In meinem Fall muss ich nichts mit diesen gelöschten Themen tun, und ich weiß, dass sie nicht wiederhergestellt werden, daher suche ich keine Lösung, sondern wollte es nur zur Kenntnis bringen. Vielleicht ist es etwas, vielleicht auch nichts.