Ruby:在运行时保存类/方法定义

时间:2011-10-09 19:58:11

标签: ruby introspection

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

现在我想保存我已建成的东西。

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

3 个答案:

答案 0 :(得分: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

答案 1 :(得分:1)

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

否则,也许sourcify会有所帮助。似乎它只适用于方法。

答案 2 :(得分:0)

如果您使用Pry代替IRB,您可以这样做,事实上Pry在某种程度上是为此设计的。

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

另请观看此处的截屏视频:http://vimeo.com/26391171