Ich habe es gestern erst installiert. Ich spiele noch ein bisschen damit herum, aber es scheint im Allgemeinen funktionsfähig zu sein.
Hallo,
ich versuche, Ihr Plugin zu verwenden… Einige Funktionen funktionieren. Zum Beispiel kann ich mein Website-Logo hinzufügen, und es wird in meinem Azure Blob Storage gespeichert.
Aber
Wenn ich ein Bild in einem Beitrag hochlade, wird das Bild nicht angezeigt. Ich habe Folgendes:
Zitat

Haben Sie eine Idee? Funktioniert Ihr Plugin überhaupt noch?
Vielen Dank für die Antwort
Ich habe gerade versucht, dieses Plugin auf v2.7.0 beta1 zu installieren und erhielt diesen Fehler, der dem oben genannten Faraday-Problem ähnelt, jedoch mit 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: 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>'
EDIT: Funktioniert einwandfrei mit Version: d6121249d3856a40382637ed12db50fc43c1fb1d (2.6.0)
Ich erhalte nach dem Upgrade auf v2.7.0beta1 ebenfalls diesen Fehler. Kann dieses Plugin aktualisiert werden, um auf der neuesten Version zu laufen?
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>'
Es ist in der Kategorie #plugin:broken-plugin kategorisiert, funktioniert also derzeit nicht, und es scheint niemanden zu geben, der daran interessiert ist, es wieder funktionsfähig zu machen.
Das ist eine traurige Geschichte. ![]()
Diesen Fehler habe ich nur erhalten, als ich heute neu aufgebaut habe.
Im Grunde muss das azure-storage-common-Gem eine Version hochstufen, da eine seiner Abhängigkeiten nun mit Discourse kollidiert.
Für diejenigen, die nicht warten können (ich verstehe Ihr Gefühl, denn wenn Azure Blob plötzlich nicht mehr funktioniert, kommt Ihre Seite nicht mehr hoch oder verliert ihren gesamten Inhalt), ziehen Sie stattdessen aus meinem Fork:
Ich überwache Meta nicht mehr so häufig wie früher, sodass ich diese Nachrichten möglicherweise erst Monate später sehe. Für diejenigen, die es dringend benötigen, eröffnen Sie ein Issue in meinem GitHub-Repository, und ich sollte antworten.
Hoffentlich wird der PR bald gemerged und das Tag broken-plugin kann entfernt werden.
Wenn dies auftritt, handelt es sich meist um Fehler während der Nachbearbeitung.
Überprüfen Sie Ihre sidekiq-Protokolle, um herauszufinden, was das Hochladen nach Azure blockiert.
Heute ist beim erneuten Erstellen meiner App ein Unicorn-Fehler aufgetreten:
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>'
Ich werde mich morgen weiter damit beschäftigen, aber das obige Update scheint das Problem nicht zu beheben.
Der Fehler scheint darauf hinzuweisen, dass Sie einen privaten IP-Bereich verwenden?
Vielleicht liege ich falsch, aber das deutet darauf hin, dass die Konstante PRIVATE_RANGES nicht initialisiert ist. Diese Konstante sollte hier definiert sein:
Ich bin mir nicht sicher, ob es einen Namenskonflikt zwischen der in der oben genannten utility.rb definierten IPAddr-Klasse und der in Discourse selbst definierten gibt, aber das wäre meine erste Sorge. Ich bin mir nur nicht sicher, wie ich vorgehen sollte, um das zu beheben. Mein erster Gedanke wäre, einen PR einzureichen, der die IPAddr-Klasse in Discourse in ein Modul stellt. Weitere Gedanken dazu?
Es scheint, als ob der Aufruf von private? auf Zeile 221 steht und nicht auf Zeile 218, wie in der Fehlermeldung angegeben.
Vielleicht ist es also die falsche Version?
Die letzte Version, in der Zeile 218 Sinn ergibt, ist 1.1.0. Dort sehen Sie die genaue Fehlerposition:
OK, ich bin wirklich ratlos. Es stellt sich heraus, dass das Plugin immer noch nicht korrekt ist.
Immer wenn versucht wird, eine Datei zu speichern, erscheint folgende Meldung:
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
Offensichtlich fehlt mir irgendwo ein require 'net/http/persistent', aber ich habe es an jeder Stelle versucht, und der Fehler bleibt bestehen.
Zum Beispiel habe ich es in plugin.rb und lib/azure_blob_store.rb hinzugefügt… immer noch dieser Fehler.
Der Fehler stammt von einem Aufruf von 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'
Kann mir jemand Gütiger erklären, wie ich den Fehler „fehlende Abhängigkeit
Ok. Das könnte in der Rake-Aufgabe benötigt werden. Ich füge es hinzu und schaue mal…
EDIT: Nein, das war’s nicht.
Es schlägt bei upload_creator fehl…
/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'
Jetzt bin ich völlig ratlos. Wie bekomme ich diesen Fehler wegen einer fehlenden Abhängigkeit weg?
EDIT 2:
Aus irgendeinem seltsamen Grund bringe ich mich, wenn ich auf den kleinen Pfeil am Ende des Stack-Traces klicke, zu discourse/discourse-azure-blob-storage statt zu meinem eigenen Fork. Ich bin mir ziemlich sicher, dass ich meinen eigenen Fork in app.config verwende.
EDIT 3:
Ich habe versucht, eine Version zurück zu azure-storage-common 2.0.1 zu wechseln, das net-http-persistent nicht verwendet, aber dann wird nokogiri in Version 1.10 verwendet, was mit etwas kollidiert, das Version 1.11 erfordert… Arrrrhhhhhgggghhhh…
Weiß jemand, wie man Nokogiri-Versionskonflikte löst?
@pfaffman hast du irgendwelche Ideen? ![]()
EDIT 4:
@maja Ich bin mir nicht sicher, ob du immer noch diesen Plugin verfolgst. Als ursprünglicher Autor hast du vielleicht eine Idee, was los ist.
Ich bin seit einiger Zeit über einen Fehler ratlos.
In letzter Zeit scheint Discourse zu verlangen, dass nokogiri Version 1.11 verwendet wird, was ein Update auf azure-storage-common Version 2.0.1 erfordert. Diese Version verwendet jedoch net-http-persistent, um HTTP-Aufrufe durchzuführen (frühere Versionen taten dies nicht).
Jedes Mal, wenn ein Azure-Aufruf durchgeführt wird, schlägt er mit einer fehlenden Abhängigkeit fehl: missing dependency for Faraday::Adapter::NetHttpPersistent: cannot load such file -- net/http/persistent.
Das Seltsame ist, dass es auch dann fehlschlägt, wenn ich require 'net/http/persistent' jedes Mal vor dem Aufruf hinzufüge, immer mit dem exakt gleichen Fehler. Obwohl require true zurückgibt, was bedeutet, dass das Modul geladen wurde.
Es scheint, als würde das beim zweiten Aufruf von Azure-Funktionen beginnen. Bei bestimmten Uploads wird das erste Mal erfolgreich sein, und ab dem zweiten Mal beginnt es, eine fehlende Abhängigkeit anzuzeigen.
Es fühlt sich fast so an, als würde etwas den require-Cache überschreiben und net/http/persistent löschen.
EDIT 5:
Ich habe versucht, azure-storage-blob zu klonen und zu modifizieren, um net-http-persistent zu entfernen, aber ich kann keinen Weg finden, Discourse dazu zu bringen, von einem alternativen Git-Repo zu laden… es scheint immer das offizielle Gem zu laden.
EDIT 6:
Update: Es gibt eine Lösung, die ziemlich gut funktioniert. Allerdings wird sie noch weiter getestet, da sie anscheinend an anderen Stellen Konflikte verursacht.
Der Hauptfehler resultierte daraus, dass Faraday sein eigenes Abhängigkeitsverwaltungssystem hat, das mit Bundler kollidiert.
Die aktuelle Lösung ignoriert im Grunde nur den Fehler von Faraday und lädt die Abhängigkeit statisch. Allerdings könnte jemand anderes auch einen eleganteren Weg aufzeigen…
Alles klar, dieses Plugin ist so fehlerhaft, dass es keinen Sinn mehr macht, damit weiterzumachen.
Ich empfehle allen, dieses Plugin zu deinstallieren und stattdessen Flexify.IO zu verwenden.