Thin + EventMachine 无法启动

Posted

技术标签:

【中文标题】Thin + EventMachine 无法启动【英文标题】:Thin + EventMachine fails to start 【发布时间】:2013-01-14 15:04:32 【问题描述】:

在为 sinatra 应用程序加载瘦网络服务器时,我不断得到

Unable to load the EventMachine C extension; To use the pure-ruby reactor, require em/pure_ruby'<path>/vendor/bundle/ruby/1.9.1/gems/eventmachine-1.0.0.rc.4/lib/eventmachine.rb:8:in `require': cannot load such file -- rubyeventmachine (LoadError)
from <path>/vendor/bundle/ruby/1.9.1/gems/eventmachine-1.0.0.rc.4/lib/eventmachine.rb:8:in `<top (required)>'
from <path>/vendor/bundle/ruby/1.9.1/gems/thin-1.5.0/lib/thin.rb:7:in `require'
from <path>/vendor/bundle/ruby/1.9.1/gems/thin-1.5.0/lib/thin.rb:7:in `<top (required)>'
from <path>/vendor/bundle/ruby/1.9.1/gems/thin-1.5.0/bin/thin:5:in `require'
from <path>/vendor/bundle/ruby/1.9.1/gems/thin-1.5.0/bin/thin:5:in `<top (required)>'
from <path>/vendor/bundle/ruby/1.9.1/bin/thin:19:in `load'
from <path>/vendor/bundle/ruby/1.9.1/bin/thin:19:in `<main>'

在我的 Mac OSX 中,我启动服务器没有任何问题,但在我的服务器中 红帽企业 Linux 服务器 6.2 版(圣地亚哥) 我无法启动我的应用程序。

我正在使用 rvm 1.18.5 和 ruby​​-1.9.3-p374

提前致谢。

有人遇到过这个问题吗?

【问题讨论】:

也许您需要在您的 Red Hat 服务器上安装 eventmachine gem 安装 eventmachine ?我正在使用 bundler 来安装它。 你能确认你已经安装了 Xcode 吗? ianin,它是 Red Hat Enterprise Server :) 在我的 OSX 中运行良好。 【参考方案1】:

我已经解决了转储大部分 Bundler 配置的 gem 并将它们直接安装到我的全局 gemset 的问题。我不得不从我的 Sinatra 加载代码中删除所有 Bundler 引用,而只使用 ruby​​gems。 现在我只需要 Bundler 来测试黄瓜和使用 capistrano 进行部署。

【讨论】:

我建议使用bundler install --binstubs --path vendor。如果您使用 Bundler 比使用 RVM gemset,以这种方式对项目的 gem 进行沙箱化要容易得多。 iain 我也试过了。实际上,我总是在我的项目中使用 Bundler,这是我第一次遇到这种情况。我不知道最新版本的 Bundler + RVM 出了什么问题,但我的服务器出现了一些奇怪的行为。 我会清除我所有的 RVM gems,然后在项目中 rm -rf .bundle Gemfile.lock bin vendor,然后重新安装 Bundler,然后使用 binstubs+vendor 开关。【参考方案2】:

尝试重新安装 gem 'eventmachine':

$ gem uninstall eventmachine

$ gem install eventmachine  
or 
$ bundle install

见:https://***.com/a/15140634/445908

【讨论】:

【参考方案3】:

我通过卸载自制的 ruby​​ 2.5 版本修复了“无法加载 EventMachine C 扩展”错误。在Rails/Ruby Error When Creating Database: Unable to load the EventMachine C extension 上查看此评论

【讨论】:

以上是关于Thin + EventMachine 无法启动的主要内容,如果未能解决你的问题,请参考以下文章

Rails eventmachine 未初始化 evma_install_oneshot_timer

无法在 Rails 控制台中加载 Ruby EventMachine - 没有要加载的文件

Rails - 无法运行应用程序:无法加载 EventMachine C 扩展;

Eventmachine start_tcp_server no acceptor - 端口正在使用或需要root权限(RuntimeError)

Ruby(bundle install,bundle update)FAILS无法安装gems http_parser.rb,eventmachine

EventMachine/em-http-request 检测 http 流连接何时停止