Scripting de reorganização de site: Qual o melhor local?

Tenho escrito um script, impulsionado por um arquivo YAML, para reorganizar um site Discourse. Isso ocorre porque estou planejando uma reorganização bastante massiva do meu maior site para torná-lo mais fácil de navegar, e nunca o farei se tentar fazer isso pela interface do usuário.

Meu script tem zero testes unitários e, embora eu seja um defensor geral de testes unitários e tenha sido por muito tempo, não estou motivado a escrever nenhum para este script.

O script é realmente um framework sobre o qual construir — nem todo mundo vai querer a mesma semântica que eu quero. Nesse sentido, é um pouco como alguns dos scripts de migração onde você espera que as pessoas provavelmente os modifiquem para se adequar.

Com essas restrições, vale a pena enviar um PR para isso? Ou as pessoas prefeririam que eu o postasse como um bloco de código, talvez em #documentation:sysadmin?

Eu principalmente quero ajudar qualquer outra pessoa que esteja tentando fazer algo semelhante. Além disso, as funções reais podem ajudar as pessoas a saber o que fazer no console do Rails.

3 curtidas

Não tenho ideia do que significa “reorganização do site”. Talvez postar partes em Operações em Massa Administrativas?

Eu não entendo “MSN”, mas no meu caso, o que estou fazendo inclui mover posts entre categorias, adicionar tags, alterar a hierarquia de posts, ocultar categorias, adicionar redirecionamentos… Algumas das tarefas estão cobertas em Ações em Massa Administrativas e outras não, mas em qualquer caso, tudo a partir de um único script.

Atualmente, no meu caso, são 112 ações. Eu não vou digitar isso em uma combinação de rails c e rake de um lado para o outro, potencialmente várias vezes por hora enquanto exploro diferentes reorganizações do meu site com a liderança do meu site.

A questão não é “como posso realizar isso?” — Eu já escrevi, embora pretenda continuar a melhorá-lo (por exemplo, provavelmente também farei com que ele escreva um log de auditoria completo e detalhado, algo que ele ainda não faz, mas que eu posso querer ter antes de realmente executar isso para o site ativo).

A questão é: qual a melhor forma de compartilhá-lo? Eu não vejo nada parecido no diretório scripts/ (embora talvez eu tenha perdido algo) e aprecio que os PRs normalmente devem vir com testes automatizados (embora eu não saiba o quão fortemente isso se aplica ao diretório scripts/). Ao mesmo tempo, já são mais de 150 linhas e crescendo, o que parece muito para compartilhar postando aqui, onde seria muito maior do que uma caixa de código.

Opa. Era “talvez” e não “MSN”. :person_shrugging:

Eu acho que você o posta no github e cria um link para ele — crie um tópico para ele ou adicione-o às operações em massa do administrador.

2 curtidas

Criá-lo como um projeto independente no GitHub é a melhor forma de seguir em frente. Certifique-se também de criar um tópico sobre a ferramenta aqui no Meta para que as pessoas possam encontrá-la.

4 curtidas

Sim, eu definitivamente quero que as pessoas consigam encontrá-lo!

Eu comecei com:

require_relative "../config/environment"

para que funcionasse quando colocado no diretório de scripts. Existe um padrão comum para tê-lo fora do diretório do discourse? (Eu não vejo nada em .gitignore como o padrão de plugins para baixar coisas que não sejam plugins dentro de um checkout.)

Se não houver, posso apenas dizer “copie para scripts/” como as instruções de instalação, mas só quero saber se há algo que eu possa fazer para me encaixar melhor.

Temos um projeto que usa uma configuração 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 curtidas

Obrigado! Sempre facilita para que outros se encaixem em um padrão existente!

Vou empacotar e postar em #documentation:sysadmin com informações mais concretas assim que estiver implementado.

2 curtidas

Talvez essa tenha sido a categoria errada; foi para moderação.

Deveria ter postado aqui em Dev em vez disso?

Eu aprovei para você.

3 curtidas

Muito obrigado @Stephen!

Para quem chegar aqui em vez de lá no futuro:

2 curtidas