Railsコンソールのすべての変数をクリアするために使用されるコマンドを誰か教えてもらえますか?
例えば
1.9.1 :001 > permissions = {:show => true}
=> {:show=>true}
1.9.1 :001 > foo = "bar"
=> "bar"
Railsコンソール自体を再起動せずに、すべての変数をnilにリセットできるコマンドが必要です。
アドバイスをいただければ幸いです。
Railsコンソールのすべての変数をクリアするために使用されるコマンドを誰か教えてもらえますか?
例えば
1.9.1 :001 > permissions = {:show => true}
=> {:show=>true}
1.9.1 :001 > foo = "bar"
=> "bar"
Railsコンソール自体を再起動せずに、すべての変数をnilにリセットできるコマンドが必要です。
アドバイスをいただければ幸いです。
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
1 つのことを入力する
irb 'another'
次にctrl+lを押します
変数の値を確認してください。できます。