Contexto
Temos uma instância do Discourse hospedada na nuvem para a comunidade Ruby da Austrália (vou me referir a ela como Master). Duas vezes por ano, realizamos eventos do RailsCamp. É quando passamos um fim de semana inteiro juntos em um local remoto (50 a 150 pessoas por evento). Muitas vezes há pouca ou nenhuma recepção de celular, o que torna a coordenação desafiadora.
Estava pensando que uma instância do Discourse hospedada na rede local durante o evento seria ideal (vou me referir a ela como Slave). Poderíamos usá-la para publicar anúncios, cronogramas, compartilhar fotos etc.
Como já temos uma comunidade crescente no Master, seria ótimo aproveitar isso. Por exemplo, seu perfil já estaria configurado quando você chegasse ao evento, e você teria uma cópia de todo o conteúdo.
Desafio
Como manter a instância Slave do Discourse funcionando junto com a Master enquanto a Slave estiver offline por três dias?
Solução proposta
Entendo que o Discourse não foi projetado para isso. Mas acho que há uma maneira de atender às nossas necessidades. Estou interessado em suas ideias sobre isso.
O plano:
- Configuramos uma instância Slave do Discourse na rede local durante o evento.
- Imediatamente antes do evento, fazemos um backup do Master e o restauramos na Slave.
- Na Slave:
- Todas as categorias serão marcadas como somente leitura.
- Criamos uma nova categoria de leitura/gravação para o evento.
- Após o evento, usamos um script em Ruby para transferir informações da Slave para o Master:
- Novos usuários criados.
- Todos os tópicos e posts da categoria criada para o evento.
- Lucro.
Perguntas
- Você vê algum problema com a solução proposta?
- Você consegue visualizar uma abordagem melhor?
Seria ótimo permitir acesso de escrita a todas as categorias na Slave, mas sinto que o processo de sincronização poderia ser muito complicado. Além disso, isso poderia causar confusão, já que algumas pessoas ainda poderiam acessar o Master se tivessem recepção.
