Win10下Ruby on Rails遇Errno::ENOENT错误,无法执行命令求助
解决Windows 10下Ruby 3.1.2 + Rails 7.0.3.1命令执行失败(Errno::ENOENT)的问题
快速排查路径问题
- 确保项目路径无中文、空格或特殊字符,比如用
C:\rails\my_app替代C:\我的Rails项目\demo app,Windows下特殊路径会导致gem依赖加载时的路径解析错误。 - 用
where ruby和where rails命令确认Ruby/Rails的安装路径,确保路径中没有特殊字符,且该路径已加入系统PATH环境变量。
重建依赖与缓存
- 打开项目目录,执行
bundle install重新安装所有gem依赖——部分gem在Windows下可能存在安装不完整的情况,重新安装能修复依赖链问题。 - 若
rails命令无法执行,手动删除项目根目录下的tmp文件夹,清理Rails临时缓存文件。 - 执行
gem cleanup清理过期gem缓存,再重新安装指定版本的Rails:gem install rails -v 7.0.3.1。
用WSL2对齐Linux开发环境(推荐)
因为要和Linux同事协作,直接使用WSL2可以彻底规避Windows与Linux的环境差异:
- 启用WSL2并安装Ubuntu发行版,在WSL环境内用
rbenv或rvm安装Ruby 3.1.2,再安装Rails 7.0.3.1。 - 将项目放在WSL的原生文件系统中(比如
/home/your_username/projects/),不要使用Windows挂载的/mnt/c目录,避免路径解析和性能问题。 - 在WSL终端内执行所有Rails命令,环境与同事完全一致,从根源解决跨系统兼容性问题。
权限与环境变量检查
- 用管理员权限打开命令提示符或PowerShell执行Rails命令,避免因文件访问权限不足导致的
Errno::ENOENT错误。 - 检查系统
PATH环境变量,确保Ruby的bin目录排在最前面,避免其他版本的Ruby或工具干扰。
替换Windows不兼容的gem
部分gem对Windows支持较差,可针对性替换:
- 若堆栈信息指向
sqlite3,修改Gemfile为:
再执行gem 'sqlite3', git: 'https://github.com/larskanis/sqlite3-ruby', branch: 'add-win32-vfs'bundle install安装Windows兼容版本。 - 根据堆栈中报错的gem名称,查找其Windows兼容版本或替代方案,替换后重新安装依赖。
内容的提问来源于stack exchange,提问作者Dan
相关产品推荐
相关产品推荐

