Olá a todos,
Estou tentando trabalhar com este método em Plugin::Instance: discourse/lib/plugin/instance.rb at 06c60b017c86ddab489fd3d30c951c10b5c4d281 · ayampenyetan/discourse · GitHub
Tentei pesquisar usos existentes deste método na base de código do Discourse / no Github, mas parece que ele não é realmente utilizado em nenhum lugar fora dos casos de teste (pelo menos no que diz respeito ao código publicamente acessível).
Alguém poderia me explicar os seguintes pontos:
- Qual é a maneira correta de obter uma instância de
Plugin::Instanceem um plugin para que o método possa ser invocado? - Qual é o momento adequado para chamar o método vinculado acima? Se eu criar um novo endpoint no meu plugin, devo colocar essa chamada após a criação do endpoint? Deve ser antes ou dentro do
after_initialize? - O código a seguir parece registrar o escopo, mas ao tentar acessar o endpoint que registrei com uma chave de API de administrador que possui esse escopo, ele não parece conseguir encontrar a ação. O endpoint funciona bem quando acessado com uma chave de API de administrador que tem todos os escopos. Por que isso não está funcionando? O que estou fazendo de errado?
- Tentei adicionar uma entrada
urlsàs ações, mas parece que não está sendo reconhecida. Como adicionar com sucesso uma lista de URLs às quais o escopo se aplica a essa estrutura?
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 # Nota: não tenho certeza se isso está correto
plugin.add_api_key_scope(
:test_scope,
{
post: {
actions: %w[api_key_scope_test#action]
}
}
)
end