在 macOS 上安装失败:Scheduler::Defer 可以暂停和恢复

我一直关注着 https://meta.discourse.org/t/beginners-guide-to-install-discourse-on-macos-for-development/15772。不幸的是,我在使用以下命令运行测试规范(specs)时遇到了失败:

bundle exec rake autospec
失败:

  1) Scheduler::Defer 可以暂停和恢复
     失败原因:@reactor&.stop
     
     ThreadError:
       线程被终止
     # /Users/js/.rvm/gems/ruby-2.2.1/gems/message_bus-2.2.3/lib/message_bus/timer_thread.rb:48:in `wakeup'
     # /Users/js/.rvm/gems/ruby-2.2.1/gems/message_bus-2.2.3/lib/message_bus/timer_thread.rb:48:in `block in stop'
     # /Users/js/.rvm/gems/ruby-2.2.1/gems/message_bus-2.2.3/lib/message_bus/timer_thread.rb:46:in `synchronize'
     # /Users/js/.rvm/gems/ruby-2.2.1/gems/message_bus-2.2.3/lib/message_bus/timer_thread.rb:46:in `stop'
     # ./lib/scheduler/defer.rb:56:in `stop!'
     # ./spec/components/scheduler/defer_spec.rb:44:in `block (2 levels) in <main>'

完成于 9 分钟 53 秒(文件加载耗时 25.84 秒)
共 6460 个示例,1 个失败,4 个挂起

失败的示例:

rspec ./spec/components/scheduler/defer_spec.rb:67 # Scheduler::Defer 可以暂停和恢复

最初,我在运行指南中的安装脚本来安装依赖项时遇到了一些问题。不过我认为这些问题现在应该都已解决。

我该如何解决这个问题?

谢谢!

本地安装的目的
如果这相关的话:我试图根据本指南从 Google Group 迁移到托管版的 Discourse。我的想法是先搭建一个本地版本,在本地完成迁移,然后将备份上传到托管版本,因为我没有托管版本的 root 访问权限。

该指南假设你使用的是基于 Docker 的部署方案。你应该可以在 macOS 上安装 Docker,然后按照该指南中的每一步操作。

谢谢,@gerhard

Discourse 支持团队在邮件中提到了 macOS 指南作为一个选项。但他们也推荐了这篇 使用 Docker 安装 Discourse 进行开发的初学者指南。我主要是想以最快捷的方式完成工作。刚刚查看了 DigitalOcean 的定价,发现比我预期的要实惠得多。

您推荐哪种方式最快、最容易?

谢谢!

如果你在 macOS 上安装 Docker 遇到困难,DigitalOcean 可能是最简单的选择。它运行稳定,而且考虑到你只需要短时间使用 droplet,价格相当实惠。

谢谢。

我刚刚尝试了在 macOS 上使用指南中的两种选项,但都遇到了问题。我已在指南下方留言,但最终放弃了。接下来我会尝试 DigitalOcean。

那个 Ruby 版本太旧了。你可能想试试使用最新版本。

谢谢。不过这很有趣。指南中的安装脚本明确安装了 2.6.5 版本。我不明白为什么会出现 2.2.1。

当我手动执行 rbenv install 2.6.5(正如安装脚本所做的那样)时,会输出:

rbenv: /Users/js/.rbenv/versions/2.6.5 已存在

另一方面,ruby -v 输出的是:

ruby 2.7.0p0 (2019-12-25 revision 647ee6f091) [x86_64-darwin17]

我本以为日志显示使用的是 rvm。所以 rvm list 输出:

=* ruby-2.2.1 [ x86_64 ]
   ruby-2.5.0 [ x86_64 ]

于是我执行了 rvm install "ruby-2.6.5",并再次尝试 bundle exec rake autospec。现在输出:

Traceback (most recent call last):

2: from /Users/js/.rvm/rubies/ruby-2.6.5/bin/bundle:23:in `<main>'

1: from /Users/js/.rvm/rubies/ruby-2.6.5/lib/ruby/2.6.0/rubygems.rb:302:in `activate_bin_path'

/Users/js/.rvm/rubies/ruby-2.6.5/lib/ruby/2.6.0/rubygems.rb:283:in `find_spec_for_exe': 无法找到你的 /Users/js/Documents/Aktuelle-Projekte/Openframe/discourse/Gemfile.lock 所需的 'bundler' (2.1.1) 版本。(Gem::GemNotFoundException)

要更新到系统上已安装的最新版本,请运行 `bundle update --bundler`。

要安装缺失的版本,请运行 `gem install bundler:2.1.1`

……看起来我不应该修改 rvm 版本?还是我漏掉了什么?

……与此同时,我已经在 Digital Ocean 上成功部署并运行起来了。其他所有方法对我来说不知为何都失败了。

现在几乎可以肯定不是这个问题,但你可以使用 rvm use 来指定 Ruby 版本。

rvm use 2.6.5 --default