【问题标题】:Ruby: Save class/method definitions at runtimeRuby:在运行时保存类/方法定义
【发布时间】:2011-10-09 19:58:10
【问题描述】:

假设我在 IRB 工作,试验并逐步构建一些新的类和方法。或者,假设我编写的常规脚本(在 IRB 之外)逐步构建了一些类/方法。

现在我想保存我构建的内容。

有没有一种简单的方法可以自动内省运行时的类/方法并将它们转换为普通的类定义和方法定义?

【问题讨论】:

  • 我不知道有什么方法可以做到这一点。但老实说,这听起来很有趣,应该是可能的。不过,我不会用它来开发 IRB。我真的很想创建一些“智能”和“学习”代码。

标签: ruby introspection


【解决方案1】:

试试pry,你永远不会回到 IRB。您可以将 pry 用作调试器,它运行良好并且具有一些很棒的功能,例如:

1.9.2 (main):0 > show-method Array#group_by

From: enum.c in Ruby Core (C Method):
Number of lines: 13

static VALUE
enum_group_by(VALUE obj)
{
    VALUE hash;

    RETURN_ENUMERATOR(obj, 0, 0);

    hash = rb_hash_new();
    rb_block_call(obj, id_each, 0, 0, group_by_i, hash);
    OBJ_INFECT(hash, obj);

    return hash;
}

也有edit-method 命令。想象一下你可以用它做什么。

如果您想要一个严格与 IRB 相关的解决方案,我唯一想到的就是 sketches

【讨论】:

    【解决方案2】:

    如果您使用的是 ruby​​ 1.8,则可以使用 ruby2ruby

    否则,sourcify 可能会有所帮助。不过,它似乎只适用于方法。

    【讨论】:

      【解决方案3】:

      如果你使用Pry而不是IRB你可以这样做,事实上Pry是为此设计的。

      查看edit-methodedit Pry 命令,此处:https://github.com/pry/pry/wiki/Editor-integration

      还可以观看此处的截屏视频:http://vimeo.com/26391171

      【讨论】:

        猜你喜欢
        • 1970-01-01
        • 2021-11-16
        • 1970-01-01
        • 1970-01-01
        • 2018-06-28
        • 2016-01-08
        • 2018-05-16
        • 1970-01-01
        • 2014-05-12
        相关资源
        最近更新 更多