Resumindo a jornada (muito mais longa que este post)
:
NOTA: Usei uma distribuição Kubuntu rodando em máquina virtual para o processo, então, por favor, tenha em mente que pode não ser o mesmo em sistemas operacionais ou até mesmo distribuições diferentes.
0. Instalando o ambiente de desenvolvimento do Discourse
Seguindo este post e executando este script vinculado no post usando
`bash <(wget -qO- https://raw.githubusercontent.com/discourse/install-rails/master/linux)`
conforme descrito lá, mais clonando as fontes
git clone https://github.com/discourse/discourse.git ~/discourse
1. Preparando o banco de dados MySQL
Obtenha um dump do banco de dados mybb original conforme descrito no topo do thread:
$ mysqldump -u USER_NAME -p DATABASE_NAME > mybb_dump.sql
e copie/mova-o para o ambiente de desenvolvimento recém-configurado.
Instale o servidor MySQL
$ sudo apt-get install mysql-server
A autenticação para o mysql mudou em versões mais recentes. Você tem que ser root no host se quiser ser root no mysql atualmente, então
$ sudo mysql
em vez de
$mysql -u root
Claro, você tem que ser um “sudoer” (administrador) primeiro
$ sudo mysql
mysql> CREATE DATABASE mybb;
mysql> SHOW DATABASES;
mysql> CREATE USER 'nonrootuser'@'localhost' IDENTIFIED BY 'password';
mysql> GRANT ALL PRIVILEGES ON mybb.* TO 'nonrootuser'@'localhost';
mysql> quit
$ mysql -unonrootuser -ppassword mybb < mybb_dump.sql
<aqui você recebe um aviso sobre fornecer a senha na linha de comando não ser uma coisa inteligente a fazer>
$ sudo mysql
mysql> USE mybb;
mysql> SHOW TABLES;
<aqui verifique se todas as tabelas estão presentes - veja o post original>
mysql> quit
2. Instalar gems do Ruby
Verificando o Gemfile nas fontes atuais revela que
$ echo "gem 'mysql2', require: false" >> Gemfile
não é realmente necessário. É suficiente definir a variável de ambiente IMPORT como 1.
O que é necessário, no entanto, são os arquivos de desenvolvimento para clientes MySQL, que é o que a primeira linha abaixo trata
$ sudo apt-get install libmysqlclient-dev
$ cd ~/discourse
$ IMPORT=1 bundle install
2. Preparar o Discourse (banco de dados PostgreSQL)
$ bundle exec rails db:drop
$ bundle exec rails db:create
$ bundle exec rails db:migrate
$ export DB_PW="password"
$ export DB_USER="nonrootuser"
3. Executar a importação real
A próxima linha corrige uma chamada de método muito obsoleta e atualmente já removida no script de importação mybb.rb, que ainda está lá no momento da escrita e não mudará nada se isso já foi corrigido
$ sed -i.original 's/File.exists?/File.exist?/' script/import_scripts/mybb.rb
Agora verifique se o Redis ainda está em execução. O script de instalação do Rails o inicia, mas não o habilita como um serviço permanente, então ele não sobrevive a reinicializações, falhas, o que for, etc.
$ ps -aux |grep redis
silverdr 2808 0.3 0.3 89972 14512 ? Ssl 05:25 2:04 redis-server *:6379
[… ]
Se você não vir nada como a linha acima, execute
$ redis-server --daemonize yes
que é exatamente o mesmo comando que o script de instalação do Rails acima usou na primeira vez ao instalar.
Finalmente
e
$ IMPORT=1 bundle exec ruby script/import_scripts/mybb.rb
Se neste momento o script não parou com YAE (Yet Another Error - Mais Um Erro), então é hora de abrir aquela garrafa ![]()
Algumas coisas permanecem
- OK - então a única parte óbvia que falta são as senhas dos usuários. Aparentemente, mesmo que ambos os aplicativos armazenem hash e salt, a julgar pelo comprimento desses hashes, “mybb” usa um algoritmo de hash mais antigo. Portanto, isso é compreensível e não um impedimento. Todos deveriam ser capazes de redefinir sua senha na primeira vez.
- Algumas coisas de bbcode não são convertidas. Eu tenho, por exemplo, problemas com blocos de código, que têm algumas tags ao redor deles definindo a fonte monospaced Courier e o que mais. Não tenho mais energia para tentar automatizar mais essa coisa. Se você conseguir fazer algo a respeito, por favor, me/nos informe aqui!
