مكون تخزين Azure Blob

Awesome, @vinothkannans can you review and merge ?

4 إعجابات

مرحبًا @maja

لدي مشكلة قد تكون مرتبطة بهذا الإضافة.
هناك المزيد من المعلومات حول هذه المشكلة:

هل يمكنك التحقق مما إذا كانت المشكلة في هذه الإضافة ومحاولة إصلاحها؟

وربما تكون هذه المشكلة مرتبطة أيضًا:

أي ملف يتم رفعه باستخدام short-url يحصل تلقائيًا على رمز 500.

تُظهر السجلات ما يلي:

NoMethodError (الطريقة `url_for` غير معرفة لـ #<FileStore::AzureStore:0x00007f4553fc2ae8>)
/var/www/discourse/app/controllers/uploads_controller.rb:107:in `show_short'
/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>'

أنا متأكد تمامًا من أن الملف https://github.com/discourse/discourse-azure-blob-storage/blob/master/lib/azure_blob_store.rb يفتقر إلى تنفيذ للطريقة url_for

3 إعجابات

كان لدينا طلب سحب (PR) لذلك، لكن لم يتم دمجه للأسف، ومع ذلك يجب أن يحتوي على بعض التعليقات القيمة في حال أراد أي شخص البدء في العمل عليه.

وكما ذكرت في FIX: Implement url_for by localjo · Pull Request #11 · discourse/discourse-azure-blob-storage · GitHub طالما أن التحميلات الخاصة غير مطلوبة، فإن الثلاث سطور الجديدة في طلب السحب (PR) يجب أن تكون كافية لحل المشكلة.

4 إعجابات

إذن… آه… كيف يجب أن أسحب هذا الإصدار مع طلب السحب (PR) بدلاً من ذلك؟

بدلاً من ذلك، كيف يمكنني الحصول على الرابط الفعلي من short-url؟ هل توجد جدول توثيق في مكان ما؟

لأنه في الوقت الحالي لا يمكن تنزيل أي مرفق، وهذا أمر محبط…

حسناً، سحب من

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

يعمل بشكل جيد الآن. سأبلغ بعد إجراء المزيد من الاختبارات.

تظهر هذه المشكلة بشكل متكرر منذ بضعة أيام، وأعتقد أنها قد تكون مرتبطة بهذه القضية:

/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'

يجب أن تكون download_url دالة أخرى غير مُطبَّقة بواسطة مكون Azure Blob.

تعديل:

حسنًا، بدأت آثار غياب download_url في الظهور.

  • يستمر فشل مهمة معالجة منشورات الصور
  • لا يتم تحسين أي صور
  • لا يتم عرض الصور في نافذة منبثقة (lightbox)
  • لا يمكن لعينة قائمة المواضيع التقاط صورة المعاينة

هل يمكن لشخص طيب (@gerhard؟) أن ينفذ download_url من فضله؟

تعديل 2:

@gerhard، هل يمكن أن يكون الأمر بسيطًا مثل إضافة:

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

لقد كنت أرغب في استنساخ المستودع لتجربته، لكن Discourse أصبح وحشًا ضخمًا لدرجة أنني لست متأكدًا مما إذا كان أي شيء سينكسر!

تعديل 3:

لقد أرسلت طلب الدمج (PR) التالي إلى localjo/discourse-azure-blob-storage:

https://github.com/localjo/discourse-azure-blob-storage/pull/1

يبدو أنه يحل معظم المشاكل الظاهرة دون أي آثار سلبية ظاهرة…

إعجابَين (2)

هل من الممكن إجراء بعض التغييرات للسماح لـ Discourse باستخدام تخزين Azure Blob للنسخ الاحتياطية؟

أواجه نفس الخطأ. هل تم دمج طلب السحب (PR) الخاص بك؟ إذا لم يكن كذلك، هل يمكنك مشاركة التغييرات التي تمت حتى أتمكن من التحقق مما إذا كان بإمكاني تطبيقها على موقعنا؟ لا أستطيع الوصول إلى عنوان URL الخاص بـ GitHub المعروض.

شكرًا لك!

يبدو أن المستودع الأساسي قد اختفى.

يمكنك تجربة السحب من هذا:

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

يحتوي هذا على تعديلاتي. ومع ذلك، أعتقد أن شيئًا آخر تعطل، ولم أصلحه بعد.

طلب سحب قدمته إلى المستودع الرسمي:

إعجاب واحد (1)

يبدو أن هناك تغييرات كبيرة مؤخرًا في محرك تخزين S3 (الذي يُستخدم من قبل azure-blob-storage) للتعامل مع التحميلات الآمنة.

وفي أثناء ذلك، تعطلت معالجة معينة في منشورات الطهي. حيث يتم توليد HTML مثل هذا:

<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"
>

لاحظ ما يلي:

  1. تم تعيين src إلى رابط الموضوع بدلاً من عنوان URL للصورة.

  2. اختفت جميع عناوين URL في srcset (على الأرجح لأنها تُرجع قيمًا فارغة).

  3. لم يتم توليد أي من الصور المحسّنة فعليًا (على الأرجح بسبب أن عناوين URL فارغة).

هذا هو HTML الذي يعمل بشكل صحيح:

<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"
>

بالنسبة لهذه الصورة، عمل كل شيء بشكل صحيح.

يقع الكود المسؤول عن توليد الصور المحسّنة في UrlHelper.cook_url، والذي خضع لتغييرات كبيرة للتعامل مع التحميلات الآمنة إلى S3.

3 إعجابات

شكرًا للمعلومة، لقد قمت بإصلاحه في النهاية بناءً على تعليقاتك.

بالنسبة للتغييرات الأخيرة، اكتشفت ذلك أيضًا. كان الإصلاح بسيطًا، كل ما عليك فعله هو إضافة المعامل الآمن (الرابع) إلى دالة optimize في الإضافة. لست متأكدًا مما إذا كانت هناك تغييرات أخرى مطلوبة، لكن هذا حل المشكلة المباشرة التي أشرت إليها.

إعجاب واحد (1)

منذ الترقية قبل حوالي أربعة أيام، أصبح حقل url في جميع عناصر optimized_images مضبوطًا على null بدلاً من عنوان URL الصحيح للصورة.

هذا يتسبب في فشل نظام Discourse بطرق مروعة، لأن upload.thumbnail سيعيد سجلاً صالحًا، لكن حقل url يكون null. ألا يجب أن يكون هناك شرط حماية في مكان ما للتحقق من هذا؟

وهو ما يعني أن السطر التالي:

يضبط img["src"] على null. وأنا متأكد من أن هذا لن يسعد أي شيء.

تُضبط جميع الصور في srcset على فارغة لأن:

ينتهي الأمر بـ t.url إلى أن يكون null.

ثم ينتهي كل شيء بالضبط كما هو. أنا متأكد تمامًا من أنه في مرحلة ما لاحقًا، إذا كان img["src"] يساوي null، فإنه يتم تعيينه إلى عنوان URL للموضوع نفسه.

لذلك، السبب الجذري هو أن الصور المحسنة لا يتم إنشاؤها (لكن السجلات تُنشأ مع قيمة url تساوي null). ولا توجد رسائل خطأ.

أي منشور يحتوي على صور ذات صور محسنة صالحة (مع عنوان url صالح) يعمل بشكل ممتاز، حتى عند إعادة بناء HTML.

أي صورة تم تحميلها مسبقًا (مع صور محسنة صالحة)، عند إعادة تحميلها، تستمر في العمل بشكل ممتاز.

تعديل: حسنًا، أضفت secure: false إلى store_optimized_image ويبدو أن كل شيء يعمل بشكل جيد الآن.

إعجاب واحد (1)

لا أزال أؤمن أنه يجب اتخاذ إجراء للتعامل مع الحالات التي يكون فيها OptimizedImage يحتوي على url = "" (وليس null).

سيظل هذا يحدث، لكنه يبدو أنه يقتصر على بعض الصور وليس جميعها. بالنسبة لبعض الصور من هذا النوع، تفشل إنشاء الإصدارات الصغيرة عند استخدام إضافة Topics List Preview، مما يؤدي إلى ترك سجلات تحتوي على url="".

عادةً لن تظهر هذه الإصدارات لأن الصور المتجاوبة تبدأ من حجم 1x كحد أدنى وتزيد (افتراضيًا) إلى 2x. لذلك، لا يتم الوصول إلى الصور المحسنة الصغيرة. ومع ذلك، لا يزال هناك قلق من أن هذا قد يسبب مشكلة في يوم من الأيام…

هذا لا يعني أن صورة معاينة لن تظهر في قائمة المواضيع عند تثبيت إضافة Topics List Preview.

إعجاب واحد (1)

حدث خطأ أثناء ترقية Discourse بسبب تعارض faraday:


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>'

هل يستخدم discourse-azure-blob-storage faraday؟

نعم، بالتأكيد

رائع.

هذا الإصلاح يحل المشكلة.

3 إعجابات

هل لا يزال هذا الإضافة معطوبًا؟

هل يستخدم أي شخص حاليًا هذه الإضافة لرفع الملفات إلى Azure Blob Storage؟ إذا كان الأمر كذلك، فهل هي مستقرة؟ يرجى مشاركة تجربتك.