¿Cómo ejecutar código del lado del servidor al hacer clic en un botón?

¿Cómo puedo hacer algo como,
Cuando hago clic en un botón personalizado, quiero ejecutar código del lado del servidor.

Por ejemplo, al hacer clic en un botón, quiero ejecutar el archivo Jobs/Secheduled/test_job.rb

¿O puedo ejecutar el código dentro de este archivo cuando alguien visita la URL admin/plugins/my-plugin?

Soy principiante en el desarrollo de plugins de Discourse y realmente me cuesta hacer algo como esto. Cualquier ayuda será muy apreciada.

Entonces necesitarás hacer una solicitud Ajax a un punto final que ejecute ese código.

¿Puedes decir más sobre lo que quieres que suceda en el lado del servidor?

Quiero ejecutar el código dentro del archivo Jobs/Secheduled/test_job.rb

O también se puede decir que quiero ejecutar un trabajo cron.

¿Podrías mostrarme un ejemplo de código de cómo puedo hacer una solicitud ajax a un endpoint y ejecutar el código dentro del archivo?

Todavía estás describiendo tu solución y no el problema que estás resolviendo. ¿Qué quieres hacer en ese archivo? Puede haber una mejor manera de activarlo. Saber eso también facilitará la sugerencia de algo similar.

El plugin de suscripción agrega un endpoint, así que podrías mirar eso. Necesitarás agregar una ruta en Rails y luego en Ember agregar una acción a tu botón que la llame.

Tengo un usuario con una gran cantidad de publicaciones. Quiero eliminar todas las publicaciones de ese usuario. El botón predeterminado para eliminar todas las publicaciones genera un error 503. Así que escribí un código para programar un trabajo cron para que se ejecute cada 2 minutos y elimine 100 publicaciones a la vez.

Simplemente ejecútalo en la consola de Rails y no escribas un plugin.

3 Me gusta

Utiliza las características del lenguaje y haz lo que sugiere @pfaffman. Escribir un hook de front-end a medida para lograr esto es exagerado.

Ver: ActiveRecord::Batches

No estoy familiarizado con Rails. ¿Puedes mostrarme el comando para eliminar publicaciones de ese usuario?

1 me gusta

Puedes intentar buscar PostDestroyer

Sí, lo eres, pero hay muchos usuarios como ese en el sitio. Y mi cliente no es una persona técnica, ¿cómo lo hará? Necesito escribir un plugin ya que el cliente me está insistiendo.

Y también el problema puede surgir en otros sitios de foros. Realmente necesitamos echar un vistazo al problema que estoy enfrentando. Podemos hacer mejoras en la función de eliminación de publicaciones predeterminada en futuras actualizaciones.

13 publicaciones se fusionaron en un tema existente: Estoy recibiendo un error 502 al intentar eliminar temas creados por un usuario específico