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

时间:2012-11-24 11:40:29

标签: ruby-on-rails rails-console

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

e.g。

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

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

非常感谢任何建议。

2 个答案:

答案 0 :(得分:7)

local_variables.each { |e| eval("#{e} = nil") }

local_variables返回当前范围中所有局部变量的符号列表

a, b = 5, 10
local_variables # => [:b, :a]

使用each,您可以迭代此列表并使用eval将其值分配给nil

您也可以使用instance_variablesglobal_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

答案 1 :(得分:-2)

做一件事,输入

irb 'another'

然后按ctrl + l

现在检查变量的值。 它有效。