无法加载 EventMachine C 扩展;使用纯红宝石反应器

Posted

技术标签:

【中文标题】无法加载 EventMachine C 扩展;使用纯红宝石反应器【英文标题】:Unable to load the EventMachine C extension; To use the pure-ruby reactor 【发布时间】:2015-08-21 08:25:40 【问题描述】:

我遇到了麻烦,在一个rails项目中(redmine2.3),rails版本是3.2

启动项目

bundle exec thin start -p 8080 -e production -s 5 -d

错误信息

(eval):9: warning: already initialized constant Bundler::Dsl::RAILS_VERSION_IS_3
(eval):9: warning: previous definition of RAILS_VERSION_IS_3 was here
(eval):9: warning: already initialized constant Bundler::Dsl::RAILS_VERSION_IS_3
(eval):9: warning: previous definition of RAILS_VERSION_IS_3 was here
Unable to load the EventMachine C extension; To use the pure-ruby reactor, require 'em/pure_ruby'
/var/wtn/vendor/cache/ruby/2.0.0/gems/eventmachine-1.0.3/lib/eventmachine.rb:8:in `require': libruby.so.2.0: cannot open shared object file: No such file or directory - /var/wtn/vendor/cache/ruby/2.0.0/gems/eventmachine-1.0.3/lib/rubyeventmachine.so (LoadError)
    from /var/wtn/vendor/cache/ruby/2.0.0/gems/eventmachine-1.0.3/lib/eventmachine.rb:8:in `<top (required)>'
    from /var/wtn/vendor/cache/ruby/2.0.0/gems/thin-1.6.2/lib/thin.rb:7:in `require'
    from /var/wtn/vendor/cache/ruby/2.0.0/gems/thin-1.6.2/lib/thin.rb:7:in `<top (required)>'
    from /var/wtn/vendor/cache/ruby/2.0.0/gems/thin-1.6.2/bin/thin:5:in `require'
    from /var/wtn/vendor/cache/ruby/2.0.0/gems/thin-1.6.2/bin/thin:5:in `<top (required)>'
    from /var/wtn/vendor/cache/ruby/2.0.0/bin/thin:23:in `load'
    from /var/wtn/vendor/cache/ruby/2.0.0/bin/thin:23:in `<main>'

运行rails -v时发生同样的错误

rails -v
(eval):9: warning: already initialized constant Bundler::Dsl::RAILS_VERSION_IS_3
(eval):9: warning: previous definition of RAILS_VERSION_IS_3 was here

在项目中运行bundle exec .....会产生同样的错误

问题解决了,看我三楼的评论,就有答案了

【问题讨论】:

Rails - cannot run app: Unable to load the EventMachine C extension; 的可能重复项 不一样,看我三楼的评论,有答案 【参考方案1】:

这里的相关错误信息如下:

Unable to load the EventMachine C extension; To use the pure-ruby reactor, require 'em/pure_ruby'

尝试重新安装eventmachine gem:

gem uninstall eventmachine
bundle install

见Rails/Ruby Error When Creating Database: Unable to load the EventMachine C extension 和 Rails - cannot run app: Unable to load the EventMachine C extension; 获取有关如何处理此问题的更多建议。

【讨论】:

警告呢:(eval):9: 警告: 已经初始化常量 Bundler::Dsl::RAILS_VERSION_IS_3 (eval):9: 警告:RAILS_VERSION_IS_3 的先前定义在这里 gem uninstall eventmachine 似乎没有提示返回 我也试过了,但收到了完全相同的错误消息。 我收到此错误ERROR: While executing gem ... (Gem::DependencyRemovalException) Uninstallation aborted due to dependent gem(s) @YashuMittal 请参阅***.com/questions/952836/… 了解有关如何克服此错误的一些提示。【参考方案2】:

问题已解决。

rm vendor/cache/ -rf
bundle install

修正了错误

remove the Redundant folder in the redmine/plugins

修复了警告

This is record of locating and repairing process.

谢谢!

【讨论】:

【参考方案3】:

gem install eventmachine --platform ruby​​

【讨论】:

试着解释一下? 使用gem uninstall eventmachine卸载eventmachine之前:github.com/oneclick/rubyinstaller2/issues/…【参考方案4】:

如果您使用的是 Windows

    转到此文件夹C:\Ruby24-x64\lib\ruby\gems\2.4.0\gems\eventmachine-1.2.5-x64-mingw32\lib

    打开这个文件 eventmachine.rb

    把这个require 'em/pure_ruby'写在文件的第一行代码

这将使它正常工作。

【讨论】:

救命,卸载和安装对我不起作用! 它给了我以下错误 - The ``SortedSet`` class has been extracted from the ``set`` library.You must use the ``sorted_set`` gem or other alternatives. (RuntimeError)。在我的机器上,您指定的文件的路径是 - C:\Ruby30-x64\lib\ruby\gems\3.0.0\gems\eventmachine-1.2.7-x64-mingw32\lib 我也有这个问题 我也有同样的问题 在 macos 上使用 ruby​​-3.0.1 和 eventmachine-1.2.7【参考方案5】:

适用于 Windows 10 上的 Ruby 2.4 和 eventmachine 1.2.6。

你必须先卸载 eventmachine 然后用平台 ruby​​ 重新安装:

gem uninstall eventmachine  (select all versions if prompted)

gem install eventmachine --platform ruby

【讨论】:

【参考方案6】:

我在尝试使用 Jekyll 的 LiveReload 功能时在 Windows 10 上遇到此错误消息。这里的其他答案并没有完全解决问题,或者有可能在下次运行 bundle install 时再次出现问题。

我的解决方案(取自this site)是:

    运行此控制台命令

    gem uninstall eventmachine 
    

    并选择从您的系统中卸载 eventmachine-1.2.7-x64-mingw32 gems。

    在你的项目目录中编辑Gemfile并在里面添加这一行:

    gem 'eventmachine', '1.2.7', git: 'https://github.com/eventmachine/eventmachine.git', tag: 'v1.2.7'
    

    运行

    bundle install
    

    使用命令清理你的 jekyll 构建和缓存

    bundle exec jekyll clean
    

您现在可以使用--livereload 参数而不会遇到任何问题,即使您将来执行bundle install

【讨论】:

谢谢@Simon East 谢谢,我在尝试使用 Jekyll 的 LiveReload 功能时也在 Windows 10 上遇到此错误消息,它也适用于我。 @EvenWonder 嘿,您刚刚在 gem 文件的第一行添加了代码吗? bundle exec jekyll clean 对我不起作用 @SarahV.P 嘿,你找到解决方案了吗?我认为最后一行更合适。另外bundle exec jekyll clean只是清理一些自动生成的文件,它们之间没有任何关系。【参考方案7】:

在 Apple Silicon M1 和 Rails 6.1 上什么对我有用

完全卸载 eventmachine:gem uninstall -aIx eventmachine 后跟 rm -rf vendor/cache 在项目 Gemfile 中添加 eventmachine 并强制它来自 master 分支,就像这样 gem 'eventmachine', :git =&gt; 'git://github.com/eventmachine/eventmachine.git', :branch =&gt; 'master' 运行bundle install

【讨论】:

以上是关于无法加载 EventMachine C 扩展;使用纯红宝石反应器的主要内容,如果未能解决你的问题,请参考以下文章

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

Thin + EventMachine 无法启动

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

Ruby on Rails:“无法加载此类文件”事件机器

使用纯JS版本无法加载c ++ bson扩展[重复]

使用纯JS版本无法加载c ++ bson扩展[重复]