清除rails控制台中的所有变量

Sar*_*wan 4 ruby-on-rails rails-console

任何机构都能告诉我用什么命令来清除rails控制台中的所有变量?

例如

1.9.1 :001 > permissions = {:show => true}
 => {:show=>true} 
1.9.1 :001 > foo = "bar"
 => "bar"
Run Code Online (Sandbox Code Playgroud)

我需要一个命令,可以将所有变量重置为nil而无需重启rails console本身.

任何建议将非常感谢.

hs-*_*hs- 8

local_variables.each { |e| eval("#{e} = nil") }
Run Code Online (Sandbox Code Playgroud)

local_variables 返回当前作用域中所有局部变量的符号列表

a, b = 5, 10
local_variables # => [:b, :a]
Run Code Online (Sandbox Code Playgroud)

使用each您可以遍历此列表,用于eval将其值分配给nil.

你也可以用instance_variables和 做同样的事情global_variables.例如

(local_variables + instance_variables).each { |e| eval("#{e} = nil") }
Run Code Online (Sandbox Code Playgroud)

顺便说一句,如果您要多次使用它,在~/.irbrc文件中定义这样的方法以使其可以访问所有irb会话(没有在rails控制台中测试)可能会有所帮助.

class Binding
  def clear
    eval %q{ local_variables.each { |e| eval("#{e} = nil") } }
  end
end
Run Code Online (Sandbox Code Playgroud)

然后,内部irb会话

a = 5
binding.clear
a # => nil
Run Code Online (Sandbox Code Playgroud)