안녕하세요,
Plugin::Instance에서 이 메서드를 사용하려고 시도하고 있습니다: discourse/lib/plugin/instance.rb at 06c60b017c86ddab489fd3d30c951c10b5c4d281 · ayampenyetan/discourse · GitHub
Discourse 코드베이스/GitHub에서 이 메서드의 기존 사용 사례를 검색해 보았지만, 테스트 케이스를 제외하고는 실제로 어디에서도 사용되고 있지 않은 것 같습니다(공개적으로 접근 가능한 코드 기준).
다음 사항들을 설명해 주실 수 있나요:
- 플러그인에서
Plugin::Instance의 인스턴스를 가져와서 해당 메서드를 호출하는 올바른 방법은 무엇인가요? - 위에서 링크한 메서드를 호출하는 적절한 시기는 언제인가요? 플러그인에서 새로운 엔드포인트를 생성하는 경우, 이 호출을 엔드포인트가 생성된 후에 배치해야 하나요?
after_initialize이전, 내부, 아니면 이후에 배치해야 하나요? - 아래 코드는 스코프를 등록하는 것처럼 보이지만, 해당 스코프가 있는 관리자 API 키로 엔드포인트를 호출할 때 액션을 찾지 못하는 것 같습니다. 모든 스코프가 있는 관리자 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