NoMethodError: undefined method `should_secure_uploads? - latest updates

AI-generated summary

After updating Discourse and plugins, KCAS encountered a NoMethodError: undefined method should_secure_uploads?'` error preventing email delivery, traced to a method rename in a recent Discourse PR linked by Arkshine. Arkshine suggested the issue might stem from upgrading via the admin UI without a full rebuild. KCAS confirmed they upgraded via the admin panel and tried a reboot, which didn’t resolve it. After rebuilding Discourse from the command line, the issue was resolved — KCAS confirmed the fix and thanked Arkshine for the insight. The problem appears tied to outdated code references after an update that wasn’t fully synchronized via the UI.

Hello,

Since updating, discourse and out plugins, we’re not able to send emails. Getting these errors in sidekiq.

Jobs::HandledExceptionWrapper: Wrapped NoMethodError: undefined method should_secure_uploads?’ for #<Post id: 3568, user_id: -2, topic_id: 3224, post_number: 1, raw: "A new campaign conducted by the T…`

We have AWS S3 to host images.

Full logs

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' 

I noticed the method had been recently renamed here: DEV: Rename with_secure_uploads? to should_secure_uploads? on Post by martin-brennan · Pull Request #26549 · discourse/discourse · GitHub.

Did you upgrade from the admin panel?

Not an expert here. I wonder if that change requires rebuilding Discourse from the command line so everything is correctly loaded (?). :thinking:

I did from the admin UI, normally thats ok. I’ve just done a reboot of the droplet and it’s still present, will try a rebuild now to see how it goes.

Looks like that’s fixed it. Good spot ! Many thanks