Non hai torto. Stai solo cercando di risolvere un problema, forse frustrato dal fatto che i tuoi embed di YouTube non funzionano…
Quando esegui questo comando:
# time rake posts:rebake_match['youtube',string,100]
116 / 76598 (0.2%)-
Poiché il ritardo è impostato su 100, verrà rigenerato solo un post ogni 100 secondi. Hai quasi 77.000 post da rigenerare (usando questo modello), quindi ci vorrebbero circa 90 giorni per completare l’operazione. Quando ho usato 100, era solo un esempio, non una raccomandazione; scusa se ti ho confuso
Anche se cambi il ritardo a 10 secondi, la rigenerazione richiederà circa 9 giorni.
A quale velocità desideri effettivamente rigenerare i tuoi “cake YT”?
Quindi, questa è una grande indizio; e ora sappiamo che persino rigenerare un singolo post con il task rake non risolve il tuo problema (abbiamo anche confermato che la ricostruzione HTML dall’interfaccia non funziona, come suggerito da @Overgrow), che è esattamente ciò che stavi cercando di dirci prima.
Grazie per la risoluzione dei problemi passo dopo passo.
Lasciami pensare a questo per un po’; nel frattempo, altri potrebbero avere alcune idee ora che il problema sta diventando più chiaro.
Pubblica uno dei tuoi link YT (quelli che non si risolvono, magari dove hai aggiunto il testo ‘icemanworkingonthisheadache’) qui e verifichiamo che l’onebox funzioni qui (e io proverò anche su uno dei miei siti di staging).
Sì, tutte le altre onebox funzionano come previsto: Discourse, Wordpress, SoundCloud, Facebook, Twitter, Vimeo, ecc. Solo YT viene visualizzato come URL.
Una cosa da provare è accedere a Google e visitare il sito di YouTube mentre sei proxyato attraverso il tuo server, per vedere se ti restituisce eventuali messaggi di errore “interessanti”.
Quindi, dopo una settimana di penitenza, ho fatto qualche progresso ma alla fine mi sono scontrato con un muro.
Tutti i dettagli menzionati sopra sono ancora validi.
Dopo aver fatto un lavoro straordinario di debug, è risultato che il problema era il seguente: quando ho creato il nuovo Droplet, ho colto l’occasione per aggiornare alcune cose che non ero riuscito a fare con quello originale. Una di queste era IPv6. Risulta che gli intervalli IPv6 di Digital Ocean sono per lo più bloccati da Google per qualche motivo cosmico. Quindi, un consiglio per il futuro: se stai configurando un’installazione Discourse su DO, non abilitare IPv6, perché non potrai rimuoverlo in seguito; dovrai cambiare Droplet.
Dopo aver corretto questo, tutto ha funzionato come previsto. Tuttavia, a causa della crescita normale (e di alcune recenti mosse di Alphabet), sono tornato a zero perché ora ricevo questo errore e non conosco alcun modo per “fermare” Discourse dall’elaborare gli onebox (ho persino provato ad aggiungere il dominio YT alla Blacklist, senza successo). Questo perché, secondo quel post che ho collegato, “dovrebbe sparire dopo un’ora”, ma non posso bloccare i miei rebake… o forse sì? Dovrei farlo? Le altre opzioni richiedono modifiche lato server, ma significherebbe… aggiungere più indirizzi IP? Forzare “X-Forwarded-For” nelle chiamate Onebox?
Inoltre, una domanda bonus: perché Discourse “si assume il carico” delle chiamate a YT? Voglio dire, questo errore suggerisce che è l’indirizzo IP del server a essere segnalato per tutte le chiamate (sì, è a causa dello srotolamento degli onebox), ma… perché non ricade sull’utente che carica la pagina? Per motivi di prestazioni?
Come soluzione temporanea, ho testato questo CSS (non elegante) per te e sembra funzionare per bloccare il onebox (dall’elaborazione); è un po’ come “colpire una mosca con un martello”, che puoi attivare e disattivare (aggiungere e rimuovere) finché non trovi qualcosa di meglio. Provaci e vedi:
.onebox-body{
display:none;
}
Spero che questo ti aiuti.
Nota:
Ho testato questo su alcuni link onebox e il onebox (i onebox) sono scomparsi e il link è rimasto; ma non ho testato nel dettaglio, scusa.
Ferma semplicemente l’elaborazione corrente. Sai cosa ha innescato la ricottura (rebake) in esecuzione? È un’attività in background? Se sì, imposta semplicemente la configurazione rebake old posts count a zero.
Puoi quindi utilizzare la ricottura dei post YouTube selezionati (corrispondenti a un’espressione regolare) con ritardi..
Recentemente ho imparato (grazie a voi) come eseguire ricotture personalizzate ed eseguire alcune query e magie oscure. Tuttavia, posso chiedere come posso sapere/interrogare questo:
Cioè… è sulla console Ruby o uccidendo qualcosa su Sidekiq…?
Non riesco però a impostarlo a zero. L’interfaccia dice che il valore deve essere compreso tra 1 e 2.000.000.000. Quindi suppongo che lo imposti a 1 e lo combini con il tuo trucco… questo dovrebbe permettermi di vedere se il ban viene rimosso.
(Perché le altre opzioni sono molto più pesanti: nuovi IP, load balancer o forzare direttamente X-Forwarded-For su tutto, e non voglio rompere il funzionamento di Discourse )
FYI … Se hai bisogno di impostarlo a zero, molto probabilmente puoi farlo con una query di aggiornamento diretto al database (o tramite Rails, su cui non posso esprimere un parere competente)
Be’, niente da fare. L’ho lasciato con il valore 1 e con l’hack per non mostrare nulla, ma il Ban è ancora attivo dopo 5 ore. La parte peggiore? Ovviamente non c’è modo di contattarli, quindi sto solo cercando di indovinare come risolvere.
Devi avere pazienza. Nella mia esperienza, potrebbero volerci fino a 2-3 giorni prima che il blocco venga rimosso. Assicurati solo che non ci siano ulteriori richieste a quell’indirizzo IP.
Puoi verificare se ci sono ancora lavori di rigenerazione da eseguire. L’indizio si trova nel codice (questa riga seleziona i post che devono essere rigenerati in background, limitati dall’impostazione rebake old posts count):
Stai cercando i seguenti post:
WHERE (((baked_version IS NULL) OR (baked_version < 2)) AND (deleted_at IS NULL))