2009-07-17 6 views

答えて

27

あなたは、プログラムがデバッガに達したときにIRBへのアクセスを取得します

require 'rubygems' 
require 'ruby-debug' 
x = 23 
puts "welcome" 
debugger 
puts "end" 

をIRBへのアクセスを取得するにはルビー・デバッグを使用することができます。

+0

これはバインディングコンテキストを考慮に入れますか?バインディングを別のものに設定することはできますか? –

+0

Duh。私はアホです。ありがとう! –

+2

Ruby 1.9では動作しない 'ruby-debug'宝石が必要です。 – Zr40

14

明らかに、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 
+2

優れた検索、ありがとう!これはまさに私がIRB.start_session(バインディング)を呼び出した場所のコンテキストでクラスとインスタンス変数にアクセスするのに必要なものです。 – csmosx

44

Pry(IRB代替)も、実際にはそれがまさにこのユースケースのためにゼロから設計されました:)

それはbinding.pryを置くのと同じくらい簡単です、あなたがこれを行うことができますセッションを開始する時点で:

require 'pry' 
x = 10 
binding.pry 

セッション内:

pry(main)> puts x 
=> 10 

ウェブサイトをチェックアウト:あなたのコード内の任意の時点でセッションに

  • ドロップ
  • ビュー方式のソースコード
  • ビュー方式のドキュメント:http://pry.github.com

    詮索はのあなたを聞かせて(RIを使用していないので、あらかじめ生成する必要はありません)

  • S
  • メソッドを編集する
  • 要旨統合
  • ビューとリプレイ歴史
  • オープンエディタを強調構文を使用してedit obj.my_method構文

トン以上の素晴らしいとオリジナルの特徴は

+3

うわー、その岩。 – Jeff

+1

ありがとう、これはトップで、私は自分のためにIRBを使って – Dorian

0

はちょうどこの行を追加します。ブレークポイントが必要な場所:

require 'ruby-debug';debugger

しかし、私が代わりに超便利ですIRBの使用のプライを示唆しては、代わりに次の行を挿入します。

require 'pry'; binding.pry

7

この機能は、Rubyの2.4から入手可能です。ちょうど使用することができますbinding.irb

たとえば、

上記のコードを実行すると、irbコンソールが表示され、ローカル変数の値やスコープ内にあるその他の値を検査できます。

出典:http://blog.redpanthers.co/new-binding-irb-introduced-ruby-2-4/

Rubyがコミット:https://github.com/ruby/ruby/commit/493e48897421d176a8faf0f0820323d79ecdf94a

0

を私はかなり遅くゲームへの思いが、あなたはすでにIRB/PRY内からスクリプトを読み込む場合、簡単なraiseもあなたをポップに努めていますirb/pryプロンプトに戻ります。私はレールコンソール内のスクリプトからスクリプトを書くときにこれを非常によく使う。

関連する問題