我可以调试动态添加的Ruby方法吗?

时间:2013-04-30 23:12:49

标签: ruby debugging metaprogramming rubymine

我想在数据库中存储简短的代码片段(遵循标准签名)并在运行时“注入”它们。一种方法是使用eval(my_code)。有没有办法使用断点等调试注入的代码? (我正在使用Rubymine)

我知道我可以登录到控制台等,但如果可能的话,我更喜欢IDE风格的调试。

1 个答案:

答案 0 :(得分:0)

嗯。让我们分析一下你的问题。首先,它似乎与数据库没有任何关系:您只需在源代码表单中存储代码块。它可以是文件或数据库。其次,您不希望IDE样式的“调试”,而是TDD-style。 (但现在不要专注于那个问题。)

您需要什么,是关于您的代码的断言。也就是说,您需要根据输入示例描述代码应生成的输出。然后,您需要运行该代码并查看其功能是否符合预期。此外,如果您不确定代码段的来源,run them in a sandbox (with $SAFE = 4)。如果你的代码没有达到预期的目的,那就引发很好的错误(TypeError,甚至更好,你的自定义异常),然后你就可以了。拯救那些例外,例如。使用一些默认代码片段......

...但也许我实际上并没有回答你提出的同样问题。如果是这种情况,那么让我分享一个指向此sourcify gem的链接,让您知道源代码,以便您可以通过说明例如插入断点。在代码中间需要'rdebug',或者甚至可以将代码转换为sexps。这就是我所知道的。