2011-07-05 101 views
1

我怎样才能做到这一点?:红宝石获取顶级命名空间中的Ruby

有时在解释语言诊断,它的速度更快,我做出迅速改变我的代码,折腾一个对象入顶级别的命名空间,然后在交互式环境中混淆它。

在Python中,我加入这个我的代码:

import __main__ 
__main__.[field] = [my problematic object] 

...然后用命令python -i [myfilename]运行该文件。任何想法我如何才能访问Ruby中的顶级命名空间?

回答

3

为此,我建议使用Pry

运行gem install pry安装pry。然后将以下代码添加到要开始交互式会话的位置。

require 'pry' 
binding.pry 

一个交互式会话的例子。

$ cat debug.rb 
a = 7 
b = 6 
product = a * b 
require 'pry' 
binding.pry 
puts "The answer is: #{product}" 

$ ruby debug.rb 

From: debug.rb @ line 5 in Object#N/A: 

    1: a = 7 
    2: b = 6 
    3: product = a * b 
    4: require 'pry' 
=> 5: binding.pry 
    6: puts "The answer is: #{product}" 
pry(main)> product 
=> 42 
pry(main)> product = -1 * a * b 
=> -42 
pry(main)> exit 
The answer is: -42 
+0

那么pry是一个调试宝石? (目前没有时间去尝试。)我很抱歉如此不知情,但我不熟悉Ruby中的'$'表示法。这是你可以轻易解释的吗? – JellicleCat

+0

Pry只是IRB的一种替代方案,具有更多功能。你在说哪个'$'? '$ cat debug.rb'?这是壳。 – Dogbert