Rake uploads : erreur migrate_to_s3

2.4.0.beta9 discours dernière version +35

> rake uploads:migrate_to_s3
rake aborted!
NoMethodError: méthode `name` non définie pour :vapid_public_key:Symbol
/var/www/discourse/plugins/procourse-custom-homepage/lib/dl_custom_homepage/engine.rb:42:in `block in <top (required)>'
/var/www/discourse/lib/discourse_event.rb:14:in `block in trigger'
/var/www/discourse/lib/discourse_event.rb:13:in `trigger'
/var/www/discourse/lib/site_setting_extension.rb:355:in `add_override!'
/var/www/discourse/lib/site_setting_extension.rb:508:in `block in setup_methods'
/var/www/discourse/config/initializers/100-push-notifications.rb:18:in `<top (required)>'
/var/www/discourse/vendor/bundle/ruby/2.6.0/gems/activesupport-6.0.1/lib/active_support/dependencies.rb:319:in `load'
/var/www/discourse/vendor/bundle/ruby/2.6.0/gems/activesupport-6.0.1/lib/active_support/dependencies.rb:319:in `block in load'
/var/www/discourse/vendor/bundle/ruby/2.6.0/gems/activesupport-6.0.1/lib/active_support/dependencies.rb:291:in `load_dependency'
/var/www/discourse/vendor/bundle/ruby/2.6.0/gems/activesupport-6.0.1/lib/active_support/dependencies.rb:319:in `load'
/var/www/discourse/vendor/bundle/ruby/2.6.0/gems/railties-6.0.1/lib/rails/engine.rb:667:in `block in load_config_initializer'
/var/www/discourse/vendor/bundle/ruby/2.6.0/gems/activesupport-6.0.1/lib/active_support/notifications.rb:182:in `instrument'
/var/www/discourse/vendor/bundle/ruby/2.6.0/gems/railties-6.0.1/lib/rails/engine.rb:666:in `load_config_initializer'
/var/www/discourse/vendor/bundle/ruby/2.6.0/gems/railties-6.0.1/lib/rails/engine.rb:624:in `block (2 levels) in <class:Engine>'
/var/www/discourse/vendor/bundle/ruby/2.6.0/gems/railties-6.0.1/lib/rails/engine.rb:623:in `each'
/var/www/discourse/vendor/bundle/ruby/2.6.0/gems/railties-6.0.1/lib/rails/engine.rb:623:in `block in <class:Engine>'
/var/www/discourse/vendor/bundle/ruby/2.6.0/gems/railties-6.0.1/lib/rails/initializable.rb:32:in `instance_exec'
/var/www/discourse/vendor/bundle/ruby/2.6.0/gems/railties-6.0.1/lib/rails/initializable.rb:32:in `run'
/var/www/discourse/vendor/bundle/ruby/2.6.0/gems/railties-6.0.1/lib/rails/initializable.rb:61:in `block in run_initializers'
/var/www/discourse/vendor/bundle/ruby/2.6.0/gems/railties-6.0.1/lib/rails/initializable.rb:50:in `each'
/var/www/discourse/vendor/bundle/ruby/2.6.0/gems/railties-6.0.1/lib/rails/initializable.rb:50:in `tsort_each_child'
/var/www/discourse/vendor/bundle/ruby/2.6.0/gems/railties-6.0.1/lib/rails/initializable.rb:60:in `run_initializers'
/var/www/discourse/vendor/bundle/ruby/2.6.0/gems/railties-6.0.1/lib/rails/application.rb:363:in `initialize!'
/var/www/discourse/vendor/bundle/ruby/2.6.0/gems/railties-6.0.1/lib/rails/railtie.rb:190:in `public_send'
/var/www/discourse/vendor/bundle/ruby/2.6.0/gems/railties-6.0.1/lib/rails/railtie.rb:190:in `method_missing'
/var/www/discourse/config/environment.rb:7:in `<top (required)>'

Toujours le même problème lorsque je fais un git pull du code source et que je reconstruis l’application vers (f7a7263164)

rake uploads:migrate_to_s3
Vérification si la migration par défaut est déjà effectuée...
2 des 300 fichiers joints ne sont pas migrés vers S3. La migration S3 a échoué pour la base de données 'default'.
Recherche des fichiers joints manquants sur : default

Aucun fichier joint de publication n'est manquant.

Aucune publication ne nécessite une recuisson.
Migration des fichiers joints vers S3 pour 'default'...
Téléchargement des fichiers vers S3...
 - Répertoriation des fichiers locaux => 284 fichiers
 - Répertoriation des fichiers S3 => 285 fichiers
 - Synchronisation des fichiers vers S3
............................................................................................................................................................................................................................................................................................
Mise à jour des URL dans la base de données...
Suppression des anciennes images optimisées...
Marquage de toutes les publications contenant des lightboxes pour une recuisson...
3 publications ont été marquées pour une recuisson
rake aborted!
2 des 300 fichiers joints ne sont pas migrés vers S3. La migration S3 a échoué pour la base de données 'default'.
/var/www/discourse/lib/tasks/uploads.rake:238:in `migration_successful?'
/var/www/discourse/lib/tasks/uploads.rake:551:in `migrate_to_s3'
/var/www/discourse/lib/tasks/uploads.rake:216:in `block in migrate_to_s3_all_sites'
/var/www/discourse/vendor/bundle/ruby/2.6.0/gems/rails_multisite-2.0.7/lib/rails_multisite/connection_management.rb:63:in `with_connection'
/var/www/discourse/vendor/bundle/ruby/2.6.0/gems/rails_multisite-2.0.7/lib/rails_multisite/connection_management.rb:73:in `each_connection'
/var/www/discourse/lib/tasks/uploads.rake:214:in `migrate_to_s3_all_sites'
/var/www/discourse/lib/tasks/uploads.rake:210:in `block in <top (required)>'
/usr/local/bin/bundle:23:in `load'
/usr/local/bin/bundle:23:in `<main>'
Tasks: TOP => uploads:migrate_to_s3
(Voir la trace complète en exécutant la tâche avec --trace)
  1. rake posts:rebake fonctionne
    même en essayant DISCOURSE_S3_BUCKET="antivteassets/uploads"

DISCOURSE_S3_BUCKET="antivteassets"
2.

rake uploads:migrate_to_s3 --trace
** Invoke uploads:migrate_to_s3 (first_time)
** Invoke environment (first_time)
** Execute environment
** Execute uploads:migrate_to_s3
Vérification si la migration par défaut est déjà effectuée...
2 des 301 téléchargements n'ont pas été migrés vers S3. La migration S3 a échoué pour la base de données 'default'.
** Invoke posts:missing_uploads (first_time)
** Invoke environment 
** Execute posts:missing_uploads
Recherche des téléchargements manquants sur : default

Aucun téléchargement de publication n'est manquant.

Aucune publication ne nécessite de rebaking
Migration des téléchargements vers S3 pour 'default'...
Téléchargement des fichiers vers S3...
 - Répertoriation des fichiers locaux => 284 fichiers
 - Répertoriation des fichiers S3 => 286 fichiers
 - Synchronisation des fichiers vers S3
............................................................................................................................................................................................................................................................................................
Mise à jour des URL dans la base de données...
Suppression des anciennes images optimisées...
Marquage de toutes les publications contenant des lightboxes pour un rebaking...
69 publications ont été marquées pour un rebaking
rake aborted!
2 des 301 téléchargements n'ont pas été migrés vers S3. La migration S3 a échoué pour la base de données 'default'.
/var/www/discourse/lib/tasks/uploads.rake:238:in `migration_successful?'
/var/www/discourse/lib/tasks/uploads.rake:551:in `migrate_to_s3'
/var/www/discourse/lib/tasks/uploads.rake:216:in `block in migrate_to_s3_all_sites'
/var/www/discourse/vendor/bundle/ruby/2.6.0/gems/rails_multisite-2.0.7/lib/rails_multisite/connection_management.rb:63:in `with_connection'
/var/www/discourse/vendor/bundle/ruby/2.6.0/gems/rails_multisite-2.0.7/lib/rails_multisite/connection_management.rb:73:in `each_connection'
/var/www/discourse/lib/tasks/uploads.rake:214:in `migrate_to_s3_all_sites'
/var/www/discourse/lib/tasks/uploads.rake:210:in `block in <top (required)>'
/var/www/discourse/vendor/bundle/ruby/2.6.0/gems/rake-13.0.1/lib/rake/task.rb:281:in `block in execute'
/var/www/discourse/vendor/bundle/ruby/2.6.0/gems/rake-13.0.1/lib/rake/task.rb:281:in `each'
/var/www/discourse/vendor/bundle/ruby/2.6.0/gems/rake-13.0.1/lib/rake/task.rb:281:in `execute'
/var/www/discourse/vendor/bundle/ruby/2.6.0/gems/rake-13.0.1/lib/rake/task.rb:219:in `block in invoke_with_call_chain'
/usr/local/lib/ruby/2.6.0/monitor.rb:235:in `mon_synchronize'
/var/www/discourse/vendor/bundle/ruby/2.6.0/gems/rake-13.0.1/lib/rake/task.rb:199:in `invoke_with_call_chain'
/var/www/discourse/vendor/bundle/ruby/2.6.0/gems/rake-13.0.1/lib/rake/task.rb:188:in `invoke'
/var/www/discourse/vendor/bundle/ruby/2.6.0/gems/rake-13.0.1/lib/rake/application.rb:160:in `invoke_task'
/var/www/discourse/vendor/bundle/ruby/2.6.0/gems/rake-13.0.1/lib/rake/application.rb:116:in `block (2 levels) in top_level'
/var/www/discourse/vendor/bundle/ruby/2.6.0/gems/rake-13.0.1/lib/rake/application.rb:116:in `each'
/var/www/discourse/vendor/bundle/ruby/2.6.0/gems/rake-13.0.1/lib/rake/application.rb:116:in `block in top_level'
/var/www/discourse/vendor/bundle/ruby/2.6.0/gems/rake-13.0.1/lib/rake/application.rb:125:in `run_with_threads'
/var/www/discourse/vendor/bundle/ruby/2.6.0/gems/rake-13.0.1/lib/rake/application.rb:110:in `top_level'
/var/www/discourse/vendor/bundle/ruby/2.6.0/gems/rake-13.0.1/lib/rake/application.rb:83:in `block in run'
/var/www/discourse/vendor/bundle/ruby/2.6.0/gems/rake-13.0.1/lib/rake/application.rb:186:in `standard_exception_handling'
/var/www/discourse/vendor/bundle/ruby/2.6.0/gems/rake-13.0.1/lib/rake/application.rb:80:in `run'
bin/rake:13:in `<top (required)>'
/usr/local/lib/ruby/gems/2.6.0/gems/bundler-2.1.1/lib/bundler/cli/exec.rb:63:in `load'
/usr/local/lib/ruby/gems/2.6.0/gems/bundler-2.1.1/lib/bundler/cli/exec.rb:63:in `kernel_load'
/usr/local/lib/ruby/gems/2.6.0/gems/bundler-2.1.1/lib/bundler/cli/exec.rb:28:in `run'
/usr/local/lib/ruby/gems/2.6.0/gems/bundler-2.1.1/lib/bundler/cli.rb:476:in `exec'
/usr/local/lib/ruby/gems/2.6.0/gems/bundler-2.1.1/lib/bundler/vendor/thor/lib/thor/command.rb:27:in `run'
/usr/local/lib/ruby/gems/2.6.0/gems/bundler-2.1.1/lib/bundler/vendor/thor/lib/thor/invocation.rb:127:in `invoke_command'
/usr/local/lib/ruby/gems/2.6.0/gems/bundler-2.1.1/lib/bundler/vendor/thor/lib/thor.rb:399:in `dispatch'
/usr/local/lib/ruby/gems/2.6.0/gems/bundler-2.1.1/lib/bundler/cli.rb:30:in `dispatch'
/usr/local/lib/ruby/gems/2.6.0/gems/bundler-2.1.1/lib/bundler/vendor/thor/lib/thor/base.rb:476:in `start'
/usr/local/lib/ruby/gems/2.6.0/gems/bundler-2.1.1/lib/bundler/cli.rb:24:in `start'
/usr/local/lib/ruby/gems/2.6.0/gems/bundler-2.1.1/exe/bundle:46:in `block in <top (required)>'
/usr/local/lib/ruby/gems/2.6.0/gems/bundler-2.1.1/lib/bundler/friendly_errors.rb:123:in `with_friendly_errors'
/usr/local/lib/ruby/gems/2.6.0/gems/bundler-2.1.1/exe/bundle:34:in `<top (required)>'
/usr/local/bin/bundle:23:in `load'
/usr/local/bin/bundle:23:in `<main>'
Tasks: TOP => uploads:migrate_to_s3

Il semble que ce plugin soit à l’origine de l’erreur.

en fait

root@docker-s-1vcpu-2gb-sgp1-01-bbs:/var/www/discourse# ls /var/www/discourse/plugins/procourse-custom-homepage
ls: impossible d'accéder à '/var/www/discourse/plugins/procourse-custom-homepage' : Aucun fichier ou dossier de ce type

tous les fichiers d’image ont déjà été transférés vers S3

Supprimez ce plugin et reconstruisez

Je n’ai pas cette option, que ce soit dans le répertoire ls ou sur la page d’administration de personnalisation des paramètres du site.

Étrange. Avec une reconstruction de l’ancienne application et une nouvelle exécution de la migration :

Voici : https://bbs.antivte.com/t/topic/194

** Invoke uploads:migrate_to_s3 (first_time)
** Invoke environment (first_time)
** Execute environment
** Execute uploads:migrate_to_s3
Vérification si la migration par défaut a déjà été effectuée...
2 des 301 uploads n'ont pas été migrés vers S3. La migration S3 a échoué pour la base de données 'default'.
** Invoke posts:missing_uploads (first_time)
** Invoke environment 
** Execute posts:missing_uploads
Recherche des uploads manquants sur : default

0 upload de publication est manquant.

54 publications nécessitent encore une régénération et seront régénérées lors du travail régulier
Migration des uploads vers S3 pour 'default'...
Téléchargement des fichiers vers S3...
 - Répertoriation des fichiers locaux => 286 fichiers
 - Répertoriation des fichiers S3 => 294 fichiers
 - Synchronisation des fichiers vers S3
..............................................................................................................................................................................................................................................................................................
Mise à jour des URL dans la base de données...
Suppression des anciennes images optimisées...
Marquage de toutes les publications contenant des lightboxes pour régénération...
69 publications ont été marquées pour une régénération
rake aborted!
2 des 301 uploads n'ont pas été migrés vers S3. La migration S3 a échoué pour la base de données 'default'.
/var/www/discourse/lib/tasks/uploads.rake:238:in `migration_successful?'
/var/www/discourse/lib/tasks/uploads.rake:551:in `migrate_to_s3'
/var/www/discourse/lib/tasks/uploads.rake:216:in `block in migrate_to_s3_all_sites'
/var/www/discourse/vendor/bundle/ruby/2.6.0/gems/rails_multisite-2.0.7/lib/rails_multisite/connection_management.rb:63:in `with_connection'
/var/www/discourse/vendor/bundle/ruby/2.6.0/gems/rails_multisite-2.0.7/lib/rails_multisite/connection_management.rb:73:in `each_connection'
/var/www/discourse/lib/tasks/uploads.rake:214:in `migrate_to_s3_all_sites'
/var/www/discourse/lib/tasks/uploads.rake:210:in `block in <top (required)>'
/var/www/discourse/vendor/bundle/ruby/2.6.0/gems/rake-13.0.1/lib/rake/task.rb:281:in `block in execute'
/var/www/discourse/vendor/bundle/ruby/2.6.0/gems/rake-13.0.1/lib/rake/task.rb:281:in `each'
/var/www/discourse/vendor/bundle/ruby/2.6.0/gems/rake-13.0.1/lib/rake/task.rb:281:in `execute'
/var/www/discourse/vendor/bundle/ruby/2.6.0/gems/rake-13.0.1/lib/rake/task.rb:219:in `block in invoke_with_call_chain'
/usr/local/lib/ruby/2.6.0/monitor.rb:235:in `mon_synchronize'
/var/www/discourse/vendor/bundle/ruby/2.6.0/gems/rake-13.0.1/lib/rake/task.rb:199:in `invoke_with_call_chain'
/var/www/discourse/vendor/bundle/ruby/2.6.0/gems/rake-13.0.1/lib/rake/task.rb:188:in `invoke'
/var/www/discourse/vendor/bundle/ruby/2.6.0/gems/rake-13.0.1/lib/rake/application.rb:160:in `invoke_task'
/var/www/discourse/vendor/bundle/ruby/2.6.0/gems/rake-13.0.1/lib/rake/application.rb:116:in `block (2 levels) in top_level'
/var/www/discourse/vendor/bundle/ruby/2.6.0/gems/rake-13.0.1/lib/rake/application.rb:116:in `each'
/var/www/discourse/vendor/bundle/ruby/2.6.0/gems/rake-13.0.1/lib/rake/application.rb:116:in `block in top_level'
/var/www/discourse/vendor/bundle/ruby/2.6.0/gems/rake-13.0.1/lib/rake/application.rb:125:in `run_with_threads'
/var/www/discourse/vendor/bundle/ruby/2.6.0/gems/rake-13.0.1/lib/rake/application.rb:110:in `top_level'
/var/www/discourse/vendor/bundle/ruby/2.6.0/gems/rake-13.0.1/lib/rake/application.rb:83:in `block in run'
/var/www/discourse/vendor/bundle/ruby/2.6.0/gems/rake-13.0.1/lib/rake/application.rb:186:in `standard_exception_handling'
/var/www/discourse/vendor/bundle/ruby/2.6.0/gems/rake-13.0.1/lib/rake/application.rb:80:in `run'
bin/rake:13:in `<top (required)>'
/usr/local/lib/ruby/gems/2.6.0/gems/bundler-2.1.1/lib/bundler/cli/exec.rb:63:in `load'
/usr/local/lib/ruby/gems/2.6.0/gems/bundler-2.1.1/lib/bundler/cli/exec.rb:63:in `kernel_load'
/usr/local/lib/ruby/gems/2.6.0/gems/bundler-2.1.1/lib/bundler/cli/exec.rb:28:in `run'
/usr/local/lib/ruby/gems/2.6.0/gems/bundler-2.1.1/lib/bundler/cli.rb:476:in `exec'
/usr/local/lib/ruby/gems/2.6.0/gems/bundler-2.1.1/lib/bundler/vendor/thor/lib/thor/command.rb:27:in `run'
/usr/local/lib/ruby/gems/2.6.0/gems/bundler-2.1.1/lib/bundler/vendor/thor/lib/thor/invocation.rb:127:in `invoke_command'
/usr/local/lib/ruby/gems/2.6.0/gems/bundler-2.1.1/lib/bundler/vendor/thor/lib/thor.rb:399:in `dispatch'
/usr/local/lib/ruby/gems/2.6.0/gems/bundler-2.1.1/lib/bundler/cli.rb:30:in `dispatch'
/usr/local/lib/ruby/gems/2.6.0/gems/bundler-2.1.1/lib/bundler/vendor/thor/lib/thor/base.rb:476:in `start'
/usr/local/lib/ruby/gems/2.6.0/gems/bundler-2.1.1/lib/bundler/cli.rb:24:in `start'
/usr/local/lib/ruby/gems/2.6.0/gems/bundler-2.1.1/exe/bundle:46:in `block in <top (required)>'
/usr/local/lib/ruby/gems/2.6.0/gems/bundler-2.1.1/lib/bundler/friendly_errors.rb:123:in `with_friendly_errors'
/usr/local/lib/ruby/gems/2.6.0/gems/bundler-2.1.1/exe/bundle:34:in `<top (required)>'
/usr/local/bin/bundle:23:in `load'
/usr/local/bin/bundle:23:in `<main>'
Tasks: TOP => uploads:migrate_to_s3

J’ai effectué une nouvelle installation de Discourse pour tester, avec les mêmes paramètres S3. La commande de régénération et la migration se sont exécutées avec succès. Cependant, une fois le téléchargement des images terminé, l’URL n’est toujours pas au format URL du CDN + nom du fichier image.
https://cp.antivte.com/t/topic/14

Il semble que j’utilise Fortify chez Cloudflare pour
Neuf médecins sur dix sont d'accord pour dire que les en-têtes [Content-Security-Policy](https://developer.mozilla.org/en-US/docs/Web/HTTP/CSP), [HSTS](https://developer.mozilla.org/en-US/docs/Web/HTTP/Headers/Strict-Transport-Security) et [CORS](https://developer.mozilla.org/en-US/docs/Web/HTTP/CORS) font partie d'un petit-déjeuner équilibré.
et j’ajoute simplement S3 à l’en-tête comme ceci, et c’est magique :

Access-Control-Allow-Origin: https://bbs.antivte.com
Content-Security-Policy: default-src 'self' *.amazonaws.com google-analytics.com