مرحبًا بالجميع،
أحاول العمل مع هذه الطريقة في Plugin::Instance: discourse/lib/plugin/instance.rb at 06c60b017c86ddab489fd3d30c951c10b5c4d281 · ayampenyetan/discourse · GitHub
حاولت البحث عن استخدامات موجودة لهذه الطريقة عبر قاعدة كود Discourse أو على GitHub، لكن يبدو أنها لا تُستخدم فعليًا في أي مكان خارج حالات الاختبار (حسب الكود المتاح للعامة).
هل يمكن لأحد شرح الأمور التالية لي:
- ما هو الطريقة الصحيحة للحصول على مثيل من
Plugin::Instanceداخل إضافة (plugin) لكي يمكن استدعاء هذه الطريقة؟ - ما هو التوقيت المناسب لاستدعاء الطريقة المذكورة أعلاه؟ إذا قمت بإنشاء نقطة نهاية (endpoint) جديدة في إضافتي، هل يجب وضع هذا الاستدعاء بعد إنشاء نقطة النهاية؟ أم قبلها أو داخل
after_initialize؟ - يبدو أن الكود التالي يسجل النطاق (scope)، لكن عند محاولة الوصول إلى نقطة النهاية التي سجلتها باستخدام مفتاح API إداري يحتوي على هذا النطاق، لا يبدو أنه قادر على العثور على الإجراء (action). تعمل نقطة النهاية بشكل صحيح عند الوصول إليها باستخدام مفتاح API إداري يحتوي على جميع النطاقات. لماذا لا يعمل هذا؟ ما الخطأ الذي أقوم به؟
- حاولت إضافة إدخال
urlsإلى الإجراءات، لكنه لا يبدو أنه يتم التقاطه. كيف يمكنني إضافة قائمة عناوين URL بنجاح ينطبق عليها هذا النطاق إلى هذا الهيكل؟
after_initialize do
module ::ApiKeyScopeTest
class Engine < ::Rails::Engine
engine_name "api_key_scope_test"
isolate_namespace ApiKeyScopeTest
end
end
class ApiKeyScopeTest::ApiKeyScopeTestController < ::ApplicationController
def action
...
end
end
ApiKeyScopeTest::Engine.routes.draw do
post "/admin/plugins/api-key-scope-test" => "api_key_scope_test#action", constraints: AdminConstraint.new
end
Discourse::Application.routes.append do
mount ::ApiKeyScopeTest::Engine, at: "/"
end
plugin = Plugin::Instance.new # ملاحظة: غير واضح ما إذا كان هذا صحيحًا
plugin.add_api_key_scope(
:test_scope,
{
post: {
actions: %w[api_key_scope_test#action]
}
}
)
end