运行rails g rails_admin:install出现Bad file descriptor错误如何解决
错误原因
该Bad file descriptor (Errno::EBADF)错误为Windows环境下Ruby 2.7版本自带的reline库与系统默认终端的交互兼容问题导致:rails_admin安装生成器运行时会触发交互式配置提问,依赖Thor调用readline读取终端输入时无法获取合法的终端文件描述符,因此抛出报错。
修复方案
- 方案1:跳过交互式配置(最便捷)
执行命令时添加--quiet参数跳过交互提问,直接生成默认配置:
后续如果需要修改配置,可以手动编辑生成的rails g rails_admin:install --quietconfig/initializers/rails_admin.rb文件调整。 - 方案2:更换兼容终端
不要使用Windows自带的CMD或PowerShell执行命令,改用Git Bash、MSYS2终端或者WSL子系统终端,这类终端对Ruby的readline/reline库适配更完善,可直接正常执行安装命令。 - 方案3:临时禁用reline库
执行安装命令前先设置对应环境变量禁用reline:- CMD环境下执行:
set NO_RELINE=1 rails g rails_admin:install - PowerShell环境下执行:
$env:NO_RELINE=1 rails g rails_admin:install
- CMD环境下执行:
- 方案4:更新reline依赖
执行以下命令更新reline gem到最新版本,修复旧版本的Windows兼容问题:
更新完成后再重新执行安装命令即可。gem update reline
内容的提问来源于stack exchange,提问作者Andre Julyanto
相关产品推荐
相关产品推荐

