大家好,
我正在尝试使用 Plugin::Instance 上的这个方法:discourse/lib/plugin/instance.rb at 06c60b017c86ddab489fd3d30c951c10b5c4d281 · ayampenyetan/discourse · GitHub
我尝试在 Discourse 代码库/GitHub 中搜索该方法的使用情况,但似乎除了测试用例之外,公开可访问的代码中并未实际使用该方法。
能否有人为我解释以下问题:
- 在插件中获取
Plugin::Instance实例以调用该方法的正确方式是什么? - 调用上述链接方法的正确时机是什么?如果我在插件中创建了一个新的端点,是否应该在创建端点之后调用此方法?它应该放在
after_initialize之前还是内部? - 以下代码似乎注册了作用域,但在尝试使用具有该作用域的管理员 API 密钥访问我注册的端点时,似乎无法找到该操作。当使用具有所有作用域的管理员 API 密钥访问该端点时,它能正常工作。为什么这不起作用?我在这里做错了什么?
- 我尝试在 actions 中添加一个
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