# Azure Blob Storage Plugin

**URL:** https://meta.discourse.org/t/azure-blob-storage-plugin/79392
**Category:** Plugin
**Tags:** broken
**Created:** [30. Januar 2018 um 21:28 UTC](https://meta.discourse.org/t/azure-blob-storage-plugin/79392 "2018-01-30T21:28:29Z")
**Posts on this page:** 20
**Page:** 4

<div class="post-metadata">

### Author: ![sam](https://sea3.discourse-cdn.com/meta/user_avatar/meta.discourse.org/sam/32/102149_2.png) [@sam](https://meta.discourse.org/u/sam)
#### Post date: [7. März 2019 um 21:00 UTC](https://meta.discourse.org/t/azure-blob-storage-plugin/79392/66 "2019-03-07T21:00:15Z")

</div>

Awesome, @vinothkannans can you review and merge ?

---

<div class="post-metadata">

### Author: ![AJRT](https://sea3.discourse-cdn.com/meta/user_avatar/meta.discourse.org/ajrt/32/142105_2.png) [@AJRT](https://meta.discourse.org/u/AJRT)
#### Post date: [23. Juli 2019 um 15:33 UTC](https://meta.discourse.org/t/azure-blob-storage-plugin/79392/68 "2019-07-23T15:33:44Z")

</div>

Hallo @maja,

ich habe ein Problem, das möglicherweise mit diesem Plugin zusammenhängt.  
Hier sind weitere Informationen dazu:

> [@\[User Archive\] - impossible to download - error: NoMethodError FileStore::AzureStore](https://meta.discourse.org/t/user-archive-impossible-to-download-error-nomethoderror-filestore-azurestore/123687):
>
> Hello, I am using v2.4.0.beta2 +66 and download data exported \*.zip is impossible (OS Win10x64, Chrome/75.0.3770.100). Steps to reproduce: Open /u/[username]/activity and click on “Download all”. Wait for private message [User Archive] Data export complete and open it. Click on URL (ended with \*.zip). The file does not download. In /logs, there is an error message: Message NoMethodError (undefined method `url\_for' for #\<FileStore::AzureStore:0x00007fd11ea56468\>) /var/www/disco…

Könntest du bitte prüfen, ob das Problem von diesem Plugin verursacht wird, und versuchen, es zu beheben?

Vielleicht hängt auch folgendes damit zusammen:

> [@\[Not implemented\] Error after upload any new image with azure blob storage](https://meta.discourse.org/t/not-implemented-error-after-upload-any-new-image-with-azure-blob-storage/123743):
>
> Hello, I am using v2.4.0.beta2 +66, with [discourse-azure-blob-storage](https://github.com/discourse/discourse-azure-blob-storage) plugin and since a few weeks I have had some problems with uploaded images (e.g. I cannot zoom in) and in logs, there is an error message. Steps to reproduce: Create a new topic/post where is upload any image. Try to click on the image in topic/post. The image is uploaded and visible in post, but there is no possibility to zoom in/see in a gallery. I am expecting behaviour as is on a picture above, on the right…

---

<div class="post-metadata">

### Author: ![schungx](https://sea3.discourse-cdn.com/meta/user_avatar/meta.discourse.org/schungx/32/70989_2.png) [@schungx](https://meta.discourse.org/u/schungx)
#### Post date: [29. August 2019 um 06:29 UTC](https://meta.discourse.org/t/azure-blob-storage-plugin/79392/69 "2019-08-29T06:29:27Z")

</div>

Alles, was mit `short-url` hochgeladen wird, erhält automatisch einen 500er-Fehler.

Die Logs zeigen folgendes:

```plaintext
NoMethodError (undefined method `url_for' for #<FileStore::AzureStore:0x00007f4553fc2ae8>)
/var/www/discourse/app/controllers/uploads_controller.rb:107:in `show_short'

```

```plaintext
/var/www/discourse/app/controllers/uploads_controller.rb:107:in `show_short'
/var/www/discourse/vendor/bundle/ruby/2.6.0/gems/actionpack-5.2.3/lib/action_controller/metal/basic_implicit_render.rb:6:in `send_action'
/var/www/discourse/vendor/bundle/ruby/2.6.0/gems/actionpack-5.2.3/lib/abstract_controller/base.rb:194:in `process_action'
/var/www/discourse/vendor/bundle/ruby/2.6.0/gems/actionpack-5.2.3/lib/action_controller/metal/rendering.rb:30:in `process_action'
/var/www/discourse/vendor/bundle/ruby/2.6.0/gems/actionpack-5.2.3/lib/abstract_controller/callbacks.rb:42:in `block in process_action'
/var/www/discourse/vendor/bundle/ruby/2.6.0/gems/activesupport-5.2.3/lib/active_support/callbacks.rb:132:in `run_callbacks'
/var/www/discourse/vendor/bundle/ruby/2.6.0/gems/actionpack-5.2.3/lib/abstract_controller/callbacks.rb:41:in `process_action'
/var/www/discourse/vendor/bundle/ruby/2.6.0/gems/actionpack-5.2.3/lib/action_controller/metal/rescue.rb:22:in `process_action'
/var/www/discourse/vendor/bundle/ruby/2.6.0/gems/actionpack-5.2.3/lib/action_controller/metal/instrumentation.rb:34:in `block in process_action'
/var/www/discourse/vendor/bundle/ruby/2.6.0/gems/activesupport-5.2.3/lib/active_support/notifications.rb:168:in `block in instrument'
/var/www/discourse/vendor/bundle/ruby/2.6.0/gems/activesupport-5.2.3/lib/active_support/notifications/instrumenter.rb:23:in `instrument'
/var/www/discourse/vendor/bundle/ruby/2.6.0/gems/activesupport-5.2.3/lib/active_support/notifications.rb:168:in `instrument'
/var/www/discourse/vendor/bundle/ruby/2.6.0/gems/actionpack-5.2.3/lib/action_controller/metal/instrumentation.rb:32:in `process_action'
/var/www/discourse/vendor/bundle/ruby/2.6.0/gems/actionpack-5.2.3/lib/action_controller/metal/params_wrapper.rb:256:in `process_action'
/var/www/discourse/vendor/bundle/ruby/2.6.0/gems/activerecord-5.2.3/lib/active_record/railties/controller_runtime.rb:24:in `process_action'
/var/www/discourse/vendor/bundle/ruby/2.6.0/gems/actionpack-5.2.3/lib/abstract_controller/base.rb:134:in `process'
/var/www/discourse/vendor/bundle/ruby/2.6.0/gems/actionview-5.2.3/lib/action_view/rendering.rb:32:in `process'
/var/www/discourse/vendor/bundle/ruby/2.6.0/gems/rack-mini-profiler-1.0.2/lib/mini_profiler/profiling_methods.rb:78:in `block in profile_method'
/var/www/discourse/vendor/bundle/ruby/2.6.0/gems/actionpack-5.2.3/lib/action_controller/metal.rb:191:in `dispatch'
/var/www/discourse/vendor/bundle/ruby/2.6.0/gems/actionpack-5.2.3/lib/action_controller/metal.rb:252:in `dispatch'
/var/www/discourse/vendor/bundle/ruby/2.6.0/gems/actionpack-5.2.3/lib/action_dispatch/routing/route_set.rb:52:in `dispatch'
/var/www/discourse/vendor/bundle/ruby/2.6.0/gems/actionpack-5.2.3/lib/action_dispatch/routing/route_set.rb:34:in `serve'
/var/www/discourse/vendor/bundle/ruby/2.6.0/gems/actionpack-5.2.3/lib/action_dispatch/journey/router.rb:52:in `block in serve'
/var/www/discourse/vendor/bundle/ruby/2.6.0/gems/actionpack-5.2.3/lib/action_dispatch/journey/router.rb:35:in `each'
/var/www/discourse/vendor/bundle/ruby/2.6.0/gems/actionpack-5.2.3/lib/action_dispatch/journey/router.rb:35:in `serve'
/var/www/discourse/vendor/bundle/ruby/2.6.0/gems/actionpack-5.2.3/lib/action_dispatch/routing/route_set.rb:840:in `call'
/var/www/discourse/vendor/bundle/ruby/2.6.0/gems/rack-protection-2.0.5/lib/rack/protection/frame_options.rb:31:in `call'
/var/www/discourse/lib/middleware/omniauth_bypass_middleware.rb:68:in `call'
/var/www/discourse/vendor/bundle/ruby/2.6.0/gems/rack-2.0.7/lib/rack/tempfile_reaper.rb:15:in `call'
/var/www/discourse/vendor/bundle/ruby/2.6.0/gems/rack-2.0.7/lib/rack/conditional_get.rb:25:in `call'
/var/www/discourse/vendor/bundle/ruby/2.6.0/gems/rack-2.0.7/lib/rack/head.rb:12:in `call'
/var/www/discourse/lib/content_security_policy/middleware.rb:12:in `call'
/var/www/discourse/lib/middleware/anonymous_cache.rb:220:in `call'
/var/www/discourse/vendor/bundle/ruby/2.6.0/gems/rack-2.0.7/lib/rack/session/abstract/id.rb:232:in `context'
/var/www/discourse/vendor/bundle/ruby/2.6.0/gems/rack-2.0.7/lib/rack/session/abstract/id.rb:226:in `call'
/var/www/discourse/vendor/bundle/ruby/2.6.0/gems/actionpack-5.2.3/lib/action_dispatch/middleware/cookies.rb:670:in `call'
/var/www/discourse/vendor/bundle/ruby/2.6.0/gems/actionpack-5.2.3/lib/action_dispatch/middleware/callbacks.rb:28:in `block in call'
/var/www/discourse/vendor/bundle/ruby/2.6.0/gems/activesupport-5.2.3/lib/active_support/callbacks.rb:98:in `run_callbacks'
/var/www/discourse/vendor/bundle/ruby/2.6.0/gems/actionpack-5.2.3/lib/action_dispatch/middleware/callbacks.rb:26:in `call'
/var/www/discourse/vendor/bundle/ruby/2.6.0/gems/actionpack-5.2.3/lib/action_dispatch/middleware/debug_exceptions.rb:61:in `call'
/var/www/discourse/vendor/bundle/ruby/2.6.0/gems/actionpack-5.2.3/lib/action_dispatch/middleware/show_exceptions.rb:33:in `call'
/var/www/discourse/vendor/bundle/ruby/2.6.0/gems/logster-2.3.2/lib/logster/middleware/reporter.rb:43:in `call'
/var/www/discourse/vendor/bundle/ruby/2.6.0/gems/railties-5.2.3/lib/rails/rack/logger.rb:38:in `call_app'
/var/www/discourse/vendor/bundle/ruby/2.6.0/gems/railties-5.2.3/lib/rails/rack/logger.rb:28:in `call'
/var/www/discourse/config/initializers/100-quiet_logger.rb:18:in `call'
/var/www/discourse/config/initializers/100-silence_logger.rb:31:in `call'
/var/www/discourse/vendor/bundle/ruby/2.6.0/gems/actionpack-5.2.3/lib/action_dispatch/middleware/remote_ip.rb:81:in `call'
/var/www/discourse/vendor/bundle/ruby/2.6.0/gems/actionpack-5.2.3/lib/action_dispatch/middleware/request_id.rb:27:in `call'
/var/www/discourse/lib/middleware/enforce_hostname.rb:17:in `call'
/var/www/discourse/vendor/bundle/ruby/2.6.0/gems/rack-2.0.7/lib/rack/method_override.rb:22:in `call'
/var/www/discourse/vendor/bundle/ruby/2.6.0/gems/actionpack-5.2.3/lib/action_dispatch/middleware/executor.rb:14:in `call'
/var/www/discourse/vendor/bundle/ruby/2.6.0/gems/rack-2.0.7/lib/rack/sendfile.rb:111:in `call'
/var/www/discourse/vendor/bundle/ruby/2.6.0/gems/rack-mini-profiler-1.0.2/lib/mini_profiler/profiler.rb:171:in `call'
/var/www/discourse/vendor/bundle/ruby/2.6.0/gems/message_bus-2.2.2/lib/message_bus/rack/middleware.rb:57:in `call'
/var/www/discourse/lib/middleware/request_tracker.rb:169:in `call'
/var/www/discourse/vendor/bundle/ruby/2.6.0/gems/railties-5.2.3/lib/rails/engine.rb:524:in `call'
/var/www/discourse/vendor/bundle/ruby/2.6.0/gems/railties-5.2.3/lib/rails/railtie.rb:190:in `public_send'
/var/www/discourse/vendor/bundle/ruby/2.6.0/gems/railties-5.2.3/lib/rails/railtie.rb:190:in `method_missing'
/var/www/discourse/vendor/bundle/ruby/2.6.0/gems/rack-2.0.7/lib/rack/urlmap.rb:68:in `block in call'
/var/www/discourse/vendor/bundle/ruby/2.6.0/gems/rack-2.0.7/lib/rack/urlmap.rb:53:in `each'
/var/www/discourse/vendor/bundle/ruby/2.6.0/gems/rack-2.0.7/lib/rack/urlmap.rb:53:in `call'
/var/www/discourse/vendor/bundle/ruby/2.6.0/gems/unicorn-5.5.1/lib/unicorn/http_server.rb:605:in `process_client'
/var/www/discourse/vendor/bundle/ruby/2.6.0/gems/unicorn-5.5.1/lib/unicorn/http_server.rb:700:in `worker_loop'
/var/www/discourse/vendor/bundle/ruby/2.6.0/gems/unicorn-5.5.1/lib/unicorn/http_server.rb:548:in `spawn_missing_workers'
/var/www/discourse/vendor/bundle/ruby/2.6.0/gems/unicorn-5.5.1/lib/unicorn/http_server.rb:144:in `start'
/var/www/discourse/vendor/bundle/ruby/2.6.0/gems/unicorn-5.5.1/bin/unicorn:128:in `<top (required)>'
/var/www/discourse/vendor/bundle/ruby/2.6.0/bin/unicorn:23:in `load'
/var/www/discourse/vendor/bundle/ruby/2.6.0/bin/unicorn:23:in `<main>'

```

Ich bin mir ziemlich sicher, dass in `https://github.com/discourse/discourse-azure-blob-storage/blob/master/lib/azure_blob_store.rb` eine Implementierung für `url_for` fehlt…

---

<div class="post-metadata">

### Author: ![gerhard](https://sea3.discourse-cdn.com/meta/user_avatar/meta.discourse.org/gerhard/32/119479_2.png) [@gerhard](https://meta.discourse.org/u/gerhard)
#### Post date: [29. August 2019 um 06:58 UTC](https://meta.discourse.org/t/azure-blob-storage-plugin/79392/70 "2019-08-29T06:58:30Z")

</div>

Wir hatten dafür einen PR, der leider nicht gemergt wurde, aber es sollte dort einiges an wertvollem Feedback zu finden sein, falls jemand damit arbeiten möchte.

> <https://github.com/discourse/discourse-azure-blob-storage/pull/11>
>
> This PR implements \[the \`url\_for\` function\](https://github.com/discourse/discour…se/pull/7845) which Discourse uses to determine the URL of a download, taking into account the \`force\_download\` parameter to \[correctly set the \`content-disposition\` parameter for Azure\](https://docs.microsoft.com/en-us/rest/api/storageservices/constructing-a-service-sas#specifying-query-parameters-to-override-response-headers-blob-service-and-file-service-only).
> 
> This fixes \[the bug that was preventing users from downloading files stored in Azure\](https://meta.discourse.org/t/user-archive-impossible-to-download-error-nomethoderror-filestore-azurestore/123687).

Wie ich in [FIX: Implement url\_for by localjo · Pull Request #11 · discourse/discourse-azure-blob-storage · GitHub](https://github.com/discourse/discourse-azure-blob-storage/pull/11#discussion_r312018993) erwähnt habe, sollten die drei neuen Zeilen aus dem PR ausreichen, um das Problem zu beheben, solange keine privaten Uploads benötigt werden.

---

<div class="post-metadata">

### Author: ![schungx](https://sea3.discourse-cdn.com/meta/user_avatar/meta.discourse.org/schungx/32/70989_2.png) [@schungx](https://meta.discourse.org/u/schungx)
#### Post date: [29. August 2019 um 07:39 UTC](https://meta.discourse.org/t/azure-blob-storage-plugin/79392/71 "2019-08-29T07:39:10Z")

</div>

Also… ähm… wie sollte ich diese Version stattdessen mit dem PR ziehen?

Alternativ: Wie kann ich die tatsächliche URL aus der `short-url` erhalten? Gibt es irgendwo eine Mapping-Tabelle?

Denn aktuell kann kein Anhang heruntergeladen werden, und das ist frustrierend…

---

<div class="post-metadata">

### Author: ![schungx](https://sea3.discourse-cdn.com/meta/user_avatar/meta.discourse.org/schungx/32/70989_2.png) [@schungx](https://meta.discourse.org/u/schungx)
#### Post date: [29. August 2019 um 08:51 UTC](https://meta.discourse.org/t/azure-blob-storage-plugin/79392/72 "2019-08-29T08:51:57Z")

</div>

OK, das Ziehen von

```plaintext
git clone --single-branch --branch implement-url-for https://github.com/localjo/discourse-azure-blob-storage

```

funktioniert jetzt einwandfrei. Ich melde mich nach weiteren Tests.

---

<div class="post-metadata">

### Author: ![schungx](https://sea3.discourse-cdn.com/meta/user_avatar/meta.discourse.org/schungx/32/70989_2.png) [@schungx](https://meta.discourse.org/u/schungx)
#### Post date: [29. August 2019 um 09:30 UTC](https://meta.discourse.org/t/azure-blob-storage-plugin/79392/73 "2019-08-29T09:30:35Z")

</div>

Dieses Problem taucht seit einigen Tagen immer wieder auf, was meiner Meinung nach mit diesem Issue zusammenhängen könnte:

```plaintext
/var/www/discourse/lib/file_store/base_store.rb:148:in `not_implemented'
/var/www/discourse/lib/file_store/base_store.rb:42:in `download_url'
/var/www/discourse/lib/cooked_post_processor.rb:386:in `add_lightbox!'
/var/www/discourse/lib/cooked_post_processor.rb:350:in `convert_to_link!'
/var/www/discourse/lib/cooked_post_processor.rb:682:in `block in post_process_images'
/var/www/discourse/vendor/bundle/ruby/2.6.0/gems/nokogiri-1.10.4/lib/nokogiri/xml/node_set.rb:238:in `block in each'
/var/www/discourse/vendor/bundle/ruby/2.6.0/gems/nokogiri-1.10.4/lib/nokogiri/xml/node_set.rb:237:in `upto'
/var/www/discourse/vendor/bundle/ruby/2.6.0/gems/nokogiri-1.10.4/lib/nokogiri/xml/node_set.rb:237:in `each'
/var/www/discourse/lib/cooked_post_processor.rb:679:in `post_process_images'
/var/www/discourse/lib/cooked_post_processor.rb:42:in `block in post_process'
/var/www/discourse/lib/distributed_mutex.rb:31:in `block in synchronize'
/var/www/discourse/lib/distributed_mutex.rb:27:in `synchronize'
/var/www/discourse/lib/distributed_mutex.rb:27:in `synchronize'
/var/www/discourse/lib/distributed_mutex.rb:12:in `synchronize'
/var/www/discourse/lib/cooked_post_processor.rb:38:in `post_process'
/var/www/discourse/app/jobs/regular/process_post.rb:26:in `execute'
/var/www/discourse/app/jobs/base.rb:232:in `block (2 levels) in perform'
/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/app/jobs/base.rb:221:in `block in perform'
/var/www/discourse/app/jobs/base.rb:217:in `each'
/var/www/discourse/app/jobs/base.rb:217:in `perform'
/var/www/discourse/vendor/bundle/ruby/2.6.0/gems/sidekiq-5.2.7/lib/sidekiq/processor.rb:192:in `execute_job'
/var/www/discourse/vendor/bundle/ruby/2.6.0/gems/sidekiq-5.2.7/lib/sidekiq/processor.rb:165:in `block (2 levels) in process'
/var/www/discourse/vendor/bundle/ruby/2.6.0/gems/sidekiq-5.2.7/lib/sidekiq/middleware/chain.rb:128:in `block in invoke'
/var/www/discourse/lib/sidekiq/pausable.rb:138:in `call'
/var/www/discourse/vendor/bundle/ruby/2.6.0/gems/sidekiq-5.2.7/lib/sidekiq/middleware/chain.rb:130:in `block in invoke'
/var/www/discourse/vendor/bundle/ruby/2.6.0/gems/sidekiq-5.2.7/lib/sidekiq/middleware/chain.rb:133:in `invoke'
/var/www/discourse/vendor/bundle/ruby/2.6.0/gems/sidekiq-5.2.7/lib/sidekiq/processor.rb:164:in `block in process'
/var/www/discourse/vendor/bundle/ruby/2.6.0/gems/sidekiq-5.2.7/lib/sidekiq/processor.rb:137:in `block (6 levels) in dispatch'
/var/www/discourse/vendor/bundle/ruby/2.6.0/gems/sidekiq-5.2.7/lib/sidekiq/job_retry.rb:109:in `local'
/var/www/discourse/vendor/bundle/ruby/2.6.0/gems/sidekiq-5.2.7/lib/sidekiq/processor.rb:136:in `block (5 levels) in dispatch'
/var/www/discourse/vendor/bundle/ruby/2.6.0/gems/sidekiq-5.2.7/lib/sidekiq.rb:37:in `block in <module:Sidekiq>'
/var/www/discourse/vendor/bundle/ruby/2.6.0/gems/sidekiq-5.2.7/lib/sidekiq/processor.rb:132:in `block (4 levels) in dispatch'
/var/www/discourse/vendor/bundle/ruby/2.6.0/gems/sidekiq-5.2.7/lib/sidekiq/processor.rb:250:in `stats'
/var/www/discourse/vendor/bundle/ruby/2.6.0/gems/sidekiq-5.2.7/lib/sidekiq/processor.rb:127:in `block (3 levels) in dispatch'
/var/www/discourse/vendor/bundle/ruby/2.6.0/gems/sidekiq-5.2.7/lib/sidekiq/job_logger.rb:8:in `call'
/var/www/discourse/vendor/bundle/ruby/2.6.0/gems/sidekiq-5.2.7/lib/sidekiq/processor.rb:126:in `block (2 levels) in dispatch'
/var/www/discourse/vendor/bundle/ruby/2.6.0/gems/sidekiq-5.2.7/lib/sidekiq/job_retry.rb:74:in `global'
/var/www/discourse/vendor/bundle/ruby/2.6.0/gems/sidekiq-5.2.7/lib/sidekiq/processor.rb:125:in `block in dispatch'
/var/www/discourse/vendor/bundle/ruby/2.6.0/gems/sidekiq-5.2.7/lib/sidekiq/logging.rb:48:in `with_context'
/var/www/discourse/vendor/bundle/ruby/2.6.0/gems/sidekiq-5.2.7/lib/sidekiq/logging.rb:42:in `with_job_hash_context'
/var/www/discourse/vendor/bundle/ruby/2.6.0/gems/sidekiq-5.2.7/lib/sidekiq/processor.rb:124:in `dispatch'
/var/www/discourse/vendor/bundle/ruby/2.6.0/gems/sidekiq-5.2.7/lib/sidekiq/processor.rb:163:in `process'
/var/www/discourse/vendor/bundle/ruby/2.6.0/gems/sidekiq-5.2.7/lib/sidekiq/processor.rb:83:in `process_one'
/var/www/discourse/vendor/bundle/ruby/2.6.0/gems/sidekiq-5.2.7/lib/sidekiq/processor.rb:71:in `run'
/var/www/discourse/vendor/bundle/ruby/2.6.0/gems/sidekiq-5.2.7/lib/sidekiq/util.rb:16:in `watchdog'
/var/www/discourse/vendor/bundle/ruby/2.6.0/gems/sidekiq-5.2.7/lib/sidekiq/util.rb:25:in `block in safe_thread'

```

---

<div class="post-metadata">

### Author: ![schungx](https://sea3.discourse-cdn.com/meta/user_avatar/meta.discourse.org/schungx/32/70989_2.png) [@schungx](https://meta.discourse.org/u/schungx)
#### Post date: [29. August 2019 um 09:35 UTC](https://meta.discourse.org/t/azure-blob-storage-plugin/79392/74 "2019-08-29T09:35:40Z")

</div>

`download_url` muss eine weitere Funktion sein, die vom Azure Blob-Plugin nicht implementiert ist.

EDIT:

OK, die Auswirkungen des fehlenden `download_url` zeigen sich jetzt.

- Der Bildnachverarbeitungsjob schlägt weiterhin fehl
- Keine Bilder werden optimiert
- Keine Bilder werden als Lightbox angezeigt
- Die Vorschau der Themenliste kann das Vorschaubild nicht erfassen

Könnte eine nette Seele (@gerhard?) bitte `download_url` implementieren?

EDIT 2:

@gerhard, kann das so einfach sein, wie folgendes einzufügen:

```plaintext
def download_url(upload)
      return unless upload
      "#{upload.short_path}"
    end

```

Ich würde gerne das Repository klonen, um es zu testen, aber Discourse ist mittlerweile so ein riesiges Ungeheuer geworden, dass ich nicht sicher bin, ob dabei nichts kaputtgeht!

EDIT 3:

Ich habe den folgenden PR an `localjo/discourse-azure-blob-storage` gesendet:

[https://github.com/localjo/discourse-azure-blob-storage/pull/1](https://github.com/localjo/discourse-azure-blob-storage/pull/1)

Es scheint, als würde dies die meisten sichtbaren Probleme ohne erkennbare negative Auswirkungen beheben…

---

<div class="post-metadata">

### Author: ![rainmanjam](https://sea3.discourse-cdn.com/meta/user_avatar/meta.discourse.org/rainmanjam/32/153506_2.png) [@rainmanjam](https://meta.discourse.org/u/rainmanjam)
#### Post date: [23. Dezember 2019 um 18:59 UTC](https://meta.discourse.org/t/azure-blob-storage-plugin/79392/75 "2019-12-23T18:59:18Z")

</div>

Ist es möglich, einige Änderungen vorzunehmen, damit Discourse Azure-Blob-Speicher für Backups verwenden kann?

---

<div class="post-metadata">

### Author: ![NotAnonymous](https://avatars.discourse-cdn.com/v4/letter/n/f05b48/32.png) [@NotAnonymous](https://meta.discourse.org/u/NotAnonymous)
#### Post date: [9. Januar 2020 um 21:55 UTC](https://meta.discourse.org/t/azure-blob-storage-plugin/79392/76 "2020-01-09T21:55:24Z")

</div>

Ich habe denselben Fehler. Wurde dein PR übernommen? Falls nicht, könntest du die vorgenommenen Änderungen teilen, damit ich prüfen kann, ob ich sie auf unserer Website umsetzen kann? Ich kann nicht auf die angezeigte GitHub-URL zugreifen.

Vielen Dank!

---

<div class="post-metadata">

### Author: ![schungx](https://sea3.discourse-cdn.com/meta/user_avatar/meta.discourse.org/schungx/32/70989_2.png) [@schungx](https://meta.discourse.org/u/schungx)
#### Post date: [31. Januar 2020 um 09:41 UTC](https://meta.discourse.org/t/azure-blob-storage-plugin/79392/77 "2020-01-31T09:41:00Z")

</div>

Das Basis-Repository scheint verschwunden zu sein.

Du kannst versuchen, von hier zu pullen:

```plaintext
git clone --single-branch --branch implement-url-for https://github.com/schungx/discourse-azure-blob-storage.git

```

Hier sind meine Änderungen enthalten. Allerdings glaube ich, dass etwas anderes kaputtgegangen ist, was ich noch nicht behoben habe.

Ein PR, den ich zum offiziellen Repository eingereicht habe:

> <https://github.com/discourse/discourse-azure-blob-storage/pull/12/commits/7efa640564996287a80d2c7d0003c420cfc92d43>

---

<div class="post-metadata">

### Author: ![schungx](https://sea3.discourse-cdn.com/meta/user_avatar/meta.discourse.org/schungx/32/70989_2.png) [@schungx](https://meta.discourse.org/u/schungx)
#### Post date: [31. Januar 2020 um 11:25 UTC](https://meta.discourse.org/t/azure-blob-storage-plugin/79392/78 "2020-01-31T11:25:33Z")

</div>

Es scheint, als gäbe es kürzlich massive Änderungen an der S3-Speicherengine (die `azure-blob-storage` \_übernimmt\*), um gesicherte Uploads zu verarbeiten.

Dabei funktioniert die Verarbeitung von Koch-Beiträgen nicht mehr richtig. Es wird folgendes HTML generiert:

```plaintext
<img
    src="https://xxx.com/t/topic/3493"
    srcset=", 1.5x, 2x"
    style="position: absolute; top: 0px; left: 0px; width: 678px; height: 388px;" 
    class="d-lazyload d-lazyload-hidden"
>

```

Beachten Sie Folgendes:

1. Das Attribut `src` ist auf den Link zum Thema statt auf die URL des Bildes gesetzt.

2. Die URLs im `srcset`-Attribut verschwinden alle (wahrscheinlich werden Leerzeichen zurückgegeben).

3. Keine der optimierten Bilder wird tatsächlich generiert (wahrscheinlich aufgrund der leeren URLs).

Dies ist ein HTML-Beispiel, das einwandfrei funktioniert:

```plaintext
<img
    src="https://xxx.blob.core.windows.net/support/optimized/2X/2/2332e15b99ee86620e2f890d38aaceb16954cc8c_2_375x500.jpeg" 
    alt="20200113_163717" data-base62-sha1="51nILqcSQo5kGA4iz67LGoQmSpm"
    class="d-lazyload"
    srcset="//xxx.blob.core.windows.net/support/optimized/2X/2/2332e15b99ee86620e2f890d38aaceb16954cc8c_2_375x500.jpeg, //xxx.blob.core.windows.net/support/optimized/2X/2/2332e15b99ee86620e2f890d38aaceb16954cc8c_2_562x750.jpeg 1.5x, //xxx.blob.core.windows.net/support/optimized/2X/2/2332e15b99ee86620e2f890d38aaceb16954cc8c_2_750x1000.jpeg 2x" 
    width="375" height="500"
>

```

Bei diesem Bild funktionierte alles einwandfrei.

Der Code zur Generierung der optimierten Bilder befindet sich in `UrlHelper.cook_url`, der erhebliche Änderungen erfahren hat, um gesicherte Uploads nach S3 zu verarbeiten.

---

<div class="post-metadata">

### Author: ![NotAnonymous](https://avatars.discourse-cdn.com/v4/letter/n/f05b48/32.png) [@NotAnonymous](https://meta.discourse.org/u/NotAnonymous)
#### Post date: [31. Januar 2020 um 14:40 UTC](https://meta.discourse.org/t/azure-blob-storage-plugin/79392/80 "2020-01-31T14:40:43Z")

</div>

Danke für die Info, ich habe es basierend auf deinen Kommentaren schließlich selbst behoben.

Bei den jüngsten Änderungen habe ich das auch festgestellt. Das war eine einfache Lösung: Du musst einfach den sicheren (4.) Parameter zur optimize-Funktion im Plugin hinzufügen. Ich bin mir nicht sicher, ob weitere Änderungen erforderlich sind, aber damit ist das von dir festgestellte unmittelbare Problem behoben.

---

<div class="post-metadata">

### Author: ![schungx](https://sea3.discourse-cdn.com/meta/user_avatar/meta.discourse.org/schungx/32/70989_2.png) [@schungx](https://meta.discourse.org/u/schungx)
#### Post date: [31. Januar 2020 um 14:43 UTC](https://meta.discourse.org/t/azure-blob-storage-plugin/79392/81 "2020-01-31T14:43:26Z")

</div>

Seit dem Upgrade vor etwa vier Tagen ist bei allen `optimized_images` das Feld `url` auf `null` gesetzt, anstatt die korrekte Bild-URL zu enthalten.

Dies führt dazu, dass Discourse auf schreckliche Weise versagt, denn `upload.thumbnail` gibt zwar einen gültigen Datensatz zurück, aber die `url` ist `null`. Sollte es nicht irgendwo eine Prüfung geben, die dies abfängt?

Das bedeutet, dass diese Zeile:

> <https://github.com/discourse/discourse/blob/d07f03946816490ee0e74eda1caf351e6b768c61/lib/cooked_post_processor.rb#L381>

`img["src"]` auf `null` setzt. Ich bin mir sicher, dass das niemanden glücklich macht.

Alle Bilder in `srcset` sind leer gesetzt, weil:

> <https://github.com/discourse/discourse/blob/d07f03946816490ee0e74eda1caf351e6b768c61/lib/cooked_post_processor.rb#L392>

t.url am Ende `null` ist.

Dann landet alles genau so, wie es ist. Ich bin mir ziemlich sicher, dass irgendwo im weiteren Verlauf, wenn `img["src"]` `null` ist, es auf die URL des Themas selbst gesetzt wird.

Der Schuldige ist also die Tatsache, dass optimierte Bilder NICHT erstellt werden (aber die Datensätze mit `null`-`url` dennoch angelegt werden). Es gibt keine Fehlermeldungen.

Jeder Beitrag mit Bildern, die gültige optimierte Bilder (mit gültiger `url`) haben, funktioniert weiterhin einwandfrei, auch beim erneuten Erstellen des HTML.

Jedes Bild, das zuvor hochgeladen wurde (mit gültigen optimierten Bildern), funktioniert auch beim erneuten Hochladen weiterhin einwandfrei.

---

<div class="post-metadata">

### Author: ![schungx](https://sea3.discourse-cdn.com/meta/user_avatar/meta.discourse.org/schungx/32/70989_2.png) [@schungx](https://meta.discourse.org/u/schungx)
#### Post date: [31. Januar 2020 um 14:45 UTC](https://meta.discourse.org/t/azure-blob-storage-plugin/79392/82 "2020-01-31T14:45:14Z")

</div>

> [@NotAnonymous](#):
>
> Du musst lediglich den sicheren (4.) Parameter zur optimize-Funktion im Plugin hinzufügen.

EDIT: OK, ich habe `secure: false` zu `store_optimized_image` hinzugefügt, und alles scheint jetzt einwandfrei zu funktionieren.

---

<div class="post-metadata">

### Author: ![schungx](https://sea3.discourse-cdn.com/meta/user_avatar/meta.discourse.org/schungx/32/70989_2.png) [@schungx](https://meta.discourse.org/u/schungx)
#### Post date: [31. Januar 2020 um 16:34 UTC](https://meta.discourse.org/t/azure-blob-storage-plugin/79392/83 "2020-01-31T16:34:14Z")

</div>

Ich bin immer noch der Meinung, dass etwas unternommen werden muss, um Situationen zu handhaben, in denen `OptimizedImage` einen `url`-Wert von `""` (nicht `null`) hat.

Dies wird _immer noch_ passieren, scheint aber nur bei bestimmten Bildern und nicht bei anderen aufzutreten. Bei bestimmten Bildern dieser Art schlägt die Erstellung kleiner Versionen beim Verwenden des `Topics List Preview`-Plugins fehl und hinterlässt somit Datensätze mit `url=""`.

Diese tauchen in der Regel nicht auf, da responsive Bilder erst ab der 1x-Mindestgröße beginnen und standardmäßig bis zur 2x-Größe hochskalieren. Daher werden die kleinen optimierten Bilder nie erreicht. Dennoch ist es besorgniserregend, dass dies eines Tages zu Problemen führen könnte…

Das bedeutet nicht, dass kein Vorschaubild in der Themenliste angezeigt wird, wenn das `Topics List Preview`-Plugin installiert ist.

---

<div class="post-metadata">

### Author: ![schungx](https://sea3.discourse-cdn.com/meta/user_avatar/meta.discourse.org/schungx/32/70989_2.png) [@schungx](https://meta.discourse.org/u/schungx)
#### Post date: [22. Mai 2020 um 05:50 UTC](https://meta.discourse.org/t/azure-blob-storage-plugin/79392/84 "2020-05-22T05:50:32Z")

</div>

Beim Upgrade von Discourse ist ein Fehler aufgrund eines `faraday`-Konflikts aufgetreten:

```plaintext

I, [2020-05-22T05:46:54.081847 #1] INFO -- : > cd /var/www/discourse && su discourse -c 'bundle exec rake db:migrate'
rake aborted!
Gem::ConflictError: Unable to activate faraday_middleware-0.11.0, because faraday-1.0.1 conflicts with faraday (>= 0.7.4, < 1.0)
/var/www/discourse/lib/plugin_gem.rb:20:in `load'
/var/www/discourse/lib/plugin/instance.rb:635:in `gem'
/var/www/discourse/plugins/discourse-azure-blob-storage/plugin.rb:10:in `activate!'
/var/www/discourse/lib/plugin/instance.rb:541:in `instance_eval'
/var/www/discourse/lib/plugin/instance.rb:541:in `activate!'
lib/discourse.rb:224:in `block in activate_plugins!'
lib/discourse.rb:221:in `each'
lib/discourse.rb:221:in `activate_plugins!'
/var/www/discourse/config/application.rb:297:in `block in <class:Application>'
/var/www/discourse/lib/plugin_initialization_guard.rb:5:in `plugin_initialization_guard'
/var/www/discourse/config/application.rb:296:in `<class:Application>'
/var/www/discourse/config/application.rb:65:in `<module:Discourse>'
/var/www/discourse/config/application.rb:64: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.6.0/gems/rake-13.0.1/exe/rake:27:in `<top (required)>'
/usr/local/bin/bundle:23:in `load'
/usr/local/bin/bundle:23:in `<main>'

```

Verwendet `discourse-azure-blob-storage` `faraday`?

---

<div class="post-metadata">

### Author: ![itsbhanusharma](https://sea3.discourse-cdn.com/meta/user_avatar/meta.discourse.org/itsbhanusharma/32/180717_2.png) [@itsbhanusharma](https://meta.discourse.org/u/itsbhanusharma)
#### Post date: [22. Mai 2020 um 05:57 UTC](https://meta.discourse.org/t/azure-blob-storage-plugin/79392/85 "2020-05-22T05:57:32Z")

</div>

Ja, das tut es

> <https://github.com/discourse/discourse-azure-blob-storage/blob/67d13a285c17b6c4ca2d9154a8bed0a4f0fd5733/plugin.rb#L10>

---

<div class="post-metadata">

### Author: ![schungx](https://sea3.discourse-cdn.com/meta/user_avatar/meta.discourse.org/schungx/32/70989_2.png) [@schungx](https://meta.discourse.org/u/schungx)
#### Post date: [22. Mai 2020 um 06:38 UTC](https://meta.discourse.org/t/azure-blob-storage-plugin/79392/87 "2020-05-22T06:38:15Z")

</div>

Großartig.

> <https://github.com/discourse/discourse-azure-blob-storage/pull/14>

Damit ist es behoben.

---

<div class="post-metadata">

### Author: ![meglio](https://sea3.discourse-cdn.com/meta/user_avatar/meta.discourse.org/meglio/32/71444_2.png) [@meglio](https://meta.discourse.org/u/meglio)
#### Post date: [8. August 2020 um 14:08 UTC](https://meta.discourse.org/t/azure-blob-storage-plugin/79392/88 "2020-08-08T14:08:44Z")

</div>

Ist dieses Plugin immer noch defekt?

Nutzt jemand dieses Plugin aktuell für Uploads zu Azure Blob Storage? Wenn ja, ist es stabil? Bitte teilen Sie Ihre Erfahrungen mit.

[Vorherige Seite](https://meta.discourse.org/t/azure-blob-storage-plugin/79392.md?page=3)

[Nächste Seite](https://meta.discourse.org/t/azure-blob-storage-plugin/79392.md?page=5)
