5

When I run an app on Lion OS X, I get this error:

Unable to load the EventMachine C extension; To use the pure-ruby reactor, require 'em/pure_ruby'
/Users/adam/.rvm/gems/ruby-1.9.2-p290/gems/eventmachine-1.0.0/lib/eventmachine.rb:8:in `require': no such file to load -- rubyeventmachine (LoadError)
    from /Users/adam/.rvm/gems/ruby-1.9.2-p290/gems/eventmachine-1.0.0/lib/eventmachine.rb:8:in `<top (required)>'
    from /Users/adam/.rvm/gems/ruby-1.9.2-p290@global/gems/bundler-1.0.21/lib/bundler/runtime.rb:68:in `require'
    from /Users/adam/.rvm/gems/ruby-1.9.2-p290@global/gems/bundler-1.0.21/lib/bundler/runtime.rb:68:in `block (2 levels) in require'
    from /Users/adam/.rvm/gems/ruby-1.9.2-p290@global/gems/bundler-1.0.21/lib/bundler/runtime.rb:66:in `each'
    from /Users/adam/.rvm/gems/ruby-1.9.2-p290@global/gems/bundler-1.0.21/lib/bundler/runtime.rb:66:in `block in require'
    from /Users/adam/.rvm/gems/ruby-1.9.2-p290@global/gems/bundler-1.0.21/lib/bundler/runtime.rb:55:in `each'
    from /Users/adam/.rvm/gems/ruby-1.9.2-p290@global/gems/bundler-1.0.21/lib/bundler/runtime.rb:55:in `require'
    from /Users/adam/.rvm/gems/ruby-1.9.2-p290@global/gems/bundler-1.0.21/lib/bundler.rb:122:in `require'
    from /Users/adam/rubydev/future_computers/config/application.rb:7:in `<top (required)>'
    from /Users/adam/.rvm/gems/ruby-1.9.2-p290/gems/railties-3.2.1/lib/rails/commands.rb:53:in `require'
    from /Users/adam/.rvm/gems/ruby-1.9.2-p290/gems/railties-3.2.1/lib/rails/commands.rb:53:in `block in <top (required)>'
    from /Users/adam/.rvm/gems/ruby-1.9.2-p290/gems/railties-3.2.1/lib/rails/commands.rb:50:in `tap'
    from /Users/adam/.rvm/gems/ruby-1.9.2-p290/gems/railties-3.2.1/lib/rails/commands.rb:50:in `<top (required)>'
    from script/rails:6:in `require'
    from script/rails:6:in `<main>'adam

I don't really know how to fix this, I've added the eventmachine gem into the Gemfile, but it didn't help...

Could you help me, please, how to fix it?

Thank you

user984621
  • 46,344
  • 73
  • 224
  • 412

6 Answers6

19

In my case this fixed it:

  • $ gem uninstall eventmachine
  • at the prompt tell it to uninstall all versions (it tells you about dependencies)
  • $ bundle install

I was reading through this https://github.com/eventmachine/eventmachine/issues/333. There were problems with eventmachine, so making sure I got the newest version seemed a good idea.

prettycoder
  • 228
  • 1
  • 11
9

For me, compiling eventmachine from sources with tweaked config helped. Try:

Uninstall eventmachine if it's already installed:

gem uninstall eventmachine

Fetch eventmachine sources:

git clone https://github.com/eventmachine/eventmachine.git
cd eventmachine

Edit ext/extconf.rb and ext/fastfilereader/extconf.rb files by adding CONFIG['CXX'] = "g++" right after require 'mkmf'

Compile and install gem:

rake gem
gem install pkg/eventmachine-1.0.3.gem

Now eventmachine should work just fine :)

suda
  • 2,604
  • 1
  • 27
  • 38
  • this worked for mailcatcher to start but somehow broke my bundle install.. figuring that atm – Vlad Otrocol Nov 08 '14 at 13:55
  • Checked out v1.0.3 and performed the edits. Now I am getting a `Don't know how to build task 'native:eventmachine:x86-mingw32' (see --tasks)` – Elijah Lynn Dec 27 '17 at 21:33
  • Elijah are you running Windows? The changes worked for me on macOS. This might help you: https://github.com/eventmachine/eventmachine/issues/531 – suda Jan 03 '18 at 15:33
2

The easiest fix as the message says is just to require 'em/pure_ruby'. I think you can put this in the config/inlitializers folder, you can call the file event_machine.rb

But it won't have the same performance as the C extension.

Ismael Abreu
  • 16,443
  • 6
  • 61
  • 75
1

I had that error when I run bundle exec jekyll serve --livereload --trace on Jekyll.4.2.1-Ruby.3.0.3p137(mingw)-Windows. I ran gem install eventmachine --platform=ruby and it compiled at C:\Ruby30-x64\lib\ruby\gems\3.0.0\gems\eventmachine-1.2.7 but when you run bundle install it creates also C:\Ruby30-x64\lib\ruby\gems\3.0.0\gems\eventmachine-1.2.7-x64-mingw32 . The command bundle info eventmachine gives me C:/Ruby30-x64/lib/ruby/gems/3.0.0/gems/eventmachine-1.2.7-x64-mingw32 and that's confimed in the Gemfile.lock with the line eventmachine (1.2.7-x64-mingw32). So I changed that line for eventmachine (1.2.7) and then the output of bundle info eventmachine gives me C:/Ruby30-x64/lib/ruby/gems/3.0.0/gems/eventmachine-1.2.7 and finally the command bundle exec jekyll serve --livereload --trace worked ✔️

Fredy Rosero
  • 371
  • 1
  • 3
  • 8
0

Providing another solution as I just wasted hours tracking this issue down. I was doing bundle install --deployment and then committing the result to a separate branch in git so I could deploy this branch straight to servers without having to do bundle install again.

The problem is that eventmachine has a .gitignore file in it which tells git to ignore all *.so files. Because of this when I was committing, the .so files didn't commit, and wouldn't show up as untracked in a git status. Also since the gemspec was present, bundle thought the package was completely installed.

My solution was to add a command as part of the build process to go and whack all the .gitignore files in the gems before committing.

phemmer
  • 6,882
  • 3
  • 33
  • 31
0

You may find various errors while installing gems or trying to find solution to your ruby application installation failing due to ruby-devel was not installed.

I just installed on my Kali linux with

sudo apt-get install ruby-dev

and everything resolved. I was trying to install bettercap.

This answer helped: https://stackoverflow.com/a/4502672/6503117

Community
  • 1
  • 1
jaykbvt
  • 1
  • 1
  • 1