5

任何人都可以告诉我使用什么命令来清除rails控制台中的所有变量吗?

例如

1.9.1 :001 > permissions = {:show => true}
 => {:show=>true} 
1.9.1 :001 > foo = "bar"
 => "bar"

我需要一个命令,可以在不重新启动 rails 控制台本身的情况下将所有变量重置为 nil。

任何建议将不胜感激。

4

2 回答 2

12
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
于 2012-11-24T11:44:17.357 回答
-3

做一件事,输入

irb 'another'

然后按 ctrl+l

现在检查变量的值。有用。

于 2012-11-24T11:53:01.893 回答