Rails - cannot run app: Unable to load the EventMachine C extension;

匿名 (未验证) 提交于 2019-12-03 01:57:01

问题:

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 `'     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 `'     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 '     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 `'     from script/rails:6:in `require'     from script/rails:6:in `
'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

回答1:

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.



回答2:

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 :)



回答3:

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.



回答4:

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.



回答5:

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



标签
易学教程内所有资源均来自网络或用户发布的内容,如有违反法律规定的内容欢迎反馈
该文章没有解决你所遇到的问题?点击提问,说说你的问题,让更多的人一起探讨吧!