Rails中这个神秘的'j'是什么?

时间:2015-12-16 00:44:05

标签: ruby-on-rails

我在rails控制台中,意外输入了字母j并点击了输入并返回nil

rails c
Loading development environment (Rails 3.2.13)
[6] pry(main)> j
=> nil
[1] pry(main)> j.nil?
=> true
谷歌没让我到任何地方。有人知道这个神秘的j是什么,它的目的是什么?好奇。

1 个答案:

答案 0 :(得分:12)

您始终可以使用source_location找到给定方法的来源:

method(:j).source_location

甚至它与pry(或method_source gem)的确切定义:

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返回nil而不打印任何内容。它等同于p方法,只使用json而不是inspect结果。