我當時在滑軌控制檯中,意外地輸入了j
這個字母,然後回車並返回nil
。Rails中的這個神祕'j'是什麼?
rails c
Loading development environment (Rails 3.2.13)
[6] pry(main)> j
=> nil
[1] pry(main)> j.nil?
=> true
谷歌沒有讓我到任何地方。有人知道這個神祕的j
是什麼,它的目的是什麼?只是好奇。
我當時在滑軌控制檯中,意外地輸入了j
這個字母,然後回車並返回nil
。Rails中的這個神祕'j'是什麼?
rails c
Loading development environment (Rails 3.2.13)
[6] pry(main)> j
=> nil
[1] pry(main)> j.nil?
=> true
谷歌沒有讓我到任何地方。有人知道這個神祕的j
是什麼,它的目的是什麼?只是好奇。
你總是可以找到使用source_location
給定的方法來源:
method(:j).source_location
甚至與撬確切的定義(或method_source
寶石):
method(:j).source
結果:
def j(*objs)
objs.each do |obj|
puts JSON::generate(obj, :allow_nan => true, :max_nesting => false)
end
nil
end
j
是一種來自JSON庫的方法(它在添加此方法Kernel
模塊,因此它在IRB訪問),它負責顯示給定的參數爲JSON對象:
j(hello: :world)
#=> {"hello":"world"}
nil
Rails的默認情況下需要json
庫,所以它是可用,立竿見影。在純IRB中,您需要require 'json'
才能訪問它。
它接受任意數量的參數,所以j
返回零而不打印任何東西。相當於p
的方法,只是用json代替inspect
的結果。
這是有幫助的。很好的答案。另外,我不知道我可以這樣做:'method(:j).source'。謝謝你教我新東西! –
@RyanRebo - 嗯,通常你不能,你需要運行pry會話或者需要'method_source' gem才能做到這一點。然而'source_location'即使在最純粹的irb中也是可用的。 – BroiSatse
@BroiState Ahhh gotchya。謝謝,很高興知道! –
我知道'j'是'escape_javascript'的縮寫,它允許你在'.js.erb'文件中插入部分。如果你沒有參數調用它,它可能會返回零。 –
還有'p'和'y'。 – roob
@roob - 是的,'y'方法來自'YAML'模塊,可以在'require'yaml''後面以純ruby方式訪問,沒有任何寶石。 – BroiSatse