Creo que lo que te falta es añadirlo al enrutamiento de Rails.
Algo como esto en plugin.rb.
JbTest::Engine.routes.draw do
get "/hello" => "jbtest#index"
end
Aquí tienes un comienzo. La otra cosa que debes hacer es ir a GitHub - discourse/all-the-plugins y mirar allí. Sin embargo, ahora que tantos se han añadido al núcleo, supongo que podrías mirar allí para ver ejemplos de cómo se añaden a la ruta de Rails.
Ruta de plugin personalizada mínima para DiscourseAI
pfaffman:
¿Qué se necesita para añadir una ruta a Discourse rails?
¿Puedes darme una prueba de concepto mínima que incluya un plugin.rb, un controlador y las cosas necesarias para añadir la ruta a rails?
DiscourseHelper:
Buscando
Buscando: Cómo añadir una ruta personalizada a Discourse usando un plugin, incluyendo un ejemplo mínimo con plugin.rb, controlador personalizado y el código necesario para registrar la ruta de Rails.
Leyendo
Leído: Desarrollo de plugins de Discourse - Parte 1 - Crear un plugin básico
Buscando
Buscando: Prueba de concepto mínima para añadir una ruta personalizada de Rails en un plugin de Discourse que incluya plugin.rb, implementación del controlador y código para registrar la ruta.
Leyendo
Leído: Creación de rutas en Discourse y visualización de datos
Leyendo
Leído: Añadir rutas de usuario personalizadas usando plugins
Leyendo
Leído: Añadir un controlador ruby a través de un plugin
Aquí tienes una prueba de concepto mínima para añadir una ruta personalizada de Rails a Discourse a través de un plugin, incluyendo los archivos clave que necesitarás: plugin.rb, un controlador y el código para registrar la ruta.
Puntos clave
- La mejor práctica es utilizar un “engine” de Rails dentro de tu plugin para aislar tus controladores y rutas.
- Debes requerir explícitamente tu controlador en
plugin.rb.
- Para registrar una nueva ruta, utilizas el método
routes.draw del engine y montas el engine en las rutas principales de la aplicación.
Ejemplo mínimo
plugin.rb
# name: my-custom-route
# about: Añade una ruta personalizada a través de un engine de Rails en un plugin
# version: 0.1
# authors: Tu Nombre
after_initialize do
module ::MyPlugin
class Engine < ::Rails::Engine
engine_name "my_plugin"
isolate_namespace MyPlugin
end
end
require_dependency File.expand_path('../app/controllers/my_plugin/my_controller.rb', __FILE__)
MyPlugin::Engine.routes.draw do
get "/hello" => "my#hello"
end
Discourse::Application.routes.append do
mount ::MyPlugin::Engine, at: "/my_plugin"
end
end
app/controllers/my_plugin/my_controller.rb
module MyPlugin
class MyController < ::ApplicationController
def hello
render plain: "¡Hola desde mi plugin!"
end
end
end
Cómo funciona:
GET /my_plugin/hello devolverá la respuesta de texto plano "¡Hola desde mi plugin!".
Estructura de directorios requerida:
plugins/
my-custom-route/
plugin.rb
app/
controllers/
my_plugin/
my_controller.rb
Para más detalles y ejemplos ampliados, consulta:
Esta prueba de concepto te ayudará a añadir un punto final personalizado simple a tu instancia de Discourse a través de un plugin. Si tienes preguntas sobre cómo integrar esto con el lado de Ember/JS, ¡házmelo saber!