Подтвердить что ты не робот

Защитные решетки, не предоставляющие REPL для binding.pry

Я использую guard-rails для запуска моего сервера rails, моя проблема в том, что я не могу получить доступ к REPL, когда добавляю bind.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, как использовать pry с защитными рельсами?

Мой файл Gemfile выглядит следующим образом:

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

Мой файл Guard:

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

Ответ 1

Я установил среду рельсов с Guard и Spork, и я обнаружил, что bind-pry странно действует с защитой. Если я вставляю binding.pry в код, а затем защищает перезапускает мои тесты, там нет интерактивной отладки. Но если я выйду и снова начну защищаться, он будет работать и правильно входить в интерактивный режим.

Однако... если я удалю строку binding.pry, защита перезапустит тесты, как и предполагалось, но сломается там, где была обязательная строка, даже если ее больше нет.

Кажется, вы должны перезапускать защиту каждый раз, когда вы вставляете или удаляете привязку pry.

Раздражает, но все же лучше, чем не иметь доступа к pry в ваших тестах.

Ответ 2

Я пытаюсь подобным образом, а также не могу заставить его работать. Проблема в том, что чтение из 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