macOSへのインストールで失敗:Scheduler::Deferは一時停止と再開が可能

Install Discourse on macOS for development の手順に従ってきましたが、以下のコマンドで仕様の実行中にエラーが発生してしまいました。

bundle exec rake autospec
Failures:

  1) Scheduler::Defer can pause and resume
     Failure/Error: @reactor&.stop
     
     ThreadError:
       killed thread
     # /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 can pause and resume

当初は、ガイドのインストールスクリプトを実行して依存関係のインストール時にいくつかの問題に直面しましたが、現在はすべて解決したと考えています。

この問題をどのように解決すればよいでしょうか?

よろしくお願いいたします。

ローカルインストールの目的
関連するかどうかはわかりませんが、私は Google グループからホスト版の Discourse へ移行しようとしています。その手順は こちら を参照しています。ホスト版に root アクセスがないため、ローカル環境で移行作業を行い、その後バックアップをホスト版にアップロードすることを計画しています。

このガイドは Docker ベースの環境を前提としています。macOS に Docker をインストールし、ガイドのすべての手順に従うことが可能です。

@gerhard さん、ありがとうございます。

Discourse のサポートチームからメールで macOS ガイドをオプションとして紹介されました。ただし、同時に「Docker を使用した Discourse 開発環境のインストールに関する初心者ガイド」も案内されました。

とにかく最も迅速に作業を進めたいと考えています。DigitalOcean の料金も確認しましたが、予想よりもずっと手頃な価格のようです。

最も速く、簡単な方法はどれだとお勧めですか?

よろしくお願いいたします。

macOS で Docker のインストールに問題がある場合は、DigitalOcean が最も簡単でしょう。動作も確実で、短時間のみの利用であれば、非常にリーズナブルです。

ありがとうございます。

ガイド に記載されている macOS 用の 2 つのオプションをどちらも試してみましたが、問題が発生しました。ガイドの下にコメントを残しましたが、結局断念しました。次は DigitalOcean で試してみます。

その Ruby はあまりに古すぎます。最新のものを使うことをお勧めします。

ありがとうございます。それは興味深いですね。ガイドのインストールスクリプトは具体的に 2.6.5 をインストールするようになっていますが、なぜ 2.2.1 が表示されるのか全くわかりません。

手動で rbenv install 2.6.5(インストールスクリプトが行うことと同じ)を実行すると、以下が表示されます:

rbenv: /Users/js/.rbenv/versions/2.6.5 already exists

一方、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': Could not find 'bundler' (2.1.1) required by your /Users/js/Documents/Aktuelle-Projekte/Openframe/discourse/Gemfile.lock. (Gem::GemNotFoundException)

To update to the latest version installed on your system, run `bundle update --bundler`.

To install the missing version, run `gem install bundler:2.1.1`

… rvm のバージョンには触れないほうがいいのでしょうか?それとも何か見落としているのでしょうか?

…その間、Digital Ocean で動作させることができました。他のすべての方法は、私にとって何かしらの理由で失敗しました。

おそらく今は問題ではないと思いますが、rvm use を使って Ruby のバージョンを指定できます。

rvm use 2.6.5 --default