2015-12-16 6 views
9

私はレールのコンソールにいて、誤って手紙jを入力してEnterを押して、nilを返しました。Railsでこの謎「j」は何ですか?

rails c 
Loading development environment (Rails 3.2.13) 
[6] pry(main)> j 
=> nil 
[1] pry(main)> j.nil? 
=> true 

Googleはどこでも私を取得できませんでした。誰もがこの不思議なことを知っているjとその目的は何ですか?ちょっと興味があるんだけど。あなたはいつもsource_locationを使用して、指定されたメソッドのソースを見つけることができ

+1

「j」は、 '.js.erb'ファイルに部分文字を挿入できるメソッドである' escape_javascript'の略です。 paramsなしでそれを呼び出すと、nilを返すことがあります。 –

+0

'p'と' y'もあります。 – roob

+2

@roob - 'y'メソッドは' YAML'モジュールから来て、 'require 'yaml''の後に純粋なルビーでアクセスできます。 – BroiSatse

答えて

12

method(:j).source_location 

あるいはてこ(または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ライブラリからのメソッドです(それはIRBでアクセスできるように)Kernelモジュールにこのメソッドを追加すること、そしてそれがJSONオブジェクトとして指定された引数を表示するための責任があるさ:それはすぐに利用可能であるように、デフォルトで

j(hello: :world) 
    #=> {"hello":"world"} 
    nil 

Railsはjsonライブラリが必要です。純粋なIRBでは、アクセスするにはrequire 'json'が必要です。

これは何も引数を受け付けないので、jは何も印刷せずにnilを返します。 pメソッドに相当し、inspectの代わりにjsonを使用するだけです。

+0

これは役に立ちます。素晴らしい答え。また、私はこれを行うことができるのか分からなかった: 'method(:j).source'。新しいことを教えてくれてありがとう! –

+1

@RyanRebo - まあ、通常はできません.Pryセッションを実行したり、これを行うには 'method_source'という宝石が必要です。 'source_location'は最も純粋なirbでも利用可能です。 – BroiSatse

+0

@BroiState Ahhh gotchya。ありがとう、知っておいてよ! –

関連する問題