Como era de se esperar, ele não apareceu na interface gráfica. Mas quais são os passos mínimos? Preciso adicionar dados a mais tabelas ou há algum reinício necessário?
Agora, espero que alguém diga que esta não é a maneira correta de fazer as coisas, e eu entendo isso. Mas, no meu caso, pode ser a solução adequada, conforme explicarei abaixo (algumas de minhas suposições podem estar incorretas, mas este é o meu entendimento):
Todos os scripts de importação que trazem dados de outro fórum baseado em banco de dados esperam conseguir se conectar ao outro fórum a partir da instância do Discourse. No entanto, conseguir acessar o outro fórum (jforum) a partir da instância em produção do Discourse será difícil, senão impossível. Da mesma forma, tentar instalar um ambiente de desenvolvimento do Discourse onde reside o fórum antigo (servidor muito antigo) também não é possível.
Não entendo Ruby on Rails, então não consigo modificar os scripts existentes, mas entendo SQL.
Poderia usar a API (tenho apenas 5.000 usuários), mas quero ser capaz de usar um plugin/método que mantenha o hash de senha MD5, em vez de exigir que todos os usuários redefinam suas senhas. Portanto, acho que não consigo fazer isso usando a API.
Existe um script de importação para jforum, então posso usá-lo para verificar o SQL necessário para extrair dados do jforum sem problemas, para depois colocá-los em arquivos CSV e carregá-los no banco de dados.
Os importadores em massa talvez ofereçam uma maneira de inserir SQL diretamente no Discourse, mas estou com dificuldade para identificar o SQL exato.
Parece que o ponto chave é conseguir importar os usuários; depois disso, adicionar categorias, tópicos e posts não deve ser tão difícil.
A probabilidade de você acabar com um banco de dados corrompido é bastante alta. E então ninguém poderá ajudá-lo.
Faça um dump do seu banco de dados e restaure-o no seu servidor Discourse local (ou em qualquer lugar onde ele possa se conectar — já fiz importações maiores com um banco de dados remoto através da minha conexão doméstica de internet) e, em seguida, execute o script existente.
Será muito mais fácil usar Ruby que você não entende do que entendê-lo bem o suficiente para descobrir como escrever o SQL. Eu aprendi Ruby muito tempo depois de escrever meu primeiro importador.
Isso é um pouco condescendente!
Se o script de importação em massa está executando SQL (como eu acho que está), documentar o SQL necessário para criar um usuário não é realmente mais perigoso do que tentar usar um script de importação em massa. E, como atualmente tenho uma instalação padrão do Discourse, não faria muita diferença se algo desse errado.
Acredito que tenho muitos mais anos de experiência em desenvolvimento do que você.
O que não tenho muita experiência são todas as tarefas de administração, e minha primeira tentativa de instalar um servidor Discourse local abriu uma lata de vermes. Se não conseguir me conectar ao meu servidor MySQL do JForum a partir do meu servidor Discourse, vou ter que instalar o MySQL também e transferir o banco de dados. O script existente do JForum não está incluído na árvore de código-fonte principal, e estou em uma versão muito antiga do JForum, então não espero que funcione.
Às vezes, conselhos gratuitos de alguém que trabalha em tempo integral com o Discourse há mais de três anos, realizou dezenas de importações e escreveu vários importadores do zero valem o que você pagaria por eles.
Obrigado, tenho algumas perguntas com as quais espero que você possa me ajudar.
Instalação
Execute bundle exec rake plugin:install repo=http://github.com/[Communiteq](https://www.communiteq.com) (anteriormente DiscourseHosting)/discourse-migratepassword no seu diretório do Discourse
Reinicie o Discourse
Eu o instalei, mas como faço para reiniciar o Discourse?
Como inserir o campo personalizado? Você pode fornecer o SQL ou isso pode ser feito via API com a parte "user_fields[1]": "string"". Atualmente, consigo criar usuários programaticamente via API, mas estou ignorando esse campo por enquanto.
Se você tiver o plugin instalado, o valor da senha passado como parte da chamada de criação de usuário via API é irrelevante?
não, ele prevalecerá sobre o resumo MD5 no campo personalizado.
As respostas às outras duas perguntas podem ser facilmente encontradas neste fórum. Se quiser economizar tempo, podemos realizar a importação e/ou hospedagem para você como um serviço pago.
Fiz a busca por ambas as respostas, mas não consegui encontrar. No primeiro caso, é confuso que algumas instalações sejam feitas editando o arquivo YAML e depois reiniciando o Docker, enquanto outras, como esta, parecem ser instaladas dentro do contêiner do Docker. Não está claro o que
Adoro pensar junto, inovar e contribuir. Mas também preciso ganhar a vida, o que significa que preciso traçar um limite em algum lugar. E tento traçá-lo onde começo a sentir que estou trabalhando em vez de inovar, contribuir e pensar junto.
Pesquisar a consulta SQL para um campo personalizado de usuário é trabalho para mim e, como você é um desenvolvedor experiente, estimo que você também consiga resolver isso
OK, pergunta 2: um exemplo de adição de um campo personalizado import_pass para user_id 5 (o user_id pode ser visto na tabela user_emails ou no id da tabela users)
Ok, encontrei. ./launcher restart app
mas parece que não está reiniciando. Consigo entrar no app e conectar ao banco de dados, mas não consigo acessar o site. Talvez eu precise apenas reconstruir e começar de novo.
Então, executei ./launcher rebuild app e agora tudo voltou ao normal e está funcionando.
Eu pensei que isso recriaria o banco de dados, mas não foi o caso. Acho que isso acontece porque o banco de dados real está persistindo fora do Docker e o rebuild apenas reconstrói o aplicativo do Docker. Também notei que o plugin dataexplorer que adicionei (modificando o arquivo YAML) ainda está lá. Mas e o plugin passwordmigration? Ele está lá ou é apagado pelo rebuild? Definitivamente, não há nada na seção de plugins da página de administração.
Certo, tentei instalar o passwordmigration e depois executei o restart novamente. Mais uma vez, meu site caiu. Parece que o passwordmigration está quebrando algo?
Então, reconstruí novamente e consegui fazê-lo funcionar (mas agora o plugin passwordmigration sumiu). Se eu executar ./launcher restart app sem instalar o passwordmigration primeiro, ele reinicia normalmente. Então, parece ser um problema específico com o passwordmigration na minha configuração.
Da última vez que tentei, o plugin passwordmigration era incompatível com a execução de uma importação, então você deverá instalá-lo após realizar a importação.
Pode ser que ele esteja causando problemas na sua reconstrução, mas isso seria bastante surpreendente, já que Richard o utiliza em sua hospedagem. Recomendo que você o instale no app.yml, assim como fez com o data explorer, após concluir a importação.
Estranho: deletei o banco de dados e executei ./discourse-setup, então tive uma instalação totalmente nova, tudo certo.
Instalei o migrationpassword com rake e reiniciei; novamente o site falhou com erro 502!
O plugin DataExplorer ainda existia, então o removi, reconstruí, ok, depois reinstalei o migrationpassword e falhou com erro 502 novamente.
Tão confuso, pois claramente funciona para outros, mas não funciona na minha instalação padrão.
Vou tentar instalar editando o arquivo app.yml na próxima.
(As compras de Natal atrapalharam), mas finalmente tentei instalar o migratepassword editando o app.yml, reconstruindo e… funcionou!
Mas a opção bundle exec rake plugin:install repo=http://github.com/[Communiteq](https://www.communiteq.com) (anteriormente DiscourseHosting)/discourse-migratepassword não funciona na minha instalação padrão. Talvez seja necessário verificar/remover isso no README.md em GitHub - communiteq/discourse-migratepassword: Support migrated password hashes · GitHub