[Rails7] Guard LiveReload セットアップ時のエラー対処法 (Unable to load the EventMachine C extension)

たまにRailsを使う程度の技術知識によるトラブルシュートナレッジ・備忘録です。Rails界隈の最新トレンドへ必ずしも追従しているものではありませんので注意してください。

Railsで開発中にコードの変更があったタイミングでブラウザを描画し直してくれるライブラリ LiveReload をセットアップしようとしたときに以下のエラーが発生しました。

❯ bundle exec guard init livereload
Unable to load the EventMachine C extension; To use the pure-ruby reactor, require 'em/pure_ruby'
00:37:41 - ERROR - Could not load 'guard/livereload' or '~/.guard/templates/livereload' or find class Guard::Livereload
> [#]

bundle install までは正常に実行に実行できたうえで、コンフィグ生成のタイミングです。

一応解決できたので解決策を記録します。

環境

  • M1 Mac
  • ruby 3.0.2p107 (2021-07-07 revision 0db68f0233) [arm64-darwin21]
  • Rails 7.0.2.4

Unable to load the EventMachine C extension; To use the pure-ruby reactor, require ‘em/pure_ruby’ の解決策

Gemfile に指定する eventmachine を GitHub の最新ブランチを取得するようにします。

gem "eventmachine", git: "https://github.com/eventmachine/eventmachine.git", branch: "master"

2022/05/09実行時点は以下の通りになりました。

Using eventmachine 1.3.0.dev.1 (was 1.2.7) from https://github.com/eventmachine/eventmachine.git (at master@df4ab00)

Gemfile.lock

GIT
  remote: https://github.com/eventmachine/eventmachine.git
  revision: df4ab0068e5e9f504096584093a74510d0dac6c8
  branch: master
  specs:
    eventmachine (1.3.0.dev.1)

発生した理由

レポジトリのブランチには更新が入っていますが、Gemの方では2018年5月のリリース (v1.2.7) を最後にしているため、修正されたコードがリリースされていないようですね。

なお今回、Branch で Master を指定していますが、明確な変化点がどこであるかまでは確認していません。Production環境への適用においてはバージョン違いに注意してください。

Unable to load the EventMachine C extension, ruby 2.7.4, Mac OS 12.0.1 x86 揃 Issue #960 揃 eventmachine/eventmachine
Unable to load the EventMachine C extension, ruby 2.7.4, Mac OS 12.0.1 x86 揃 Issue #960 揃 eventmachine/eventmachine
https://github.com/eventmachine/eventmachine/issues/960
Hello, This is what I get when I run the rails s command: Unable to load the EventMachine C extension; To use the pure-ruby reactor, require …

… any of the other recent contributors able to shed any light on the situation here? There have been a lot of commits to the main branch but no gem release since 2018.