2013-01-04 12 views
27

のためのREPLを提供していない、私の問題は、私は、私はちょうど得るbinding.pry追加したときに、私はREPLにアクセスすることはできませんですガードレールは、私は私のレールのサーバを実行するために、ガード・レールを使用していbinding.pry

From: /home/martinr/code/app/controllers/tools_controller.rb @ line 2 ToolsController#index: 

    2: def index 
=> 3: binding.pry 
    4: @end_date = Date.today.to_s 
    5: @start_date = Date.today.months_ago(3).to_s 
    7: end 

[1] pry(#<ToolsController>)> 

REPLがありません。どのようにガードレールを使用しますか?

マイGemfileファイルこの

group :development, :test do 
    gem 'pry-rails' # for better console debugging 
    gem 'pry-debugger' 
    gem 'rb-inotify' 
    gem 'sqlite3' 
end 

マイGuardfileのようになります。

guard 'rails', :debugger => true do 
    watch('Gemfile.lock') 
    watch(%r{^(config|lib)/.*}) 
end 
+0

どういう意味ですか?あなたは何も何も入力することはできませんか? – kyrylo

+1

私はそれがREPLを読み込んで、プログラムの実行を続けるように思えます。それはあなたにREPLと対話するチャンスを与えません。 – Martinffx

+0

これに関するニュースはありますか?これを行うことは本当にうれしいでしょう。 –

答えて

3

私は同じようなことをしようとしている、ともそれを動作させることはできません。問題は、stdinからの読み込みがブロックされないように見えるので、Pryはブロックしません。 STDINからの読み取りはすぐに戻ります。

rspec -X console.rb 

ファイルは次のとおりです。

require 'spec_helper' 

describe 'console' do 
    it 'opens!' do 
    Pry.config.input = STDIN 
    Pry.config.output = STDOUT 
    puts STDIN.closed? # returns false 
    binding.pry # returns right away, does not block 
    gets # returns right way, does not block 
    end 
end 
4

私はGuardと先割れスプーンと私のレールの環境を設定していると私は結合こじりがガードと妙に作用することを見つけます。 binding.pryをコードに挿入してからガードがテストを再開すると、インタラクティブなデバッグはありません。しかし、私が終了してもう一度ガードを開始すると、動作していて、インタラクティブモードに正しく切り替わります。

しかし、私がbinding.pry行を削除すると、ガードは想定されているとおりにテストを再実行しますが、バインディング行は以前は存在しなくても破棄されます。

pryバインディングを挿入または削除するたびにguardを再起動する必要があるようです。

刺激的ですが、あなたのテストでうまくいきません。

関連する問題