the*_*tto 14 ruby-on-rails pry ruby-on-rails-5
当我使用时,Puma超出了我的要求binding.pry.在我的控制器中
def new
require 'pry'
binding.pry
end
Run Code Online (Sandbox Code Playgroud)
然后我发出命令,命中控制器并进入pry会话.60秒后彪马?超时我的请求,重启一个工人,然后通过调试会话爆炸.
[1] pry(#<Agent::ClientsController>)> [3522] ! Terminating timed out worker: 3566
[3522] - Worker 0 (pid: 4171) booted, phase: 0
Run Code Online (Sandbox Code Playgroud)
如果重要的话,我用吊带生成了这个应用程序.如何在rails 5中扩展我的调试会话?
Low*_*der 19
这个怎么样?
# config/puma.rb
...
environment ENV['RACK_ENV'] || 'development'
...
if ENV['RACK_ENV'] == 'development'
worker_timeout 3600
end
Run Code Online (Sandbox Code Playgroud)
编辑(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
Run Code Online (Sandbox Code Playgroud)
您可以创建配置文件并在其中设置超时值(对于所有请求,而不仅仅是调试中涉及的请求).我建议制作一个特定于dev的,并在本地运行服务器时引用它(而不是为生产设置一些大的超时值).
在rails应用程序中,创建一个类似于文件的文件/config/dev_puma_config.rb:
#!/usr/bin/env puma
worker_timeout 3600
Run Code Online (Sandbox Code Playgroud)
然后,当您启动服务器时,使用以下内容引用该文件-C:
bundle exec puma -t 1:1 -w 1 -p 3000 -e development -C config/dev_puma_config.rb
作为关于该worker_timeout设置的一些背景信息,这是puma配置所说的内容:
验证所有工作程序是否在给定超时内检入主进程.如果不是,则将重新启动工作进程.这不是请求超时,而是防止挂起或死机进程.设置此值不会防止请求缓慢.默认值为60秒.