Reorganización del sitio con scripting: ¿Cuál es el mejor lugar?

He estado escribiendo un script, impulsado por un archivo YAML, para reorganizar un sitio de Discourse. Esto se debe a que estoy planeando una reorganización bastante masiva de mi sitio más grande para que sea más fácil de navegar, y nunca lo llevaré a cabo si intento hacerlo a través de la interfaz de usuario.

Mi script tiene cero pruebas unitarias, y aunque soy un defensor general de las pruebas unitarias y lo he sido durante mucho tiempo, no estoy motivado para escribir ninguna para este script.

El script es realmente un marco sobre el cual construir; no todos querrán la misma semántica que yo. En ese sentido, es algo así como algunos de los scripts de migración donde se espera que la gente probablemente los modifique para adaptarlos.

Con esas restricciones, ¿vale la pena enviar una PR? ¿O la gente preferiría que lo publicara como un bloque de código, tal vez en #documentation:sysadmin?

Principalmente quiero ayudar a cualquiera que esté intentando hacer algo similar. Además, las funciones reales podrían ayudar a la gente a saber qué hacer en la consola de Rails.

3 Me gusta

No tengo idea de qué significa “reorganización del sitio”. ¿Quizás publicar fragmentos en Operaciones masivas administrativas?

No entiendo “MSN”, pero en mi caso, lo que estoy haciendo incluye mover publicaciones entre categorías, agregar etiquetas, cambiar la categoría principal de las publicaciones, ocultar categorías, agregar redirecciones… Algunas de las tareas están cubiertas en Acciones Masivas Administrativas y otras no, pero en cualquier caso, todo desde un único script.

Actualmente, en mi caso, son 112 acciones. No voy a escribir eso en una combinación de rails c y rake de un lado a otro, potencialmente varias veces por hora mientras exploro diferentes reorganizaciones de mi sitio con mi equipo directivo.

La pregunta no es “¿cómo puedo lograr esto?” — ya lo he escrito, aunque tengo la intención de seguir mejorándolo (por ejemplo, probablemente también haré que escriba un registro de auditoría completo y detallado, algo que aún no hace pero que podría querer tener antes de ejecutar esto realmente para el sitio en vivo).

La pregunta es: ¿cuál es la mejor manera de compartirlo? No veo nada parecido en el directorio scripts/ (aunque tal vez me haya perdido algo) y aprecio que los PR normalmente deberían venir con pruebas automatizadas (aunque no sé cuán fuertemente se aplica esto al directorio scripts/). Al mismo tiempo, ya tiene más de 150 líneas y sigue creciendo, lo que parece mucho para compartir publicándolo aquí, donde sería mucho más grande que un cuadro de código.

Ups. Era “tal vez” y no “MSN”. :person_shrugging:

Creo que deberías publicarlo en GitHub y enlazarlo, ya sea creando un tema para ello o añadiéndolo a las operaciones masivas de administración.

2 Me gusta

Crearlo como un proyecto independiente de GitHub es la mejor manera de avanzar. Asegúrate también de crear un tema sobre la herramienta aquí en Meta para que la gente pueda conocerla.

4 Me gusta

¡Sí, definitivamente quiero que la gente pueda encontrarlo!

Comencé con:

require_relative "../config/environment"

para que funcione cuando se coloca en el directorio de scripts. ¿Existe un patrón común para tenerlo fuera del directorio de discourse? (No veo nada en .gitignore como el patrón de plugins para extraer cosas que no sean plugins dentro de una extracción).

Si no, puedo simplemente decir “cópialo en scripts/” como instrucciones de instalación, pero solo quiero saber si hay algo que pueda hacer para encajar mejor.

Tenemos un proyecto que utiliza una configuración como:\n\n```
cd /var/www/discourse/script
git clone https://github.com/user/discourse-config-tool.git
cd ..
bundle exec ruby script/discourse-config-tool/app.rb

3 Me gusta

¡Gracias! ¡Siempre facilita que otros se ajusten a un patrón existente!

Lo empaquetaré y publicaré en #documentation:sysadmin con información más concreta una vez que esté implementado.

2 Me gusta

Quizás esa fue la categoría incorrecta; se envió a moderación.

¿Debería haberlo enviado aquí en Dev en su lugar?

Lo he aprobado por ti.

3 Me gusta

¡Muchas gracias @Stephen!

Para cualquiera que busque aquí en lugar de allí en el futuro:

2 Me gusta