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.
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.
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.
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