我一直关注着 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 访问权限。
gerhard
(Gerhard Schlager)
2
该指南假设你使用的是基于 Docker 的部署方案。你应该可以在 macOS 上安装 Docker,然后按照该指南中的每一步操作。
谢谢,@gerhard。
Discourse 支持团队在邮件中提到了 macOS 指南作为一个选项。但他们也推荐了这篇 使用 Docker 安装 Discourse 进行开发的初学者指南。我主要是想以最快捷的方式完成工作。刚刚查看了 DigitalOcean 的定价,发现比我预期的要实惠得多。
您推荐哪种方式最快、最容易?
谢谢!
gerhard
(Gerhard Schlager)
4
如果你在 macOS 上安装 Docker 遇到困难,DigitalOcean 可能是最简单的选择。它运行稳定,而且考虑到你只需要短时间使用 droplet,价格相当实惠。
谢谢。
我刚刚尝试了在 macOS 上使用指南中的两种选项,但都遇到了问题。我已在指南下方留言,但最终放弃了。接下来我会尝试 DigitalOcean。
Falco
(Falco)
6
那个 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 上成功部署并运行起来了。其他所有方法对我来说不知为何都失败了。
Stephen
(Stephen)
9
现在几乎可以肯定不是这个问题,但你可以使用 rvm use 来指定 Ruby 版本。
rvm use 2.6.5 --default