NoMethodError : méthode indéfinie `should_secure_uploads?` - dernières mises à jour

Bonjour,

Depuis la mise à jour de Discourse et de nos plugins, nous ne pouvons plus envoyer d’e-mails. Nous rencontrons les erreurs suivantes dans Sidekiq.

Jobs::HandledExceptionWrapper : NoMethodError enveloppé : méthode should_secure_uploads?’ non définie pour #<Post id: 3568, user_id: -2, topic_id: 3224, post_number: 1, raw: "Une nouvelle campagne menée par le T…`

Nous utilisons AWS S3 pour héberger les images.

Journaux complets

activemodel-7.0.8.1/lib/active_model/attribute_methods.rb:450:in `method_missing' 
/var/www/discourse/lib/pretty_text.rb:656:in `format_for_email' 
/var/www/discourse/app/helpers/user_notifications_helper.rb:59:in `email_excerpt' 
/var/www/discourse/app/mailers/user_notifications.rb:279:in `block in digest' 
/var/www/discourse/app/mailers/user_notifications.rb:278:in `map' 
/var/www/discourse/app/mailers/user_notifications.rb:278:in `digest' 
actionpack-7.0.8.1/lib/abstract_controller/base.rb:215:in `process_action' 
actionpack-7.0.8.1/lib/abstract_controller/callbacks.rb:234:in `block in process_action' 
activesupport-7.0.8.1/lib/active_support/callbacks.rb:99:in `run_callbacks' 
actionpack-7.0.8.1/lib/abstract_controller/callbacks.rb:233:in `process_action' 
actionpack-7.0.8.1/lib/abstract_controller/base.rb:151:in `process' 
actionmailer-7.0.8.1/lib/action_mailer/rescuable.rb:27:in `block in process' 
actionmailer-7.0.8.1/lib/action_mailer/rescuable.rb:19:in `handle_exceptions' 
actionmailer-7.0.8.1/lib/action_mailer/rescuable.rb:26:in `process' 
actionview-7.0.8.1/lib/action_view/rendering.rb:39:in `process' 
actionmailer-7.0.8.1/lib/action_mailer/base.rb:646:in `block in process' 
activesupport-7.0.8.1/lib/active_support/notifications.rb:206:in `block in instrument' 
activesupport-7.0.8.1/lib/active_support/notifications/instrumenter.rb:24:in `instrument' 
activesupport-7.0.8.1/lib/active_support/notifications.rb:206:in `instrument' 
actionmailer-7.0.8.1/lib/action_mailer/base.rb:645:in `process' 
actionmailer-7.0.8.1/lib/action_mailer/message_delivery.rb:128:in `block in processed_mailer' 
<internal:kernel>:90:in `tap'
actionmailer-7.0.8.1/lib/action_mailer/message_delivery.rb:127:in `processed_mailer' 
actionmailer-7.0.8.1/lib/action_mailer/message_delivery.rb:30:in `__getobj__' 
/usr/local/lib/ruby/3.2.0/delegate.rb:84:in `method_missing'
/var/www/discourse/lib/email/sender.rb:51:in `send' 
/var/www/discourse/app/jobs/regular/user_email.rb:79:in `send_user_email' 
/var/www/discourse/app/jobs/regular/user_email.rb:39:in `execute' 
/var/www/discourse/plugins/chat/lib/chat/user_email_extension.rb:6:in `execute' 
/var/www/discourse/app/jobs/base.rb:305:in `block (2 levels) in perform' 
rails_multisite-6.0.0/lib/rails_multisite/connection_management/null_instance.rb:49:in `with_connection'
rails_multisite-6.0.0/lib/rails_multisite/connection_management.rb:21:in `with_connection'
/var/www/discourse/app/jobs/base.rb:292:in `block in perform' 
/var/www/discourse/app/jobs/base.rb:288:in `each' 
/var/www/discourse/app/jobs/base.rb:288:in `perform' 
sidekiq-6.5.12/lib/sidekiq/processor.rb:202:in `execute_job' 
sidekiq-6.5.12/lib/sidekiq/processor.rb:170:in `block (2 levels) in process' 
sidekiq-6.5.12/lib/sidekiq/middleware/chain.rb:177:in `block in invoke' 
/var/www/discourse/lib/sidekiq/pausable.rb:132:in `call' 
sidekiq-6.5.12/lib/sidekiq/middleware/chain.rb:179:in `block in invoke' 
sidekiq-6.5.12/lib/sidekiq/middleware/chain.rb:182:in `invoke' 
sidekiq-6.5.12/lib/sidekiq/processor.rb:169:in `block in process' 
sidekiq-6.5.12/lib/sidekiq/processor.rb:136:in `block (6 levels) in dispatch' 
sidekiq-6.5.12/lib/sidekiq/job_retry.rb:113:in `local' 
sidekiq-6.5.12/lib/sidekiq/processor.rb:135:in `block (5 levels) in dispatch' 
sidekiq-6.5.12/lib/sidekiq.rb:44:in `block in <module:Sidekiq>' 
sidekiq-6.5.12/lib/sidekiq/processor.rb:131:in `block (4 levels) in dispatch' 
sidekiq-6.5.12/lib/sidekiq/processor.rb:263:in `stats' 
sidekiq-6.5.12/lib/sidekiq/processor.rb:126:in `block (3 levels) in dispatch' 
sidekiq-6.5.12/lib/sidekiq/job_logger.rb:13:in `call' 
sidekiq-6.5.12/lib/sidekiq/processor.rb:125:in `block (2 levels) in dispatch' 
sidekiq-6.5.12/lib/sidekiq/job_retry.rb:80:in `global' 
sidekiq-6.5.12/lib/sidekiq/processor.rb:124:in `block in dispatch' 
sidekiq-6.5.12/lib/sidekiq/job_logger.rb:39:in `prepare' 
sidekiq-6.5.12/lib/sidekiq/processor.rb:123:in `dispatch' 
sidekiq-6.5.12/lib/sidekiq/processor.rb:168:in `process' 
sidekiq-6.5.12/lib/sidekiq/processor.rb:78:in `process_one' 
sidekiq-6.5.12/lib/sidekiq/processor.rb:68:in `run' 
sidekiq-6.5.12/lib/sidekiq/component.rb:8:in `watchdog' 
sidekiq-6.5.12/lib/sidekiq/component.rb:17:in `block in safe_thread' 
activemodel-7.0.8.1/lib/active_model/attribute_methods.rb:450:in `method_missing' 
/var/www/discourse/lib/cooked_post_processor.rb:25:in `initialize' 
/var/www/discourse/app/jobs/regular/process_post.rb:27:in `new' 
/var/www/discourse/app/jobs/regular/process_post.rb:27:in `block in execute' 
/var/www/discourse/lib/distributed_mutex.rb:53:in `block in synchronize' 
/var/www/discourse/lib/distributed_mutex.rb:49:in `synchronize' 
/var/www/discourse/lib/distributed_mutex.rb:49:in `synchronize' 
/var/www/discourse/lib/distributed_mutex.rb:34:in `synchronize' 
/var/www/discourse/app/jobs/regular/process_post.rb:8:in `execute' 
/var/www/discourse/app/jobs/base.rb:305:in `block (2 levels) in perform' 
rails_multisite-6.0.0/lib/rails_multisite/connection_management/null_instance.rb:49:in `with_connection'
rails_multisite-6.0.0/lib/rails_multisite/connection_management.rb:21:in `with_connection'
/var/www/discourse/app/jobs/base.rb:292:in `block in perform' 
/var/www/discourse/app/jobs/base.rb:288:in `each' 
/var/www/discourse/app/jobs/base.rb:288:in `perform' 
sidekiq-6.5.12/lib/sidekiq/processor.rb:202:in `execute_job' 
sidekiq-6.5.12/lib/sidekiq/processor.rb:170:in `block (2 levels) in process' 
sidekiq-6.5.12/lib/sidekiq/middleware/chain.rb:177:in `block in invoke' 
/var/www/discourse/lib/sidekiq/pausable.rb:132:in `call' 
sidekiq-6.5.12/lib/sidekiq/middleware/chain.rb:179:in `block in invoke' 
sidekiq-6.5.12/lib/sidekiq/middleware/chain.rb:182:in `invoke' 
sidekiq-6.5.12/lib/sidekiq/processor.rb:169:in `block in process' 
sidekiq-6.5.12/lib/sidekiq/processor.rb:136:in `block (6 levels) in dispatch' 
sidekiq-6.5.12/lib/sidekiq/job_retry.rb:113:in `local' 
sidekiq-6.5.12/lib/sidekiq/processor.rb:135:in `block (5 levels) in dispatch' 
sidekiq-6.5.12/lib/sidekiq.rb:44:in `block in <module:Sidekiq>' 
sidekiq-6.5.12/lib/sidekiq/processor.rb:131:in `block (4 levels) in dispatch' 
sidekiq-6.5.12/lib/sidekiq/processor.rb:263:in `stats' 
sidekiq-6.5.12/lib/sidekiq/processor.rb:126:in `block (3 levels) in dispatch' 
sidekiq-6.5.12/lib/sidekiq/job_logger.rb:13:in `call' 
sidekiq-6.5.12/lib/sidekiq/processor.rb:125:in `block (2 levels) in dispatch' 
sidekiq-6.5.12/lib/sidekiq/job_retry.rb:80:in `global' 
sidekiq-6.5.12/lib/sidekiq/processor.rb:124:in `block in dispatch' 
sidekiq-6.5.12/lib/sidekiq/job_logger.rb:39:in `prepare' 
sidekiq-6.5.12/lib/sidekiq/processor.rb:123:in `dispatch' 
sidekiq-6.5.12/lib/sidekiq/processor.rb:168:in `process' 
sidekiq-6.5.12/lib/sidekiq/processor.rb:78:in `process_one' 
sidekiq-6.5.12/lib/sidekiq/processor.rb:68:in `run' 
sidekiq-6.5.12/lib/sidekiq/component.rb:8:in `watchdog' 
sidekiq-6.5.12/lib/sidekiq/component.rb:17:in `block in safe_thread' 
activemodel-7.0.8.1/lib/active_model/attribute_methods.rb:450:in `method_missing' 
/var/www/discourse/lib/pretty_text.rb:656:in `format_for_email' 
/var/www/discourse/app/helpers/user_notifications_helper.rb:59:in `email_excerpt' 
/var/www/discourse/app/mailers/user_notifications.rb:279:in `block in digest' 
/var/www/discourse/app/mailers/user_notifications.rb:278:in `map' 
/var/www/discourse/app/mailers/user_notifications.rb:278:in `digest' 
actionpack-7.0.8.1/lib/abstract_controller/base.rb:215:in `process_action' 
actionpack-7.0.8.1/lib/abstract_controller/callbacks.rb:234:in `block in process_action' 
activesupport-7.0.8.1/lib/active_support/callbacks.rb:99:in `run_callbacks' 
actionpack-7.0.8.1/lib/abstract_controller/callbacks.rb:233:in `process_action' 
actionpack-7.0.8.1/lib/abstract_controller/base.rb:151:in `process' 
actionmailer-7.0.8.1/lib/action_mailer/rescuable.rb:27:in `block in process' 
actionmailer-7.0.8.1/lib/action_mailer/rescuable.rb:19:in `handle_exceptions' 
actionmailer-7.0.8.1/lib/action_mailer/rescuable.rb:26:in `process' 
actionview-7.0.8.1/lib/action_view/rendering.rb:39:in `process' 
actionmailer-7.0.8.1/lib/action_mailer/base.rb:646:in `block in process' 
activesupport-7.0.8.1/lib/active_support/notifications.rb:206:in `block in instrument' 
activesupport-7.0.8.1/lib/active_support/notifications/instrumenter.rb:24:in `instrument' 
activesupport-7.0.8.1/lib/active_support/notifications.rb:206:in `instrument' 
actionmailer-7.0.8.1/lib/action_mailer/base.rb:645:in `process' 
actionmailer-7.0.8.1/lib/action_mailer/message_delivery.rb:128:in `block in processed_mailer' 
<internal:kernel>:90:in `tap'
actionmailer-7.0.8.1/lib/action_mailer/message_delivery.rb:127:in `processed_mailer' 
actionmailer-7.0.8.1/lib/action_mailer/message_delivery.rb:30:in `__getobj__' 
/usr/local/lib/ruby/3.2.0/delegate.rb:84:in `method_missing'
/var/www/discourse/lib/email/sender.rb:51:in `send' 
/var/www/discourse/app/jobs/regular/user_email.rb:79:in `send_user_email' 
/var/www/discourse/app/jobs/regular/user_email.rb:39:in `execute' 
/var/www/discourse/plugins/chat/lib/chat/user_email_extension.rb:6:in `execute' 
/var/www/discourse/app/jobs/base.rb:305:in `block (2 levels) in perform' 
rails_multisite-6.0.0/lib/rails_multisite/connection_management/null_instance.rb:49:in `with_connection'
rails_multisite-6.0.0/lib/rails_multisite/connection_management.rb:21:in `with_connection'
/var/www/discourse/app/jobs/base.rb:292:in `block in perform' 
/var/www/discourse/app/jobs/base.rb:288:in `each' 
/var/www/discourse/app/jobs/base.rb:288:in `perform' 
sidekiq-6.5.12/lib/sidekiq/processor.rb:202:in `execute_job' 
sidekiq-6.5.12/lib/sidekiq/processor.rb:170:in `block (2 levels) in process' 
sidekiq-6.5.12/lib/sidekiq/middleware/chain.rb:177:in `block in invoke' 
/var/www/discourse/lib/sidekiq/pausable.rb:132:in `call' 
sidekiq-6.5.12/lib/sidekiq/middleware/chain.rb:179:in `block in invoke' 
sidekiq-6.5.12/lib/sidekiq/middleware/chain.rb:182:in `invoke' 
sidekiq-6.5.12/lib/sidekiq/processor.rb:169:in `block in process' 
sidekiq-6.5.12/lib/sidekiq/processor.rb:136:in `block (6 levels) in dispatch' 
sidekiq-6.5.12/lib/sidekiq/job_retry.rb:113:in `local' 
sidekiq-6.5.12/lib/sidekiq/processor.rb:135:in `block (5 levels) in dispatch' 
sidekiq-6.5.12/lib/sidekiq.rb:44:in `block in <module:Sidekiq>' 
sidekiq-6.5.12/lib/sidekiq/processor.rb:131:in `block (4 levels) in dispatch' 
sidekiq-6.5.12/lib/sidekiq/processor.rb:263:in `stats' 
sidekiq-6.5.12/lib/sidekiq/processor.rb:126:in `block (3 levels) in dispatch' 
sidekiq-6.5.12/lib/sidekiq/job_logger.rb:13:in `call' 
sidekiq-6.5.12/lib/sidekiq/processor.rb:125:in `block (2 levels) in dispatch' 
sidekiq-6.5.12/lib/sidekiq/job_retry.rb:80:in `global' 
sidekiq-6.5.12/lib/sidekiq/processor.rb:124:in `block in dispatch' 
sidekiq-6.5.12/lib/sidekiq/job_logger.rb:39:in `prepare' 
sidekiq-6.5.12/lib/sidekiq/processor.rb:123:in `dispatch' 
sidekiq-6.5.12/lib/sidekiq/processor.rb:168:in `process' 
sidekiq-6.5.12/lib/sidekiq/processor.rb:78:in `process_one' 
sidekiq-6.5.12/lib/sidekiq/processor.rb:68:in `run' 
sidekiq-6.5.12/lib/sidekiq/component.rb:8:in `watchdog' 
sidekiq-6.5.12/lib/sidekiq/component.rb:17:in `block in safe_thread' 

J’ai remarqué que la méthode avait été récemment renommée ici : DEV: Rename with_secure_uploads? to should_secure_uploads? on Post by martin-brennan · Pull Request #26549 · discourse/discourse · GitHub.

Avez-vous mis à niveau depuis le panneau d’administration ?

Je ne suis pas un expert. Je me demande si ce changement nécessite de reconstruire Discourse depuis la ligne de commande afin que tout soit correctement chargé (?). :thinking:

Je l’ai fait depuis l’interface d’administration, normalement ça va. Je viens de redémarrer le droplet et c’est toujours présent, je vais essayer une reconstruction maintenant pour voir ce que ça donne.

On dirait que ça a réglé le problème. Bien vu ! Merci beaucoup