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

痞子三分冷 提交于 2019-11-26 21:54:54

问题


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


回答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



来源:https://stackoverflow.com/questions/14824235/rails-cannot-run-app-unable-to-load-the-eventmachine-c-extension

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