任何機構都可以告訴我用什麼命令清除滑軌控制檯中的所有變量?清除滑軌控制檯中的所有變量
例如
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