gem缓存清理有五种方法:一、gem cleanup精准移除未引用的旧版缓存;二、手动清空~/.gem/cache/所有.gem文件;三、用du与rm命令批量清理并验证;四、在~/.gemrc设cache: false禁用缓存;五、用bundle clean --force同步清理bundler的vendor/cache。

如果您在使用Mac进行Ruby开发时发现Gem安装变慢、重复下载相同版本或磁盘空间被大量占用,则很可能是Gem安装包缓存(即~/.gem/cache目录中存储的.gem文件)长期累积所致。这些缓存用于加速重装,但不会自动过期,且不参与依赖解析,仅作为本地副本存在。以下是多种安全、可验证的清理方法:
一、使用gem cleanup命令清理已安装Gem的冗余缓存
该命令会扫描本地已安装的Gem版本,比对~/.gem/cache/中对应.gem文件,仅保留当前已安装版本所需的缓存包,移除所有未被任何已安装Gem引用的旧版缓存文件,操作精准且不干扰当前环境。
1、打开“应用程序” → “实用工具” → “终端”。
2、输入命令gem cleanup并回车执行。
3、等待终端输出类似Successfully cleaned up gems: ...提示,确认清理完成。
二、手动删除全部Gem安装包缓存文件
此方法直接清空~/.gem/cache目录下所有.gem文件,适用于需彻底释放空间、或怀疑缓存文件损坏导致安装异常的场景。删除后首次安装新Gem将重新下载,不影响已安装Gem的功能与依赖关系。
1、在终端中输入open ~/.gem/cache并回车,使用访达打开缓存目录。
2、在访达窗口中,全选所有以.gem为扩展名的文件(可按Command+A全选,再按Shift+Command+. 显示隐藏文件确保无遗漏)。
3、按Command+Delete将选中文件移入废纸篓。
4、右键点击Dock中的废纸篓图标,选择“清倒废纸篓”以永久释放磁盘空间。
三、通过终端命令批量清理并验证缓存目录状态
该方法结合文件大小排序与路径确认,避免误删非缓存内容,同时提供清理前后对比能力,适合对磁盘占用敏感的苹果开发环境(如Xcode + Ruby混合项目)。
1、在终端中运行du -sh ~/.gem/cache/* 2>/dev/null | sort -hr | head -10,列出当前缓存中体积最大的前10个.gem文件。
2、检查输出路径是否全部位于~/.gem/cache/内,确认无路径越界风险。
3、执行清理命令:rm -f ~/.gem/cache/*.gem。
4、再次运行ls -la ~/.gem/cache/,确认目录为空或仅剩index等元数据文件。
四、禁用Gem自动缓存以防止未来堆积
对于仅需临时测试或CI/CD构建环境,可关闭Gem下载时的本地缓存行为,从源头杜绝缓存文件生成。该设置不影响Gem功能,仅跳过.gem文件写入步骤,安装包解压后即丢弃原始归档。
1、在终端中执行gem env home,确认当前Gem Home路径(通常为~/.gem)。
2、创建或编辑配置文件:nano ~/.gemrc。
3、在文件中添加一行:cache: false。
4、按Control+O保存,Control+X退出,随后关闭并重启终端使配置生效。
五、同步清理Bundler本地缓存(Ruby项目级补充)
Bundler在项目根目录下的vendor/cache中维护独立的Gem包副本,该缓存不受gem cleanup影响,但同样占用空间且可能陈旧。清理此项可确保项目构建一致性,并释放额外空间。
1、进入任一含Gemfile的Ruby项目目录。
2、运行bundle clean --force,强制移除vendor/cache中所有未在Gemfile.lock中声明的.gem文件。
3、若需清空整个vendor/cache目录,执行rm -rf vendor/cache。
4、确认操作后,运行bundle package --all可按需重建缓存(非必需步骤)。











