Lo instalé ayer. Todavía estoy probándolo, pero parece funcionar bien en general.
Hola
He intentado usar tu plugin… Algunas funciones funcionan correctamente. Por ejemplo, puedo agregar el logotipo de mi sitio web y se sube a mi almacenamiento de Azure Blob.
Pero
Cuando subo una imagen en una publicación, la imagen no se muestra. Obtengo esto:
Cita

¿Tienes alguna idea? ¿Tu plugin sigue funcionando?
Gracias por la respuesta
Acabo de probar la instalación de este plugin en la v2.7.0 beta1 y obtuve este error, que parece similar al problema de faraday mencionado anteriormente, pero con 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: Funciona correctamente con la versión: d6121249d3856a40382637ed12db50fc43c1fb1d (2.6.0)
También estoy recibiendo este error después de actualizar a la versión v2.7.0beta1. ¿Se puede actualizar este plugin para que funcione en la última versión?
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>'
Está categorizado en la categoría #plugin:plugin-roto, por lo que actualmente no funciona y parece que no hay nadie interesado en dejarlo en condiciones.
Esa es una historia triste. ![]()
Solo obtuve este error al intentar reconstruir hoy.
Básicamente, el gem azure-storage-common necesita actualizar su versión porque una de sus dependencias ahora entra en conflicto con Discourse.
Para quienes no pueden esperar (entiendo cómo se sienten, ya que si Azure Blob deja de funcionar de repente, tu sitio no se recuperará o perderá todo su contenido), clona mi fork en su lugar:
No superviso meta tanto como antes, así que podría no ver estos mensajes hasta dentro de meses. Para quienes lo necesiten, abre un issue en mi repositorio de GitHub y debería responder.
Esperemos que la PR se fusionen pronto y se pueda eliminar la etiqueta broken-plugin.
Cuando esto ocurre, generalmente se deben a errores durante el procesamiento posterior.
Revisa los registros de sidekiq para ver qué te está impidiendo subir archivos a Azure.
Tuve un error de Unicorn hoy al reconstruir mi aplicación:
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>'
Lo revisaré con más detalle mañana, pero la actualización anterior no parece solucionarlo.
El error parece indicar que estás utilizando un rango de direcciones IP privadas.
Quizás esté equivocado, pero eso sugiere que la constante PRIVATE_RANGES no está inicializada. Esa constante debería estar definida aquí:
No estoy seguro de si se trata de un conflicto de nombres entre la clase IPAddr definida en el utility.rb mencionado anteriormente y la definida en Discourse mismo, pero esa sería mi preocupación inicial. Simplemente no estoy seguro de cómo proceder para solucionarlo. Mi primer pensamiento sería enviar una PR que coloque la clase IPAddr de Discourse dentro de un módulo. ¿Alguna otra opinión?
Parece que la llamada a private? está en la línea 221, en lugar de la línea 218 como indica el mensaje de error.
¿Quizás se trata de la versión incorrecta?
La última versión en la que tiene sentido la línea 218 es 1.1.0, donde puedes ver que coincide exactamente con la posición del error:
OK, realmente estoy confundido aquí. Resulta que el plugin aún no es correcto.
Cada vez que intenta almacenar un archivo, devuelve:
No se puede almacenar el Blob: falta una dependencia para Faraday::Adapter::NetHttpPersistent: no se puede cargar el archivo -- net/http/persistent
Url: //chenhsongweb.blob.core.windows.net/support/original/2X/e/e5224c77df15646017fb5e4747576206c33904f6.jpeg
Así que, obviamente, en algún lugar me falta un require 'net/http/persistent', pero intenté agregarlo en todas partes y aún así aparece este error.
Por ejemplo, lo estoy agregando a plugin.rb y lib/azure_blob_store.rb… sigue apareciendo el error.
El error provino de una llamada a 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'
¿Alguna alma caritativa podría enseñarme cómo eliminar el error de dependencia faltante?
Ok. Podría ser necesario en la tarea rake. Lo agregaré y veré…
EDIT: No. No es eso.
Está fallando en 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'
Ahora estoy totalmente desconcertado. ¿Cómo me deshago de ese error de dependencia faltante?
EDIT 2:
Por alguna razón extraña, cuando hago clic en la pequeña flecha al final del rastreo de pila, me lleva a discourse/discourse-azure-blob-storage en lugar de a mi propio bifurcado. Estoy bastante seguro de que estoy usando mi propia bifurcación en app.config.
EDIT 3:
Intenté retroceder una versión a azure-storage-common 2.0.1, que no utiliza net-http-persistent, pero luego usa la versión 1.10 de nokogiri, lo cual entra en conflicto con algo que requiere la versión 1.11… ¡Arrrrhhhhhgggghhhh…!
¿Alguien sabe cómo resolver los conflictos de versión de nokogiri?
@pfaffman, ¿tienes alguna idea? ![]()
EDIT 4:
@maja, no estoy seguro de si aún estás siguiendo este plugin. Como autor original, quizás tengas una idea de lo que está ocurriendo.
He estado desconcertado por un error durante algún tiempo.
Recientemente, parece que Discourse comenzó a requerir la versión 1.11 de nokogiri, lo que obliga a actualizar a la versión 2.0.1 de azure-storage-common. Sin embargo, esa versión utiliza net-http-persistent para realizar llamadas HTTP (las versiones anteriores no lo hacían).
Cada vez que se realiza una llamada a Azure, falla con un error de dependencia faltante: missing dependency for Faraday::Adapter::NetHttpPersistent: cannot load such file -- net/http/persistent.
Lo extraño es que, incluso si coloco require 'net/http/persistent' cada vez antes de la llamada, sigue fallando con exactamente el mismo error. Aunque require devuelve true, lo que indica que el módulo se ha cargado.
Parece que comienza a ocurrir durante la segunda llamada a las funciones de Azure. Para ciertas subidas, la primera vez tiene éxito, pero a partir de la segunda vez empieza a dar error de dependencia faltante.
Casi parece que algo está sobrescribiendo la caché de require, borrando net/http/persistent.
EDIT 5:
Intenté clonar azure-storage-blob y modificarlo para eliminar net-http-persistent, pero no logro encontrar una forma de hacer que Discourse cargue desde un repositorio git alternativo… parece que siempre está cargando el gem oficial.
EDIT 6:
Actualización: Existe una solución que funciona razonablemente bien. Sin embargo, aún está en fase de pruebas adicionales, ya que parece entrar en conflicto con otras partes.
El error principal se debía al hecho de que Faraday tiene su propio sistema de gestión de dependencias, el cual entra en conflicto con Bundler.
La solución actual básicamente ignora el error de Faraday y carga la dependencia de forma estática. Sin embargo, alguna persona amable podría también señalar una forma más elegante de hacerlo…
Bien, este plugin está tan roto que no tiene sentido continuar con él.
Recomiendo a todos desinstalar este plugin y usar Flexify.IO en su lugar.