无法加载 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 => 'git://github.com/eventmachine/eventmachine.git', :branch => 'master'
运行bundle install
【讨论】:
以上是关于无法加载 EventMachine C 扩展;使用纯红宝石反应器的主要内容,如果未能解决你的问题,请参考以下文章
无法在 Rails 控制台中加载 Ruby EventMachine - 没有要加载的文件
Ruby(bundle install,bundle update)FAILS无法安装gems http_parser.rb,eventmachine