我正在使用guard-rails运行我的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
答案 0 :(得分:5)
我已经使用Guard和Spork建立了我的rails环境,我发现绑定撬与守卫的行为很奇怪。如果我将binding.pry插入代码然后后卫重新启动我的测试,则没有交互式调试。但是如果我退出并再次开始警惕,它就会正常工作并正确地进入交互模式。
但是......如果我然后移除binding.pry行,后卫将按照预期重新运行测试,但会在绑定线所在的地方中断,即使它不再存在。< / p>
似乎每次插入或删除pry绑定时都必须重新启动。
刺激但仍然比在测试中无法使用pry更好。
答案 1 :(得分: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