При использовании Capybara/Poltergeist, как получить доступ к потоку приложения с помощью pry

Я запускаю тесты в приложении rails и emberjs, и в моих тестах установлено :js => true. Я могу добавить binding.pry в спецификацию, и он отлично откроет REPL, но если я добавлю binding.pry в приложение, REPL появится в консоли, но спецификация продолжится. Я считаю, что это происходит потому, что с полтергейстом в качестве драйвера капибара запускает спецификацию в одном потоке, а приложение — в другом. Есть ли способ настроить все так, чтобы я мог использовать binding.pry в коде приложения, чтобы открыть REPL и приостановить как приложение, так и спецификацию?

Вот пример оператора binding.pry, который отлично работает, и тот, который остался позади:

Работает:

employee_signs_in_spec.rb

require 'spec_helper'
feature 'Visitor signs in', :js => true do
  scenario 'Success' do
    visit '/sign_in'
    sign_in_as(FactoryGirl.create(:employee, confirmed_at: Time.now))
    binding.pry
    page.should have_content('Example Content')
  end
end

Остается позади:

session_controller.rb

class SessionsController < Devise::SessionsController
  include Devise::Controllers::Helpers

  respond_to :json

  def create
    binding.pry
    # code for create action
  end
end

person John    schedule 08.11.2013    source источник
comment
Интересно... мы успешно используем binding.pry в спецификациях, управляемых селеном и полтергейстом, без проблем. Можете ли вы предоставить минимальный образец кода, который может воспроизвести проблему?   -  person Chris Cashwell    schedule 08.11.2013
comment
@ChrisCashwell, добавил пример кода выше, но не то, с чем вы могли бы легко воспроизвести его; на выходных, когда у меня будет время, я создам базовое приложение ruby/ember и выложу его на github для иллюстрации.   -  person John    schedule 08.11.2013
comment
@ChrisCashwell Поместили ли вы binding.pry в код приложения, а также в файлы спецификаций?   -  person John    schedule 08.11.2013
comment
Мы можем поместить привязку либо в спецификацию, либо в реализацию. Никаких проблем в любом случае.   -  person Chris Cashwell    schedule 08.11.2013


Ответы (1)


Использование pry в разветвленном процессе не работает.

Вам нужно будет использовать PryRemote, чтобы подключиться к другому удаленному процессу.

person phoet    schedule 08.11.2013