2016-12-06 78 views
10

彪马超时我的请求时,我使用binding.pry。在我的控制器中彪马Rails的5 binding.pry仅适用于超时60秒,然后

def new 
    require 'pry' 
    binding.pry 
end 

然后我发出一个请求,命中控制器并进入pry会话。 Puma过了60秒后?超时我的请求,重新启动一个工作人员,随后通过调试会话爆炸。

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

我生成这个应用程序与吊带,如果重要的话。如何在rails 5中扩展我的调试会话?

回答

6

您可以创建一个配置文件,并在那里设置超时值(所有请求,而不仅仅是参与调试的)。我建议制作一个特定于开发者的版本,并且在本地运行服务器时(并且不要为生产设置一些大的超时值)。当您启动服务器时,参考与一个-C像这样的文件

#!/usr/bin/env puma 

worker_timeout 3600 

然后:

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

在Rails应用程序,创建一个文件一样/config/dev_puma_config.rb,并在其中放

作为位上worker_timeout设置背景资料,这里是美洲狮的配置说的话吧:

验证所有工人都在给主进程中 了给定超时检查。如果不是,则工作进程将被重新启动。这 不是请求超时,这是为了防止挂起或死 过程。设置此值不会防止缓慢的请求。 默认值是60秒。

12

这个怎么样?

# config/puma.rb  
... 

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

... 

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

编辑(滑轨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