You need to enable JavaScript to run this app.
优惠活动
大模型
产品
解决方案
定价
更多

如何让Pry的load命令在首次缓存后重新加载Ruby依赖文件?

问题原因

Ruby的require、require_relative机制默认仅会加载一次文件,已经加载过的文件路径会被存入全局数组$LOADED_FEATURES,后续调用相同路径的require/require_relative时会直接跳过加载逻辑。你重复加载board.rb时,内部的require_relative "card"检测到card.rb已经在已加载列表中,就不会同步最新的修改内容。

解决方法
  • 方法1:修改开发环境的引入逻辑
    开发阶段把board.rb中的require_relative "card"替换为load "card.rb",load方法不会检查已加载列表,每次调用都会强制重新读取文件内容,开发完成上线前改回require_relative即可。
  • 方法2:手动清除已加载记录(无需修改业务代码)
    修改完card.rb后,先在PRY中执行以下命令删除card.rb的已加载记录,再重新加载board.rb即可生效:
    $LOADED_FEATURES.delete(File.expand_path("card.rb"))
    load "board.rb"
    
    如果需要批量重载当前目录下所有修改过的项目文件,可以执行批量清理命令:
    $LOADED_FEATURES.reject! { |path| path.start_with?(Dir.pwd) }
    load "board.rb"
    
  • 方法3:使用PRY重载插件
    安装pry-reload插件后,可直接执行reload!命令自动识别并重载所有修改过的项目文件,无需手动操作:
    安装命令:gem install pry-reload
    启动PRY后执行require "pry-reload"即可使用,也可以把这段命令写入~/.pryrc配置文件,每次启动PRY自动生效。

内容的提问来源于stack exchange,提问作者Yandri

相关产品推荐
方舟 Agent Plan

超全模态模型 × Harness 升级,最新支持 Deepseek-V4.1-Flash、GLM-5.3 系列、Doubao-Seedream-5.0-pro、Kimi-K3 (部分), 限时 9.9 元起

最近更新时间:2026.10.15 08:45:01