実行中の Ruby スクリプトから IRB プロンプトにドロップできますか?
スクリプトを実行したいのですが、rdebug を実行してブレークポイントを設定するだけではなく、プログラムのある時点でプログラムの現在の状態を示す IRB プロンプトを表示させます。
Pry(IRBの代替)でもこれを行うことができます。実際、このユースケースのためにゼロから設計されています:)
binding.pry
セッションを開始したいポイントに置くのと同じくらい簡単です:
require 'pry'
x = 10
binding.pry
そしてセッション内:
pry(main)> puts x
=> 10
ウェブサイトをチェックしてください:http://pry.github.com
詮索しましょう:
edit obj.my_method
エディターを開いて、構文を使用してメソッドを編集します1トン以上の優れたオリジナルの機能
ruby-debug を使用して irb にアクセスできます
require 'rubygems'
require 'ruby-debug'
x = 23
puts "welcome"
debugger
puts "end"
プログラムがデバッガーに到達すると、irb にアクセスできるようになります。
明らかに、irb にドロップするにはコードのチャンクが必要です。
ここにリンクがあります(うまくいくようです)。
http://jameskilton.com/2009/04/02/embedding-irb-into-your-ruby-application
require 'irb'
module IRB
def self.start_session(binding) # call this method to drop into irb
unless @__initialized
args = ARGV
ARGV.replace(ARGV.dup)
IRB.setup(nil)
ARGV.replace(args)
@__initialized = true
end
workspace = WorkSpace.new(binding)
irb = Irb.new(workspace)
@CONF[:IRB_RC].call(irb.context) if @CONF[:IRB_RC]
@CONF[:MAIN_CONTEXT] = irb.context
catch(:IRB_EXIT) do
irb.eval_input
end
end
end
この機能は Ruby 2.4 から利用できます。あなたはただ使うことができますbinding.irb
例えば
require 'irb'
a = 10
binding.irb
puts a
上記のコードを実行すると、irb コンソールが表示され、ローカル変数の値やスコープ内のその他すべてを調べることができます。
ソース: http://blog.redpanthers.co/new-binding-irb-introduced-ruby-2-4/
Ruby コミット: https://github.com/ruby/ruby/commit/493e48897421d176a8faf0f0820323d79ecdf94a