问题
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