Защитные решетки, не предоставляющие 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
Ответы
Ответ 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