0

The solution to this issue given on rubyinstaller does not work for me

https://github.com/oneclick/rubyinstaller2/issues/96

gem uninstall eventmachine 
gem install eventmachine --platform ruby

Any thoughts?

PS D:\wiecejwolnosci> jekyll new site2 .
Running bundle install in D:/wiecejwolnosci/site2... 
  Bundler: Fetching gem metadata from https://rubygems.org/..........
  Bundler: Resolving dependencies...
  Bundler: Using public_suffix 4.0.6
  Bundler: Using addressable 2.7.0
  Bundler: Using bundler 2.2.12
  Bundler: Using colorator 1.1.0
  Bundler: Using concurrent-ruby 1.1.8
  Bundler: Using eventmachine 1.2.7 (x64-mingw32)
  Bundler: Using http_parser.rb 0.6.0
  Bundler: Using em-websocket 0.5.2
  Bundler: Using ffi 1.14.2 (x64-mingw32)
  Bundler: Using forwardable-extended 2.6.0
  Bundler: Using jekyll-sass-converter 2.1.0
  Bundler: Using rb-fsevent 0.10.4
  Bundler: Using rb-inotify 0.10.1
  Bundler: Using listen 3.4.1
  Bundler: Using jekyll-watch 2.2.1
  Bundler: Using rexml 3.2.4
  Bundler: Using kramdown 2.3.0
  Bundler: Using kramdown-parser-gfm 1.1.0
  Bundler: Using liquid 4.0.3
  Bundler: Using mercenary 0.4.0
  Bundler: Using pathutil 0.16.2
  Bundler: Using rouge 3.26.0
  Bundler: Using safe_yaml 1.0.5
  Bundler: Using unicode-display_width 1.7.0
  Bundler: Using terminal-table 2.0.0
  Bundler: Using jekyll 4.2.0
  Bundler: Using jekyll-feed 0.15.1
  Bundler: Using minima 2.5.1
  Bundler: Using thread_safe 0.3.6
  Bundler: Using tzinfo 1.2.9
  Bundler: Using tzinfo-data 1.2021.1
  Bundler: Using wdm 0.1.1
  Bundler: Bundle complete! 6 Gemfile dependencies, 35 gems now installed.
  Bundler: Use `bundle info [gemname]` to see where a bundled gem is installed.
New jekyll site installed in D:/wiecejwolnosci/site2.
PS D:\wiecejwolnosci> cd .\site2\
PS D:\wiecejwolnosci\site2> ls


    Directory: D:\wiecejwolnosci\site2


Mode                LastWriteTime         Length Name
----                -------------         ------ ----
d-----       05/03/2021     14:37                _posts
-a----       05/03/2021     14:37             56 .gitignore
-a----       05/03/2021     14:37            419 404.html
-a----       05/03/2021     14:37            539 about.markdown
-a----       05/03/2021     14:37           1155 Gemfile
-a----       05/03/2021     14:38           2038 Gemfile.lock
-a----       05/03/2021     14:37            175 index.markdown
-a----       05/03/2021     14:37           2080 _config.yml


PS D:\wiecejwolnosci\site2> bundler install
Using public_suffix 4.0.6
Using addressable 2.7.0
Using bundler 2.2.12
Using colorator 1.1.0
Using concurrent-ruby 1.1.8
Using eventmachine 1.2.7 (x64-mingw32)
Using http_parser.rb 0.6.0
Using em-websocket 0.5.2
Using ffi 1.14.2 (x64-mingw32)
Using i18n 1.8.9
Using sassc 2.4.0 (x64-mingw32)
Using jekyll-sass-converter 2.1.0
Using rb-fsevent 0.10.4
Using rb-inotify 0.10.1
Using listen 3.4.1
Using jekyll-watch 2.2.1
Using rexml 3.2.4
Using kramdown 2.3.0
Using kramdown-parser-gfm 1.1.0
Using liquid 4.0.3
Using mercenary 0.4.0
Using pathutil 0.16.2
Using rouge 3.26.0
Using safe_yaml 1.0.5
Using unicode-display_width 1.7.0
Using terminal-table 2.0.0
Using jekyll 4.2.0
Using jekyll-feed 0.15.1
Using jekyll-seo-tag 2.7.1
Using minima 2.5.1
Using thread_safe 0.3.6
Using tzinfo 1.2.9
Using tzinfo-data 1.2021.1
Using wdm 0.1.1
Bundle complete! 6 Gemfile dependencies, 35 gems now installed.
Use `bundle info [gemname]` to see where a bundled gem is installed.
PS D:\wiecejwolnosci\site2> bundler exec jekyll serve --livereload  
Configuration file: D:/wiecejwolnosci/site2/_config.yml
            Source: D:/wiecejwolnosci/site2
       Destination: D:/wiecejwolnosci/site2/_site
 Incremental build: disabled. Enable with --incremental
      Generating...
       Jekyll Feed: Generating feed for posts
                    done in 1.494 seconds.
 Auto-regeneration: enabled for 'D:/wiecejwolnosci/site2'
Unable to load the EventMachine C extension; To use the pure-ruby reactor, require 'em/pure_ruby'
                    ------------------------------------------------
      Jekyll 4.2.0   Please append `--trace` to the `serve` command 
                     for any additional information or backtrace. 
                    ------------------------------------------------
Traceback (most recent call last):
        22: from C:/Ruby27-x64/bin/jekyll:23:in `<main>'
        21: from C:/Ruby27-x64/bin/jekyll:23:in `load'
        20: from C:/Ruby27-x64/lib/ruby/gems/2.7.0/gems/jekyll-4.2.0/exe/jekyll:15:in `<top (required)>'
        19: from C:/Ruby27-x64/lib/ruby/gems/2.7.0/gems/mercenary-0.4.0/lib/mercenary.rb:21:in `program'
        18: from C:/Ruby27-x64/lib/ruby/gems/2.7.0/gems/mercenary-0.4.0/lib/mercenary/program.rb:44:in `go'
        17: from C:/Ruby27-x64/lib/ruby/gems/2.7.0/gems/mercenary-0.4.0/lib/mercenary/command.rb:221:in `execute'
        16: from C:/Ruby27-x64/lib/ruby/gems/2.7.0/gems/mercenary-0.4.0/lib/mercenary/command.rb:221:in `each'
        15: from C:/Ruby27-x64/lib/ruby/gems/2.7.0/gems/mercenary-0.4.0/lib/mercenary/command.rb:221:in `block in execute'
        14: from C:/Ruby27-x64/lib/ruby/gems/2.7.0/gems/jekyll-4.2.0/lib/jekyll/commands/serve.rb:86:in `block (2 levels) in init_with_program'
        13: from C:/Ruby27-x64/lib/ruby/gems/2.7.0/gems/jekyll-4.2.0/lib/jekyll/command.rb:91:in `process_with_graceful_fail'
        12: from C:/Ruby27-x64/lib/ruby/gems/2.7.0/gems/jekyll-4.2.0/lib/jekyll/command.rb:91:in `each'
        11: from C:/Ruby27-x64/lib/ruby/gems/2.7.0/gems/jekyll-4.2.0/lib/jekyll/command.rb:91:in `block in process_with_graceful_fail'
        10: from C:/Ruby27-x64/lib/ruby/gems/2.7.0/gems/jekyll-4.2.0/lib/jekyll/commands/serve.rb:98:in `process'
         9: from C:/Ruby27-x64/lib/ruby/gems/2.7.0/gems/jekyll-4.2.0/lib/jekyll/commands/serve.rb:143:in `register_reload_hooks'
         8: from C:/Ruby27-x64/lib/ruby/gems/2.7.0/gems/jekyll-4.2.0/lib/jekyll/commands/serve.rb:143:in `require_relative'
         7: from C:/Ruby27-x64/lib/ruby/gems/2.7.0/gems/jekyll-4.2.0/lib/jekyll/commands/serve/live_reload_reactor.rb:3:in `<top (required)>'
         6: from C:/Ruby27-x64/lib/ruby/gems/2.7.0/gems/jekyll-4.2.0/lib/jekyll/commands/serve/live_reload_reactor.rb:3:in `require'
         5: from C:/Ruby27-x64/lib/ruby/gems/2.7.0/gems/em-websocket-0.5.2/lib/em-websocket.rb:3:in `<top (required)>'
         4: from C:/Ruby27-x64/lib/ruby/gems/2.7.0/gems/em-websocket-0.5.2/lib/em-websocket.rb:3:in `require'
         3: from C:/Ruby27-x64/lib/ruby/gems/2.7.0/gems/eventmachine-1.2.7-x64-mingw32/lib/eventmachine.rb:8:in `<top (required)>'
         2: from C:/Ruby27-x64/lib/ruby/gems/2.7.0/gems/eventmachine-1.2.7-x64-mingw32/lib/eventmachine.rb:8:in `require'
         1: from C:/Ruby27-x64/lib/ruby/gems/2.7.0/gems/eventmachine-1.2.7-x64-mingw32/lib/rubyeventmachine.rb:2:in `<top (required)>'
C:/Ruby27-x64/lib/ruby/gems/2.7.0/gems/eventmachine-1.2.7-x64-mingw32/lib/rubyeventmachine.rb:2:in `require': cannot load such file -- 2.7/rubyeventmachine (LoadError)
matcheek
  • 4,887
  • 9
  • 42
  • 73

2 Answers2

1

EventMachine is severely undermaintained. I had a lot of issues with it while writing CI jobs. The best way to deal with it is to use a Git version. In your Gemfile you will need to add:

gem 'eventmachine', github: 'eventmachine/eventmachine'

Then you will need to bundle install.

hmdne
  • 434
  • 2
  • 5
0

For those who just want to make Jekyll live reload: Use a browser extension instead.

Example:

  1. Install blaise-io/live-reload. (Chrome / Firefox / Edge)

  2. Serve your site (jekyll serve/bundler exec jekyll serve) and open in your browser.

  3. Click the extension's button (in browser's bar), click “Create a new reload rule…”, then a small window would appear.

  4. In “Source file URLs”, enter your Jekyll generated files' permalinks (eg. http://localhost:4000/assets/css/*.css).

    (In other words, .html & .css rather than .md & .scss, http:// rather than file:///. These files maps to your _site/ folder.)

  5. Scroll down, “Save reload rule”. Have fun Jekylling.


(Warn: I am new to ruby, so below may be wrong.)

In fact, this is not a Jekyll issue. Search for Ruby if you want.

You can check this in Interactive Ruby.

Open a terminal, enter irb, write require 'eventmachine', and a similar issue would happen.

PS C:\Users\…❯ irb
irb(main):001:0> require 'eventmachine'
Unable to load the EventMachine C extension; To use the pure-ruby reactor, require 'em/pure_ruby'
……

(If you get stuck in Interactive Ruby, Ctrl+C, enter exit/quit.)

Jeyll's --livereload (live_reload_reactor.rb or sth.) (indirectly) uses EventMachine, which goes wrong.

EventMachine is implemented in 2 ways:

  • C as an extension: Default but not working. Sorry I don't know how to fix.

    (Reinstall may work, try if you haven't. Good luck :-)

  • Ruby: Not default. Some works, some (including me) don't.

    You can have a try by adding require 'em/pure_ruby' as the first line of where-you-install-ruby/Ruby○○-x○○/lib/ruby/gems/○.○.○/gems/eventmachine-○.○.○-x○○-mingw32/lib/eventmachine.rb. (“○” are numbers depends on versions)

    If you uses Ruby 3.x, you may met another issue (as the comments there saying): Ruby 3.x removes SortedSet (pure_ruby.rb writes @timers = SortedSet.new # []) and recommends sorted_set for an alternative, though Ruby 3.x autoload :SortedSet, "#{__dir__}/set/sorted_set". I install and require 'sorted_set', but other issues appear.

Conclusion: Jeyllers' quick solution is using a browser extension.

Y.D.X.
  • 28
  • 6