Rails - 无法运行app:无法加载EventMachine C扩展;

use*_*621 4 ruby ruby-on-rails eventmachine bundler

当我在Lion OS X上运行应用程序时,我收到此错误:

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
Run Code Online (Sandbox Code Playgroud)

我真的不知道如何解决这个问题,我已将eventmachinegem 添加到Gemfile中,但它没有帮助......

你能帮帮我,怎么解决?

谢谢

pre*_*der 18

在我的情况下,这修复了它:

  • $ gem uninstall eventmachine
  • 在提示符告诉它卸载所有版本(它告诉你有关依赖项)
  • $ bundle install

我正在阅读这篇https://github.com/eventmachine/eventmachine/issues/333.事件机器存在问题,因此确保我获得最新版本似乎是一个好主意.


sud*_*uda 9

对我来说,从调整配置的源代码编译eventmachine有帮助.尝试:

如果已经安装了eventmachine,请将其卸载:

gem uninstall eventmachine
Run Code Online (Sandbox Code Playgroud)

获取eventmachine来源:

git clone https://github.com/eventmachine/eventmachine.git
cd eventmachine
Run Code Online (Sandbox Code Playgroud)

通过在之后添加来编辑ext/extconf.rbext/fastfilereader/extconf.rb文件CONFIG['CXX'] = "g++"require 'mkmf'

编译并安装gem:

rake gem
gem install pkg/eventmachine-1.0.3.gem
Run Code Online (Sandbox Code Playgroud)

现在eventmachine应该工作得很好:)


Ism*_*reu 2

正如消息所说,最简单的解决方法就是require 'em/pure_ruby'. 我想你可以把它放在config/inlitializers文件夹中,你可以调用文件event_machine.rb

但它不会具有与 C 扩展相同的性能。