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

Ruby Pry工具中能否编辑在REPL中定义的类?

问题解决:在Pry中编辑REPL内定义的完整类

直接执行edit ClassName打开你在REPL中定义的完整类不可行,原因是Pry的edit命令默认依赖物理文件关联,而REPL中定义的类仅存于内存中,没有对应的文件路径,因此会抛出Cannot find a file for ClassName!的错误。

以下是针对你的需求的替代方案:

1. 逐个编辑类中的方法

针对类内不同类型的方法,可以用精准的edit命令定位编辑:

  • 实例方法:执行 edit ClassName#method_name
  • 类方法:执行 edit ClassName.class_method_name,或先执行cd ClassName再执行edit self.class_method_name
  • 私有实例方法:直接执行 edit ClassName#private_method_name(Pry可识别并打开私有方法定义)

2. 临时编辑器重写整个类

如果需要一次性修改类的完整结构,可使用edit -c命令打开临时编辑器:

  1. 在Pry中输入 edit -c
  2. 在弹出的编辑器窗口中编写完整的类定义(比如修改后的ClassName代码)
  3. 保存并退出编辑器,Pry会自动执行这段代码,覆盖原有的类定义

示例代码:

class ClassName
  def method_name
    puts 'updated method output'
  end

  def self.class_method_name
    puts 'updated class method output'
  end

  private

  def private_method_name
    puts 'updated private method output'
  end
end

3. 文件化管理类定义(推荐长期使用)

如果需要频繁修改类,建议将类代码保存到物理文件中:

  1. 把类定义写入文件(比如my_class.rb)
  2. 在Pry中执行 load 'my_class.rb' 加载类
  3. 执行 edit my_class.rb 打开整个文件编辑
  4. 保存文件后,再次执行 load 'my_class.rb' 即可更新REPL中的类定义

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

相关产品推荐
方舟 Agent Plan

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

最近更新时间:2026.06.30 05:40:02