(主要编辑如下——第二次尝试)
正在处理消息导入流程,参考了 Migrate from another forum to Discourse 上的说明。据我理解,流程应该是:
- 按照 Install Discourse on Ubuntu or Debian for Development 的指南设置开发环境
- 在该系统上安装 MongoDB
- 在该系统上,使用与运行 Discourse 相同的非特权用户,
git cloneyahoo-group-export 脚本 - 以同一用户身份,执行
gem install mechanize和gem install mongo。然后编辑 .config.yaml 文件,填入 Yahoo 凭证和群组名称,接着运行ruby bin/yg-export.rb。 - 喝上一杯(或两杯)你喜欢的饮品。
- 待 yg-export 完成后,在 Discourse 目录下查看
script/import_scripts/yahoogroup.rb。将其中的 MONGODB_HOST 修改为正确的地址(localhost)。 - 在 discourse 目录下运行
bundle exec ruby script/import_scripts/yahoogroup.rb - 验证导入是否正确
- 备份并恢复到线上服务器
步骤 2 至 4 是推断得出的。但上述步骤看起来正确吗?我认为是正确的,于是便继续操作。前四步运行顺利——yg-export.rb 运行了大约一小时,报告所有操作均成功,并导入了约 38,000 条消息。此时 syncro 数据库已存在,其中包含约 85MB 的数据。在那之后,我对虚拟机进行了快照。
不过,我在导入脚本上遇到了问题。当我运行 bundle exec ruby script/import_scripts/yahoogroup.rb 时,出现以下错误:
dan@ubuntu:~/discourse$ bundle exec ruby script/import_scripts/yahoogroup.rb
Traceback (most recent call last):
script/import_scripts/yahoogroup.rb: Bootsnap::LoadPathCache::FallbackScan
7: from script/import_scripts/yahoogroup.rb:4:in `<main>'
6: from /home/dan/.rbenv/versions/2.6.2/lib/ruby/gems/2.6.0/gems/zeitwerk-2.1.10/lib/zeitwerk/kernel.rb:23:in `require'
5: from /home/dan/.rbenv/versions/2.6.2/lib/ruby/gems/2.6.0/gems/bootsnap-1.4.4/lib/bootsnap/load_path_cache/core_ext/kernel_require.rb:26:in `require'
4: from /home/dan/.rbenv/versions/2.6.2/lib/ruby/gems/2.6.0/gems/bootsnap-1.4.4/lib/bootsnap/load_path_cache/core_ext/kernel_require.rb:40:in `rescue in require'
3: from /home/dan/.rbenv/versions/2.6.2/lib/ruby/gems/2.6.0/gems/bootsnap-1.4.4/lib/bootsnap/load_path_cache/core_ext/kernel_require.rb:21:in `require_with_bootsnap_lfi'
2: from /home/dan/.rbenv/versions/2.6.2/lib/ruby/gems/2.6.0/gems/bootsnap-1.4.4/lib/bootsnap/load_path_cache/loaded_features_index.rb:89:in `register'
1: from /home/dan/.rbenv/versions/2.6.2/lib/ruby/gems/2.6.0/gems/bootsnap-1.4.4/lib/bootsnap/load_path_cache/core_ext/kernel_require.rb:22:in `block in require_with_bootsnap_lfi'
/home/dan/.rbenv/versions/2.6.2/lib/ruby/gems/2.6.0/gems/bootsnap-1.4.4/lib/bootsnap/load_path_cache/core_ext/kernel_require.rb:22:in `require': cannot load such file -- mongo (LoadError)
奇怪,我以为我已经安装了 mongo gem。好吧,我再装一次:
dan@ubuntu:~/discourse$ gem install mongo
Successfully installed mongo-2.10.2
Parsing documentation for mongo-2.10.2
Done installing documentation for mongo after 4 seconds
1 gem installed
再次运行导入脚本,结果相同。是否需要在系统级别安装呢?
dan@ubuntu:~/discourse$ sudo apt install ruby-mongo
[sudo] password for dan:
Reading package lists... Done
Building dependency tree
Reading state information... Done
ruby-mongo is already the newest version (2.5.1-1).
0 upgraded, 0 newly installed, 0 to remove and 0 not upgraded.
真是越来越奇怪了……