Puma Rails 5 binding.pry доступен только за 60 секунд до истечения времени ожидания

Puma отключает мой запрос, когда я использую binding.pry. В моем контроллере

def new
  require 'pry'
  binding.pry
end

Затем я делаю запрос, который попадает в контроллер, и вхожу в сеанс pry. Через 60 секунд Пума? истечет время ожидания моего запроса, перезапустит рабочий процесс и впоследствии сломается из-за сеанса отладки.

[1] pry(#<Agent::ClientsController>)> [3522] ! Terminating timed out worker: 3566
[3522] - Worker 0 (pid: 4171) booted, phase: 0

Я создал это приложение с подтяжками, если это имеет значение. Как продлить сеанс отладки в rails 5?


person thedanotto    schedule 06.12.2016    source источник


Ответы (2)


Как насчет этого?

# config/puma.rb    
...

environment ENV['RACK_ENV'] || 'development'

...

if ENV['RACK_ENV'] == 'development'
  worker_timeout 3600
end

Изменить (Rails 5.1.5):

Поскольку ENV['RACK_ENV'] был пуст, я сделал следующее:

# config/puma.rb 

...

if ENV.fetch('RAILS_ENV') == 'development'
   puts "LOGGER: development => worker_timeout 3600"
   worker_timeout 3600
end
person Pascal    schedule 02.04.2017

Вы можете создать файл конфигурации и установить в нем значение тайм-аута (для всех запросов, а не только для тех, которые участвуют в отладке). Я бы порекомендовал сделать его для разработчиков и ссылаться на него при локальном запуске сервера (и не устанавливать какое-то большое значение тайм-аута для производства).

В вашем приложении rails создайте файл типа /config/dev_puma_config.rb и вставьте в него:

#!/usr/bin/env puma

worker_timeout 3600

Затем, когда вы запускаете свой сервер, ссылайтесь на этот файл с помощью -C следующим образом:

bundle exec puma -t 1:1 -w 1 -p 3000 -e development -C config/dev_puma_config.rb

В качестве справочной информации об этой настройке worker_timeout, вот что говорит об этом конфигурация puma:

Проверяет, все ли рабочие зарегистрировались в главном процессе в течение заданного времени ожидания. В противном случае рабочий процесс будет перезапущен. Это не тайм-аут запроса, это защита от зависшего или мертвого процесса. Установка этого значения не защитит от медленных запросов. Значение по умолчанию — 60 секунд.

person user605331    schedule 06.12.2016