求助:Rails CLI命令本地挂起,执行rails -v无响应,无法搭建临时应用
我之前也碰到过一模一样的情况,rails -v这种基础命令都无限挂起,大概率是环境依赖、网络或者系统资源的问题,给你几个实际可行的排查方向:
先确认Ruby基础环境是否正常
先排除Ruby本身的问题,执行ruby -v看看能不能正常输出版本号。如果这个命令也卡住,那说明Ruby安装可能损坏了——如果你用的是rbenv、rvm这类版本管理器,试试重新安装对应版本的Ruby;如果是系统Ruby,建议换成版本管理器来管理,避免权限或依赖冲突。检查Gem源的可用性
Rails命令有时候会依赖Gem源的网络请求,默认的rubygems.org在部分网络环境下访问可能不稳定,甚至被拦截。先执行gem source -l查看当前使用的源,如果是默认的官方源,可以换成国内镜像:gem sources --add https://gems.ruby-china.com/ --remove https://rubygems.org/换完源之后再试
rails -v,大概率能解决网络导致的挂起问题。清理残留进程与切换工作目录
有时候残留的Ruby/Rails进程会占用资源导致新命令卡住,用ps aux | grep ruby列出相关进程,找到异常的进程ID后用kill -9 [进程ID]杀掉。另外,如果你当前在网络挂载目录(比如NFS、SMB共享)下操作,切换到本地目录(比如cd ~)再执行命令试试,网络目录的IO问题也可能导致命令挂起。重装Rails依赖
如果上面的方法都没用,试试彻底卸载再重装Rails:gem uninstall rails gem install rails # 要指定版本的话加 -v x.x.x,比如 gem install rails -v 7.0.8重装完成后再验证
rails -v是否正常输出。排查代理与防火墙干扰
某些代理工具或者系统防火墙会拦截Ruby/Gem的网络请求,导致命令无限等待。暂时关闭代理、防火墙或者切换到干净的网络环境(比如手机热点),再测试命令是否能正常执行。
内容的提问来源于stack exchange,提问作者robskrob

