How do I register a public asset in a plugin?

AI-generated summary

Users are facing issues with registering public assets in Discourse plugins, specifically when trying to access images on a private members-only site. featheredtoast shared their problem with the Discord oauth plugin, and Nikolay also reported the same issue.

simon provided the solution by referencing an old Discourse plugin, trout_emoji, which demonstrates how to register public assets. The key is to add images to the public/images directory in the plugin, and they will be available on the server at /plugins/plugin_name/images/, where plugin_name is the name specified in the plugin.rb file metadata.

Nikolay confirmed that this solution worked, and the problem was due to a misunderstanding of the plugin name in the path.

Forgive me if this has been asked before, but I am unable to find a previous topic on this.

I’m wondering how to register an asset as public (such as an image) through a discourse plugin - it seems currently after registering, I get a 404 or 302 response when installing under a private member’s only site.

This is in reference to the Discord oauth plugin I built - I am unable to retrieve the image either directly, or through a register_asset call.

How would I go about serving static plugin assets in this case?

안녕하세요, 저도 정보를 받을 수 있을까요? 저도 같은 문제를 겪고 있어서요.

물론입니다. 해당 주제는 삭제되었습니다. 그 주제에는 플러그인에서 공개 자산을 등록하는 방법을 예시로 보여주는 오래된 Discourse 플러그인 링크가 포함되어 있었습니다: GitHub - eviltrout/trout_emoji: Adds an evil trout emoji to a discourse install · GitHub.

마지막으로 테스트했을 때, 플러그인의 public/images 디렉토리에 이미지를 추가하면 서버에서 /plugins/plugin_name/images/ 경로로 사용할 수 있게 됩니다.

경로에 사용하는 플러그인 이름은 plugin.rb 파일 상단의 메타데이터에서 지정한 플러그인 이름입니다. 예를 들어 /plugins/trout_emoji/images/trout-square.jpg와 같습니다.

정말 감사합니다. 이제 잘 작동합니다. 문제가 발생했던 이유는 경로에 있는 플러그인 이름이 폴더 이름이라고 생각했기 때문이었습니다 :slight_smile: