Hola a todos,
Estoy intentando trabajar con este método en Plugin::Instance: discourse/lib/plugin/instance.rb at 06c60b017c86ddab489fd3d30c951c10b5c4d281 · ayampenyetan/discourse · GitHub
He intentado buscar usos existentes de este método en la base de código de Discourse / GitHub, pero parece que en realidad no se utiliza en ningún lugar fuera de los casos de prueba (en lo que respecta al código de acceso público).
¿Alguien puede explicarme lo siguiente:
- ¿Cuál es la forma correcta de obtener una instancia de
Plugin::Instanceen un plugin para que el método pueda ser invocado? - ¿Cuál es el momento adecuado para llamar al método enlazado anteriormente? Si creo un nuevo endpoint en mi plugin, ¿debería colocar esta llamada después de que se cree el endpoint? ¿Debería ser antes o dentro de
after_initialize? - El siguiente código parece registrar el alcance, pero al intentar acceder al endpoint que registro con una clave de API de administrador que tiene ese alcance, parece que no puede encontrar la acción. El endpoint funciona bien cuando se accede a él con una clave de API de administrador con todos los alcances. ¿Por qué esto no funciona, qué estoy haciendo mal aquí?
- Intenté agregar una entrada
urlsa las acciones, pero parece que no se detecta. ¿Cómo puedo agregar correctamente una lista de URLs a las que se aplica el alcance a esta estructura?
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: no está claro si esto es correcto
plugin.add_api_key_scope(
:test_scope,
{
post: {
actions: %w[api_key_scope_test#action]
}
}
)
end