28

Rails サーバーを実行するためにガードレールを使用しています。問題は、binding.pry を追加したときに REPL にアクセスできないことです。

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

私のガードファイル:

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

2 に答える 2

5

Guard と Spork を使用して Rails 環境をセットアップしましたが、guard を使用すると binding-pry が奇妙に動作することがわかりました。コードに binding.pry を挿入した後、ガードがテストを再起動すると、インタラクティブなデバッグは行われません。しかし、終了してガードアップを再開すると、機能しており、インタラクティブ モードに正しく移行します。

ただし...その後、binding.pry行を削除すると、ガードは想定どおりにテストを再実行しますが、バインディング行があった場所で中断します。

てこバインディングを挿入または削除するたびに、ガードを再起動する必要があるようです。

いらいらしますが、テストで詮索することができないよりはましです。

于 2013-07-18T09:44:25.017 に答える
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
于 2013-03-26T16:15:05.910 に答える