Hallo zusammen,
ich versuche, mit dieser Methode in Plugin::Instance zu arbeiten: discourse/lib/plugin/instance.rb at 06c60b017c86ddab489fd3d30c951c10b5c4d281 · ayampenyetan/discourse · GitHub
Ich habe versucht, nach bestehenden Verwendungen dieser Methode in der Discourse-Codebase bzw. auf GitHub zu suchen, aber es scheint, als würde sie außerhalb von Testfällen (soweit öffentlich zugänglicher Code dies zulässt) nirgendwo verwendet werden.
Könnte mir jemand Folgendes erklären:
- Wie bekomme ich korrekt eine Instanz von
Plugin::Instancein einem Plugin, damit die Methode aufgerufen werden kann? - Wann ist der richtige Zeitpunkt, um die oben verlinkte Methode aufzurufen? Wenn ich einen neuen Endpunkt in meinem Plugin erstelle, sollte ich diesen Aufruf nach der Erstellung des Endpunkts platzieren? Sollte er vor oder innerhalb von
after_initializestehen? - Der folgende Code scheint den Scope zu registrieren, aber wenn ich versuche, den von mir registrierten Endpunkt mit einem Admin-API-Schlüssel aufzurufen, der diesen Scope besitzt, findet er die Aktion nicht. Der Endpunkt funktioniert einwandfrei, wenn ich ihn mit einem Admin-API-Schlüssel mit allen Scopes aufrufe. Warum funktioniert das nicht, was mache ich falsch?
- Ich habe versucht, einen
urls-Eintrag zu den Aktionen hinzuzufügen, aber er wird scheinbar nicht erkannt. Wie füge ich dieser Struktur erfolgreich eine Liste von URLs hinzu, auf die der Scope angewendet werden soll?
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 # Hinweis: Nicht klar, ob dies korrekt ist
plugin.add_api_key_scope(
:test_scope,
{
post: {
actions: %w[api_key_scope_test#action]
}
}
)
end