Hmmmm. That’s a tricky one, because the symlink needed to be deleted, otherwise the Docker mount fails (as it cannot overwrite the existing file).
I had a bit of a google around for solutions, and found an interesting solution which would dereference the symlink and copy the symlink’s target into the specified directory, but couldn’t find anything that would create a Docker volume mount, thus preserving the dynamic link and bi-directional synchronisation. Happy to be steered towards a solution as this would be a neat feature to have.
Acabo de empezar con mi primer plugin pequeño Tengo algunas preguntas que espero que alguien pueda ayudar a resolver…
La primera pregunta es: ¿importa si usamos lo que está en esta guía o deberíamos realmente apuntar a usar el generador de plugins?
No se cubrió en esta guía, pero ¿cómo podemos hacer que los datos estén disponibles para nuestras plantillas desde el archivo plugin.rb?
Por ejemplo, digamos que quiero mostrar un mensaje de bienvenida aleatorio en el outlet topic-above-posts cada vez que alguien visita un tema, con el mensaje seleccionado aleatoriamente de un array en plugin.rb… ¿cómo enviaría esos datos a la plantilla? ¿La cual, supongo, iría aquí:
plugins/my_new_plugin/assets/javascripts/discourse/templates/connectors/topic-above-posts/my_new_plugin.hbs (¿Es esto correcto?)
Usar el generador de plugins es generalmente una excelente manera de empezar y ver cómo debe estar estructurado un plugin. Lo recomiendo.
Ahora, en cuanto a cómo llevar el código Ruby al frontend: son dos aplicaciones distintas. La aplicación del frontend (Ember) tendrá que solicitarlo al servidor (Rails) de alguna manera. Normalmente, esto se hace mediante una llamada AJAX, pero también podrías agregarlo al SiteSerializer para que se envíe automáticamente como parte de los datos del foro.
De lo contrario, tendrás que investigar cómo agregar una ruta/controlador en Rails y enviar los mensajes como JSON.
¿Sabes si hay algún tutorial sobre esto? ¿O hay algún plugin sencillo (o incluso un plugin de prueba) que podamos consultar para que nos oriente en la dirección correcta? (Si no, ¿podrías subirlo rápidamente para nosotros en algún lugar, por favor? Creo que ayudará a mucha gente )
Además… ¿tienes más ideas sobre escribir un libro? Si te apetece, puedo ponerte en contacto con alguien
Gracias por el cumplido, pero estoy definitivamente demasiado ocupado para considerar escribir un libro. Además, los libros técnicos tienen un alcance SUPER limitado. Quienes conozco que han escrito uno dicen que lo haces por ti mismo, no por el dinero
No puedo pensar en un plugin sencillo para devolver algo desde el lado del servidor. discourse-tooltips agrega una ruta y luego la utiliza para obtener vistas previas de los temas al pasar el ratón, así que eso podría ser útil.
¿Existe una lista de hooks donde realmente podamos insertar un plugin?
Por ejemplo, digamos que queremos escribir un plugin para procesar los datos cocinados (cooked) en una publicación antes de que se muestren; esperaríamos que hubiera al menos un hook al principio y otro al final, como (por ejemplo):
display_post_start
display_post_complex
Entonces, nuestro plugin se conectaría al código en la ubicación del hook de nuestra elección anterior.
¿Existe una lista de estos hooks de plugin y cómo se llaman estos hooks de plugin en DiscourseWorld?
Actualización: Encontré esto:
git grep "plugin-outlet" -- "*.hbs"
Pero no vi ningún outlet para modificar el contenido cocinado de una publicación.
¿Existe un tutorial sobre cómo crear nuestros propios outlets, por ejemplo, un outlet para modificar la parte cocinada de las publicaciones?
El esqueleto es compatible con Ember 5. Pero si añadiste algún código JavaScript o plantillas HBS, deberás comprobar las deprecaciones como se describe en el anuncio.
Sí, las cosas en package.json solo están relacionadas con el linting, no afectan la funcionalidad o compatibilidad de un plugin.
También agregaría una nota al usar la configuración de Docker, ya que las instrucciones anteriores fallarán con un error similar a
ambientimpact:~/.../Discourse/discourse$ d/rake plugin:create[neurocracy-date-rewrite]
Cloning 'https://github.com/discourse/discourse-plugin-skeleton' to '/src/plugins/neurocracy-date-rewrite'...
Initializing git repository...
Initialized empty Git repository in /src/plugins/neurocracy-date-rewrite/.git/
Author identity unknown
*** Please tell me who you are.
Run
git config --global user.email "you@example.com"
git config --global user.name "Your Name"
to set your account's default identity.
Omit --global to set the identity only in this repository.
fatal: empty ident name (for <discourse@localhost>) not allowed
rake aborted!
Command failed with exit 128: git
/src/lib/tasks/plugin.rake:354:in `system'
/src/lib/tasks/plugin.rake:354:in `block (2 levels) in <main>'
/src/lib/tasks/plugin.rake:344:in `chdir'
/src/lib/tasks/plugin.rake:344:in `block in <main>'
Tasks: TOP => plugin:create
(See full trace by running task with --trace)
Primero necesita configurar su .gitconfig dentro del contenedor (cambie el correo electrónico y el nombre según sea necesario) antes de intentar crear el complemento: