Je l’ai installé hier. Je m’amuse encore un peu avec, mais il semble globalement fonctionnel.
Bonjour,
J’essaie d’utiliser votre plugin… Certaines fonctionnalités fonctionnent. Par exemple, je peux ajouter le logo de mon site web et il est bien envoyé vers mon stockage Azure Blob.
Cependant,
Lorsque j’upload une image dans un post, l’image ne s’affiche pas. Voici ce que j’obtiens :
Citation

Avez-vous une idée ? Votre plugin fonctionne-t-il toujours ?
Merci pour votre réponse.
Je viens d’essayer d’installer ce plugin sur la version v2.7.0 beta1 et j’ai obtenu cette erreur, qui ressemble au problème Faraday mentionné ci-dessus, mais avec Nokogiri :
I, [2021-01-13T22:25:07.678431 #1] INFO -- : > cd /var/www/discourse && su discourse -c 'bundle exec rake db:migrate'
rake aborted!
Gem::ConflictError: Impossible d'activer azure-storage-common-2.0.1, car nokogiri-1.11.1-x86_64-linux entre en conflit avec nokogiri (~> 1.10.4)
/var/www/discourse/lib/plugin_gem.rb:22:in `load'
/var/www/discourse/lib/plugin/instance.rb:705:in `gem'
/var/www/discourse/plugins/discourse-azure-blob-storage/plugin.rb:12:in `activate!'
/var/www/discourse/lib/plugin/instance.rb:611:in `instance_eval'
/var/www/discourse/lib/plugin/instance.rb:611:in `activate!'
lib/discourse.rb:228:in `block in activate_plugins!'
lib/discourse.rb:225:in `each'
lib/discourse.rb:225:in `activate_plugins!'
/var/www/discourse/config/application.rb:305:in `block in <class:Application>'
/var/www/discourse/lib/plugin_initialization_guard.rb:5:in `plugin_initialization_guard'
/var/www/discourse/config/application.rb:304:in `<class:Application>'
/var/www/discourse/config/application.rb:71:in `<module:Discourse>'
/var/www/discourse/config/application.rb:70:in `<top (required)>'
/var/www/discourse/Rakefile:7:in `require'
/var/www/discourse/Rakefile:7:in `<top (required)>'
/var/www/discourse/vendor/bundle/ruby/2.7.0/gems/rake-13.0.3/exe/rake:27:in `<top (required)>'
/usr/local/bin/bundle:23:in `load'
/usr/local/bin/bundle:23:in `<main>'
EDIT : Fonctionne parfaitement avec la version : d6121249d3856a40382637ed12db50fc43c1fb1d (2.6.0)
Je reçois également cette erreur après la mise à niveau vers la version 2.7.0beta1. Ce plugin peut-il être mis à jour pour fonctionner sur la dernière version ?
I, [2021-01-19T19:52:36.859512 #1] INFO -- : > cd /var/www/discourse && su discourse -c 'bundle exec rake plugin:pull_compatible_all'
rake aborted!
Gem::ConflictError: Unable to activate azure-storage-common-2.0.1, because nokogiri-1.11.1-x86_64-linux conflicts with nokogiri (~> 1.10.4)
/var/www/discourse/lib/plugin_gem.rb:22:in `load'
/var/www/discourse/lib/plugin/instance.rb:705:in `gem'
/var/www/discourse/plugins/discourse-azure-blob-storage/plugin.rb:12:in `activate!'
/var/www/discourse/lib/plugin/instance.rb:611:in `instance_eval'
/var/www/discourse/lib/plugin/instance.rb:611:in `activate!'
lib/discourse.rb:228:in `block in activate_plugins!'
lib/discourse.rb:225:in `each'
lib/discourse.rb:225:in `activate_plugins!'
/var/www/discourse/config/application.rb:305:in `block in <class:Application>'
/var/www/discourse/lib/plugin_initialization_guard.rb:5:in `plugin_initialization_guard'
/var/www/discourse/config/application.rb:304:in `<class:Application>'
/var/www/discourse/config/application.rb:71:in `<module:Discourse>'
/var/www/discourse/config/application.rb:70:in `<top (required)>'
/var/www/discourse/Rakefile:7:in `require'
/var/www/discourse/Rakefile:7:in `<top (required)>'
/var/www/discourse/vendor/bundle/ruby/2.7.0/gems/rake-13.0.3/exe/rake:27:in `<top (required)>'
/usr/local/bin/bundle:23:in `load'
/usr/local/bin/bundle:23:in `<main>'
Il est classé dans la catégorie #plugin:broken-plugin, donc il ne fonctionne pas pour le moment, et il semble que personne ne soit intéressé par le remettre en état.
C’est une triste histoire. ![]()
J’ai eu cette erreur uniquement en essayant de reconstruire aujourd’hui.
Essentiellement, le gem azure-storage-common doit mettre à jour sa version car l’une de ses dépendances entre désormais en conflit avec Discourse.
Pour ceux qui ne peuvent pas attendre (je comprends votre inquiétude car si Azure Blob cesse soudainement de fonctionner, votre site ne redémarrera pas ou perdra tout son contenu), utilisez plutôt mon fork :
Je ne surveille plus autant le forum meta qu’avant, donc je risque de ne voir ces messages que des mois plus tard. Pour ceux qui en ont besoin, ouvrez une issue sur mon dépôt GitHub et je devrais répondre.
Espérons que la PR sera fusionnée bientôt et que le tag broken-plugin pourra être supprimé.
Lorsque cela se produit, il s’agit généralement d’erreurs lors du post-traitement.
Vérifiez vos journaux sidekiq pour voir ce qui vous empêche de télécharger sur Azure.
J’ai eu une erreur Unicorn aujourd’hui lors de la reconstruction de mon application :
E, [2021-03-29T01:34:52.651460 #756] ERROR -- : app error: uninitialized constant IPAddr::PRIVATE_RANGES (NameError)
E, [2021-03-29T01:34:52.651585 #756] ERROR -- : /var/www/discourse/plugins/discourse-azure-blob-storage/gems/2.7.2/gems/azure-storage-common-2.0.2/lib/azure/storage/common/core/utility.rb:218:in `private?'
E, [2021-03-29T01:34:52.651600 #756] ERROR -- : /var/www/discourse/lib/middleware/request_tracker.rb:220:in `is_private_ip?'
E, [2021-03-29T01:34:52.651612 #756] ERROR -- : /var/www/discourse/lib/middleware/request_tracker.rb:233:in `rate_limit'
E, [2021-03-29T01:34:52.651640 #756] ERROR -- : /var/www/discourse/lib/middleware/request_tracker.rb:166:in `call'
E, [2021-03-29T01:34:52.651650 #756] ERROR -- : /var/www/discourse/vendor/bundle/ruby/2.7.0/gems/railties-6.0.3.5/lib/rails/engine.rb:527:in `call'
E, [2021-03-29T01:34:52.651660 #756] ERROR -- : /var/www/discourse/vendor/bundle/ruby/2.7.0/gems/railties-6.0.3.5/lib/rails/railtie.rb:190:in `public_send'
E, [2021-03-29T01:34:52.651670 #756] ERROR -- : /var/www/discourse/vendor/bundle/ruby/2.7.0/gems/railties-6.0.3.5/lib/rails/railtie.rb:190:in `method_missing'
E, [2021-03-29T01:34:52.651681 #756] ERROR -- : /var/www/discourse/vendor/bundle/ruby/2.7.0/gems/rack-2.2.3/lib/rack/urlmap.rb:74:in `block in call'
E, [2021-03-29T01:34:52.651691 #756] ERROR -- : /var/www/discourse/vendor/bundle/ruby/2.7.0/gems/rack-2.2.3/lib/rack/urlmap.rb:58:in `each'
E, [2021-03-29T01:34:52.651753 #756] ERROR -- : /var/www/discourse/vendor/bundle/ruby/2.7.0/gems/rack-2.2.3/lib/rack/urlmap.rb:58:in `call'
E, [2021-03-29T01:34:52.651768 #756] ERROR -- : /var/www/discourse/vendor/bundle/ruby/2.7.0/gems/unicorn-6.0.0/lib/unicorn/http_server.rb:634:in `process_client'
E, [2021-03-29T01:34:52.651779 #756] ERROR -- : /var/www/discourse/vendor/bundle/ruby/2.7.0/gems/unicorn-6.0.0/lib/unicorn/http_server.rb:732:in `worker_loop'
E, [2021-03-29T01:34:52.651789 #756] ERROR -- : /var/www/discourse/vendor/bundle/ruby/2.7.0/gems/unicorn-6.0.0/lib/unicorn/http_server.rb:547:in `spawn_missing_workers'
E, [2021-03-29T01:34:52.651802 #756] ERROR -- : /var/www/discourse/vendor/bundle/ruby/2.7.0/gems/unicorn-6.0.0/lib/unicorn/http_server.rb:143:in `start'
E, [2021-03-29T01:34:52.651816 #756] ERROR -- : /var/www/discourse/vendor/bundle/ruby/2.7.0/gems/unicorn-6.0.0/bin/unicorn:128:in `<top (required)>'
E, [2021-03-29T01:34:52.651830 #756] ERROR -- : /var/www/discourse/vendor/bundle/ruby/2.7.0/bin/unicorn:23:in `load'
E, [2021-03-29T01:34:52.651843 #756] ERROR -- : /var/www/discourse/vendor/bundle/ruby/2.7.0/bin/unicorn:23:in `<main>'
Je regarderai cela de plus près demain, mais la mise à jour ci-dessus ne semble pas le résoudre.
L’erreur semble indiquer que vous utilisez une plage d’adresses IP privées ?
Je peux me tromper, mais cela suggère que la constante PRIVATE_RANGES n’est pas initialisée. Cette constante devrait être définie ici :
Je ne sais pas s’il s’agit d’un conflit de noms entre la classe IPAddr définie dans le utility.rb ci-dessus et celle définie dans Discourse lui-même, mais ce serait ma première préoccupation. Je ne suis simplement pas sûr de la manière de procéder pour corriger cela. Ma première idée serait de soumettre une PR qui place la classe IPAddr de Discourse dans un module. D’autres réflexions ?
Il semble que l’appel à private? se trouve à la ligne 221, et non à la ligne 218 comme indiqué dans le message d’erreur.
Il s’agit peut-être donc d’une version incorrecte ?
La dernière version où la ligne 218 a du sens est la 1.1.0, où vous pouvez voir qu’elle correspond exactement à la position de l’erreur :
OK, je suis vraiment perplexe ici. Il s’avère que le plugin n’est toujours pas correct.
Chaque fois qu’il tente de stocker un fichier, il renvoie :
Blob can not be stored: missing dependency for Faraday::Adapter::NetHttpPersistent: cannot load such file -- net/http/persistent
Url: //chenhsongweb.blob.core.windows.net/support/original/2X/e/e5224c77df15646017fb5e4747576206c33904f6.jpeg
Donc, il est évident que j’oublie quelque part un require 'net/http/persistent', mais j’ai essayé de l’ajouter à toutes les places possibles et l’erreur persiste.
Par exemple, je l’ajoute dans plugin.rb et lib/azure_blob_store.rb… et toujours cette erreur.
L’erreur provient d’un appel à cache_file :
/var/www/discourse/plugins/discourse-azure-blob-storage/lib/azure_blob_store.rb:27:in `rescue in store_file'
/var/www/discourse/plugins/discourse-azure-blob-storage/lib/azure_blob_store.rb:17:in `store_file'
/var/www/discourse/plugins/discourse-azure-blob-storage/lib/azure_blob_store.rb:9:in `store_upload'
Quel âme charitable pourrait m’apprendre comment me débarrasser de cette erreur de dépendance manquante ?
D’accord. Cela pourrait être nécessaire dans la tâche rake. Je vais l’ajouter et voir…
MODIF : Non. Ce n’est pas ça.
L’échec se produit à upload_creator…
/var/www/discourse/plugins/discourse-azure-blob-storage/lib/azure_blob_store.rb:25:in `rescue in store_file'
/var/www/discourse/plugins/discourse-azure-blob-storage/lib/azure_blob_store.rb:15:in `store_file'
/var/www/discourse/plugins/discourse-azure-blob-storage/lib/azure_blob_store.rb:7:in `store_upload'
/var/www/discourse/lib/upload_creator.rb:160:in `block (2 levels) in create_for'
/var/www/discourse/lib/upload_creator.rb:159:in `open'
/var/www/discourse/lib/upload_creator.rb:159:in `block in create_for'
Maintenant, je suis complètement perplexe. Comment puis-je me débarrasser de cette erreur de dépendance manquante ?
MODIF 2 :
Pour une raison étrange, lorsque je clique sur la petite flèche à la fin de la trace de la pile, cela m’emmène vers discourse/discourse-azure-blob-storage au lieu de mon propre fork. Je suis tout à fait certain d’utiliser mon propre fork dans app.config.
MODIF 3 :
J’ai essayé de revenir à la version 2.0.1 de azure-storage-common, qui n’utilise pas net-http-persistent, mais elle utilise alors la version 1.10 de nokogiri, ce qui entre en conflit avec quelque chose qui exige la version 1.11… Arrrrhhhhhgggghhhh…
Quelqu’un sait comment résoudre les conflits de version de nokogiri ?
@pfaffman, as-tu des idées ? ![]()
MODIF 4 :
@maja, je ne sais pas si tu suis encore ce plugin. En tant qu’auteur original, tu pourrais avoir une idée de ce qui se passe.
Je suis perplexe face à une erreur depuis un certain temps.
Récemment, il semble que Discourse exige la version 1.11 de nokogiri, ce qui impose la mise à jour vers la version 2.0.1 de azure-storage-common. Cependant, cette version utilise net-http-persistent pour effectuer des appels HTTP (les versions précédentes ne le faisaient pas).
À chaque fois qu’un appel Azure est effectué, il échoue avec une erreur de dépendance manquante : missing dependency for Faraday::Adapter::NetHttpPersistent: cannot load such file -- net/http/persistent.
Ce qui est étrange, c’est que même si j’ajoute require 'net/http/persistent' avant chaque appel, cela échoue toujours avec exactement la même erreur. Même si require renvoie true, indiquant que le module est chargé.
Il semble que cela commence à se produire lors du deuxième appel aux fonctions Azure. Pour certains téléversements, la première fois réussit, mais à partir de la deuxième fois, l’erreur de dépendance manquante apparaît.
On a presque l’impression que quelque chose écrase le cache de require, effaçant ainsi net/http/persistent.
MODIF 5 :
J’ai essayé de cloner azure-storage-blob et de le modifier pour supprimer net-http-persistent, mais je ne trouve pas de moyen de faire en sorte que Discourse charge depuis un dépôt Git alternatif… Il semble toujours charger le gem officiel.
MODIF 6 :
Mise à jour : Il existe une correction qui fonctionne raisonnablement bien. Cependant, elle est encore en cours de tests supplémentaires car elle semble entrer en conflit avec d’autres endroits.
L’erreur principale provenait du fait que Faraday possède son propre système de gestion des dépendances qui entre en conflit avec Bundler.
La solution actuelle consiste essentiellement à ignorer l’erreur de Faraday et à charger la dépendance de manière statique. Cependant, une âme charitable pourrait également indiquer une façon plus élégante de le faire…
Bon, ce plugin est tellement cassé qu’il n’a plus aucun intérêt à continuer.
Je recommande à tout le monde de désinstaller ce plugin et d’utiliser Flexify.IO à la place.