任何机构都可以告诉我用什么命令清除滑轨控制台中的所有变量?清除滑轨控制台中的所有变量
例如
1.9.1 :001 > permissions = {:show => true}
=> {:show=>true}
1.9.1 :001 > foo = "bar"
=> "bar"
我需要一个命令,可以让所有变量重置为零,无需重新启动rails控制台本身。
任何意见将非常感激。
任何机构都可以告诉我用什么命令清除滑轨控制台中的所有变量?清除滑轨控制台中的所有变量
例如
1.9.1 :001 > permissions = {:show => true}
=> {:show=>true}
1.9.1 :001 > foo = "bar"
=> "bar"
我需要一个命令,可以让所有变量重置为零,无需重新启动rails控制台本身。
任何意见将非常感激。
local_variables.each { |e| eval("#{e} = nil") }
local_variables
返回当前范围
a, b = 5, 10
local_variables # => [:b, :a]
使用each
您可以通过此列表迭代的使用eval
其值分配给nil
所有局部变量的符号列表。
你也可以用instance_variables
和global_variables
做同样的事情。例如
(local_variables + instance_variables).each { |e| eval("#{e} = nil") }
顺便说一句,如果你要使用它不止一次,这可能是有帮助的~/.irbrc
文件来定义这样的方法,使之成为所有IRB会话访问(没在rails控制台中测试它)。
class Binding
def clear
eval %q{ local_variables.each { |e| eval("#{e} = nil") } }
end
end
然后,irb
会话内
a = 5
binding.clear
a # => nil
如果他做了任何实例变量,这不是一个命令伙计! – prashantsahni
@prashantsahni,我更新了我的答案。 –
我一直在寻找如何显示我在控制台中声明的所有变量,这对我有帮助。 – 2016-05-29 11:55:48
做一两件事,类型
irb 'another'
,然后按Ctrl + L键
现在检查变量的值。 它的工作原理。
它不会将变量重置为'nil',它会将irb的范围更改为字符串对象'another'。例如,如果您在'irb'another''后键入'self',则会得到另一个\ n“'。 –
是的,朋友 - 它改变了范围,并创建了一个新的会话;如果你从早期会话中检查局部变量,它会报告'未定义的变量',实例变量的值将为零。我不认为有一个命令可以一次性重置整个会话。像重新加载!在轨道控制台中。 – prashantsahni
好吧,或许值得一提的是,所有rails控制器的助手,比如'app','controller','reload !'也会消失。 –
为什么不只是'重新加载!'? – cih
@cih重新加载!不会重置变量在我的情况下,虽然 –
@Sarun,检查我的sol是否工作,它不是100%准确的答案。但是它是一种解决方法。 – prashantsahni