durante Jobs::ProcessPost
Posso ricrearlo dalla riga di comando:
mentre riesco a raggiungerlo con successo tramite:
Credo possa essere correlato a questo:
committed 01:28PM - 23 May 22 UTC
Previously, with the default `editing_grace_period`, hotlinked images were pulle… d 5 minutes after a post is created. This delay was added to reduce the chance of automated edits clashing with user edits.
This commit refactors things so that we can pull hotlinked images immediately. URLs are immediately updated in the post's `cooked` HTML. The post's raw markdown is updated later, after the `editing_grace_period`.
This involves a number of behind-the-scenes changes including:
- Schedule Jobs::PullHotlinkedImages immediately after Jobs::ProcessPost. Move scheduling to after the `update_column` call to avoid race conditions
- Move raw changes into a separate job, which is delayed until after the ninja-edit window
- Move disable_if_low_on_disk_space logic into the `pull_hotlinked_images` job
- Move raw-parsing/replacing logic into `InlineUpload` so it can be easily be shared between `UpdateHotlinkedRaw` and `PullUserProfileHotlinkedImages`
Contiene:
end
end
# onebox may have added some links, so extract them now
def extract_links(post)
TopicLink.extract_from(post)
QuotedPost.extract_from(post)
end
def enqueue_pull_hotlinked_images(post)
Jobs.cancel_scheduled_job(:pull_hotlinked_images, post_id: post.id)
Jobs.enqueue(:pull_hotlinked_images, post_id: post.id)
end
end
end
In questo contesto, potrebbe richiedere un :: iniziale?
1 Mi Piace
david
(David Taylor)
26 Maggio 2022, 11:35am
2
Hmm, aggiungere un :: iniziale lo risolverebbe sicuramente… ma non dovrebbe essere necessario
Dato che la chiamata proviene da ::Jobs::ProcessPost, Ruby dovrebbe risalire l’albero. Prima cercherà ::Jobs::ProcessPost::Jobs, poi ::Jobs::Jobs, e infine il modulo ::Jobs.
L’errore che stai vedendo suggerisce che qualcosa sta definendo ::Jobs::Jobs… il che è strano! Dando un’occhiata sulla mia istanza di sviluppo:
[1] pry(main)> Jobs::Jobs
=> Jobs::Jobs
[2] pry(main)> Jobs::Jobs.constants
=> [:RemapOldBotImages, :GrantBadges]
Sembra che queste righe in discourse-narrative-bot stiano causando problemi. Se le commento, il problema si risolve.
if Rails.env == "development"
# workaround, teach reloader to reload jobs
# if we do not do this then
#
# 1. on reload rails goes and undefines Jobs::Base
# 2. as a side effect this undefines Jobs::BotInput
# 3. we have a post_edited hook that queues a job for bot input
# 4. if you are not running sidekiq in dev every time you save a post it will trigger it
# 5. but the constant can not be autoloaded
Rails.configuration.autoload_paths << File.expand_path('../autoload', __FILE__)
end
La buona notizia è che è solo per lo sviluppo - correlato ai percorsi dei file dei job che non corrispondono ai nomi dei moduli. Ecco una PR per sistemare le cose:
https://github.com/discourse/discourse/pull/16924
Grazie per la segnalazione @merefield
4 Mi Piace
Ah, sì, strano e spiega perché la Produzione non è esplosa!
Grazie per la rapida risposta!!
2 Mi Piace
david
(David Taylor)
Chiuso
27 Maggio 2022, 7:00am
4
Questo argomento è stato chiuso automaticamente dopo 17 ore. Non sono più consentite nuove risposte.