Windows下无法启动Rails的Thin服务器:EventMachine C扩展加载失败
解决Windows下Thin服务器EventMachine C扩展加载失败问题
看起来你在Windows环境下配置Rails的Thin服务器时踩了EventMachine的坑——不管是启动thin s还是rails s都卡在C扩展加载失败上,甚至加了em/pure_ruby初始化文件也没效果,对吧?我之前也遇到过类似的情况,给你几个靠谱的解决步骤:
方案1:强制加载纯Ruby版EventMachine(快速生效)
错误提示里明确提到可以用纯Ruby反应器,但你放在initializer里的代码可能没被Thin的启动流程提前加载到。试试直接在启动命令里强制引入:
- 临时启动:在命令行执行
ruby -r em/pure_ruby -S thin start - 永久生效:可以在项目根目录创建
start_thin.bat脚本,内容如下,以后双击就能启动:@echo off ruby -r em/pure_ruby -S thin start
方案2:重新编译适配本地Ruby的EventMachine扩展
有时候预编译的gem包和你的Ruby版本/Windows环境不兼容,试试手动编译适配版本:
- 先卸载所有已安装的EventMachine:
gem uninstall eventmachine --all - 安装RubyDevKit(如果没装的话):下载对应你Ruby 2.4.x版本的DevKit,解压后运行
ruby dk.rb init和ruby dk.rb install完成配置。 - 强制编译安装EventMachine:
gem install eventmachine --platform=ruby
方案3:降级EventMachine到兼容稳定版
EventMachine 1.2.7和Ruby 2.4.x在Windows上可能存在兼容性问题,试试降级到更稳定的1.2.3版本:
- 修改项目Gemfile,指定版本:
gem 'eventmachine', '1.2.3' - 执行bundle安装:
bundle install - 再尝试启动
thin start或rails s。
方案4:临时切换回WEBrick(应急方案)
如果上面的方法暂时没效果,你可以先切换回Rails默认的WEBrick服务器,保证项目能正常运行:
rails s -b webrick
内容的提问来源于stack exchange,提问作者barlop
相关产品推荐
相关产品推荐

