©John Mair(Banisterfiend)2018
(作成者)
©Kyrylo Silin(Kyrylosilin)2018
(メンダー)
卒業生:
リンク:
PRYは、強力な内省機能を備えたランタイム開発者コンソールとIRBの代替品です。 Pryは、IRBの代替品以上のものになることを目指しています。これは、Ruby言語にRepl駆動型のプログラミングをもたらす試みです。
edit Class#method )cd 、 ls 、および友人) gem 'pry' , '~> 0.15.0'gem install pryPRYはかなり柔軟であり、重要なユーザーのカスタマイズを可能にします。 readlineメソッドを備えたオブジェクトから読み取り、 putsメソッドを持つオブジェクトに書き込むことは些細なことです。 PRYの他の多くの側面も構成可能であるため、カスタムシェルを実装するのに適した選択肢となっています。
PRYには実行可能なものが付属しているため、コマンドラインで呼び出すことができます。 pryを入力するだけです。 $XDG_CONFIG_HOME/pry/またはユーザーのホームディレクトリのpryrcファイルが存在する場合はロードされます。詳細については、 pry --helpコマンドラインでヘルプ。
PRYセッションのほぼすべての機能がコマンドとして実装されています。コマンドはメソッドではなく、その間に空白がないため、行の先頭から開始する必要があります。コマンドは柔軟な構文をサポートし、シェルコマンドと同じ方法で「オプション」を許可します。たとえば、次のPRYコマンドには、「PA」で始まるすべてのプライベートインスタンスメソッド(範囲)のリストが表示されます。
pry ( YARD :: Parser :: SourceParser ) : 5 > ls - Mp -- grep ^ pa
YARD :: Parser :: SourceParser #methods: parse parser_class parser_type parser_type= parser_type_for_filenamePRYを使用すると、 cdコマンドを使用して、異なるスコープ(オブジェクト)に出入りすることができます。これにより、プログラムまたはライブラリのランタイムビューを探索できます。特定の範囲内で使用可能な変数とメソッドを表示するには、汎用性の高いLSコマンドを使用します。
ここでは、トップレベルでこじ開き、次にクラスをこじ開けてから、そのクラス内のインスタンス変数でこじ開けます。
pry ( main ) > class Hello
pry ( main ) * @x = 20
pry ( main ) * end
=> 20
pry ( main ) > cd Hello
pry ( Hello ) : 1 > ls - i
instance variables : @x
pry ( Hello ) : 1 > cd @x
pry ( 20 ) : 2 > self + 10
=> 30
pry ( 20 ) : 2 > cd ..
pry ( Hello ) : 1 > cd ..
pry ( main ) > cd ..後の数字: PRYプロンプトでは、ネスティングレベルを示します。ネストに関する詳細情報を表示するには、 nestingコマンドを使用してください。例えば
pry ( "friend" ) : 3 > nesting
Nesting status :
0 . main ( Pry top level )
1 . Hello
2 . 100
3 . "friend"
=> nilその後、 jump-toコマンドを使用して、以前のネストレベルのいずれかに戻ることができます。
pry ( "friend" ) : 3 > jump - to 1
= > 100
pry ( Hello ) : 1 >PRYは、実行中のプログラムの途中で呼び出すことができます。それは呼び出された時点でPryセッションを開き、その時点ですべてのプログラム状態を利用可能にします。 my_object.pry構文を使用してbinding.pryのオブジェクトに呼び出すことができます。 PRYセッションは、オブジェクトの範囲内(またはバインディング)内で開始されます。セッションが終了すると、プログラムはあなたが行った変更を続けます。
この機能は、デバッグ、開発者コンソールの実装、ホットパッチの適用などに使用できます。
コード:
# test.rb
require 'pry'
class A
def hello ( ) puts "hello world!" end
end
a = A . new
# start a REPL session
binding . pry
# program resumes here (after pry session)
puts "program resumes here."PRYセッション:
pry ( main ) > a . hello
hello world!
=> nil
pry ( main ) > def a . goodbye
pry ( main ) * puts "goodbye cruel world!"
pry ( main ) * end
=> :goodbye
pry ( main ) > a . goodbye
goodbye cruel world!
=> nil
pry ( main ) > exit
program resumes here .「。」で始まる入力の行。コマンドシェルに転送されます。これにより、ファイルシステムをナビゲートし、エディターをスポーンし、PRY内から直接GitとRakeを実行できます。
さらに、 shell-modeコマンドを使用して、現在の作業ディレクトリをPRYプロンプトに組み込み、ファイル名の完了(この段階で制限されています)を作成できます。また、通常の#{}文字列補数構文を使用して、Rubyコードをシェルに直接挿入することもできます。
以下のコードではshell-modeに切り替えてpryrcファイルを編集します。その後、その内容物を猫にして、ファイルをリロードします。
pry ( main ) > shell - mode
pry main : /home/john / ruby / projects / pry $ . cd ~
pry main : /home/john $ . emacsclient . pryrc
pry main : /home/john $ . cat . pryrc
def hello_world
puts "hello world!"
end
pry main : /home/john $ load ".pryrc"
=> true
pry main : /home/john $ hello_world
hello world!また、ルビーコードをシェルに挿入することもできます。以下の例では、現在のディレクトリのランダムファイルでシェルコマンドcatを使用し、そのファイルの行の数をwcを使用します。
pry main : /home/john $ . cat #{Dir['*.*'].sample} | wc -l
44show-sourceコマンドでメソッドソースコードを閲覧できます。ほぼすべてのルビーメソッド(およびいくつかのCメソッド、Pry-Doc GEM)は、ソースを表示することができます。ページよりも長いコードは、ポケットベル(以下など)を介して送信され、すべてのコードが適切に強調表示されます(Cコードも)。
show-sourceコマンドは、典型的なRI Class#method構文の2つの構文と、単に範囲内のメソッドの名前を受け入れます。オプションで、 -lオプションを渡すと、出力にライン番号を含めるようにshow-source 。
次の例では、 Pryクラスを入力し、「se」から始まるインスタンスメソッドをリストし、 set_last_resultメソッドのソースコードを表示します。
pry ( main ) > cd Pry
pry ( Pry ) : 1 > ls - M -- grep se
Pry #methods: raise_up raise_up! raise_up_common reset_eval_string select_prompt set_last_result
pry ( Pry ) : 1 > show - source set_last_result - l
From : /home/john / ruby / projects / pry / lib / pry / pry_instance . rb : 405 :
Owner : Pry
Visibility : public
Signature : set_last_result ( result , code = ?)
Number of lines : 6
405 : def set_last_result ( result , code = "" )
406 : @last_result_is_exception = false
407 : @output_ring << result
408 :
409 : self . last_result = result unless code =~ / A s * z /
410 : end pry-docプラグインを使用して(Ruby Coreから)Cメソッドを表示できることに注意してください。また、 show-source用の代替構文を披露します。
pry ( main ) > show - source Array #select
From : array . c in Ruby Core ( C Method ) :
Number of lines : 15
static VALUE
rb_ary_select ( VALUE ary )
{
VALUE result ;
long i ;
RETURN_ENUMERATOR ( ary , 0 , 0 ) ;
result = rb_ary_new2 ( RARRAY_LEN ( ary ) ) ;
for ( i = 0 ; i < RARRAY_LEN ( ary ) ; i ++ ) {
if ( RTEST ( rb_yield ( RARRAY_PTR ( ary ) [ i ] ) ) ) {
rb_ary_push ( result , rb_ary_elt ( ary , i ) ) ;
}
}
return result ;
}PRYの1つのユースケースは、オブジェクトの内外でcdを使用して表示して表示および呼び出しを行うことにより、実行時にプログラムを探索することです。探索の過程で、あなたが出くわした特定の方法のドキュメントを読むのに役立つかもしれません。 show-sourceコマンドは、通常のri構文の2つの構文と、現在範囲にあるすべての方法の名前を受け入れることをサポートしています。
PRYドキュメントシステムは、事前に生成されたrdocまたはriに依存せず、代わりにオンデマンドの方法の真上のコメントをつかみます。これにより、より迅速なドキュメンテーションの検索が行われ、PRYシステムがrdocによって取り上げられない方法のドキュメントを取得できます。 PRYはまた、RDOCフォーマットとヤード形式の両方を基本的に理解しており、文書を適切に強調表示しようとします。
それにもかかわらず、 ri機能は非常に優れており、PRYのシステムよりも利点があり、クラスと方法のドキュメントの検索を可能にします。したがって、Pryはriコマンドを介してriと良好な統合を整えています。コマンドの構文はコマンドラインにあるとまったく同じです。そのため、文字列を引用する必要はありません。
この例では、 Gemクラスを入力し、 try_activateメソッドのドキュメントを表示します。
pry ( main ) > cd Gem
pry ( Gem ) : 1 > show - source try_activate - d
From : /Users/john / rbenv / versions / 2.7 . 1 / lib / ruby / 2.7 . 0 / rubygems . rb : 194 :
Owner : #<Class:Gem>
Visibility : public
Signature : try_activate ( path )
Number of lines : 28
Try to activate a gem containing path . Returns true if
activation succeeded or wasn 't needed because it was already
activated. Returns false if it can' t find the path in a gem .
def self . try_activate ( path )
# finds the _latest_ version... regardless of loaded specs and their deps
# if another gem had a requirement that would mean we shouldn't
# activate the latest version, then either it would already be activated
# or if it was ambiguous (and thus unresolved) the code in our custom
# require will try to activate the more specific version.
spec = Gem :: Specification . find_by_path path
pry ( Gem ) : 1 >通常の方法でriを使用することもできます。
pry ( main ) ri Array #each
----------------------------------------------------------- Array #each
array . each { | item | block } -> array
------------------------------------------------------------------------
Calls _block_ once for each element in _self_ , passing that element
as a parameter .
a = [ "a" , "b" , "c" ]
a . each { | x | print x , " -- " }
produces :
a -- b -- c --edit Class#methodを使用するか、 edit my_method 、お気に入りのエディターで直接編集する方法を開くことができます。 Pryにはいくつかの異なる編集者に関する知識があり、メソッドが定義されている行でファイルを開こうとします。
Pry.editor Accessorに割り当てて、エディターを使用するように設定できます。 Pry.editor 、デフォルトで$EDITORにデフォルトで、またはnanoバックアップデフォルトとして使用する失敗になります。編集されたファイルは、エディターを終了した後に自動的にリロードされます - リロードは--no-reloadオプションを編集してeditことで抑制できます
以下の例では、デフォルトのエディターを「emacsclient」に設定し、編集するためにPry#replメソッドを開きます。
pry ( main ) > Pry . editor = "emacsclient"
pry ( main ) > edit Pry #repl他の多くのコマンドはPRYで利用できます。プロンプトで完全なリストタイプのhelp表示するには。各コマンドの簡単な説明には、使用するための基本的な指示が提供されています。いくつかのコマンドには、 command_name --help入力することでアクセスできるより広範なヘルプがあります。コマンドは通常、 --helpオプションが利用可能である場合、その説明で発言します。
Pryの-rフラグを使用して、アプリの環境でPRYコンソールを実行できます。
pry -r ./config/environmentまたは、Rails Console( bin/rails console )を起動してからpryと入力します。
Pry-Rails GemをGemfileに追加することで、RailsコンソールとしてPryを使用することも可能です。これにより、Railsコンソールのヘルパーをロードし、有用なRails固有のコマンドを追加することに加えて、デフォルトのコンソールをPryに置き換えます。
pry-rails現在維持されていないことに注意してください。
また、RailsとのPryの統合の詳細については、Wikiもご覧ください。
構文の強調表示は、PRYでデフォルトでオンになっています。色を変更したい場合は、Pry-Theme Gemをご覧ください。
toggle-colorコマンドを使用して、セッションでオンとオフを強調表示する構文を切り替えることができます。または、 pryrcファイルにラインPry.color = false配置することで、永久にオフにすることができます。
問題、質問、またはバグレポートがある場合は、次のことをお気軽にお問い合わせください。
プロジェクトはMITライセンスを使用します。詳細については、license.mdを参照してください。
Pryは主にJohn Mair(Banisterfiend)の作品であり、貢献者の完全なリストについては、貢献者グラフを参照してください。